免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4485 | 回复: 0
打印 上一主题 下一主题

清理VCenter的数据库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-24 05:31 |只看该作者 |倒序浏览
概念

VMware\'s vCenter Server的数据库被用来保存关于VCenter活动的数据,在vCenter中,保存着大量关于资源、集群、DRS、快照、VMware ESX主机、虚机、警告、性能统计、任务和事件等数据表。

问题在于如果有很多VM、ESX主机的话,数据库会增长得非常快,事件、任务和统计数据是数据库增长的主要部分,删除这些过时的信息能够节省数据库空间,对系统性能、数据库性能也有提高作用。我们以Oracle为例,看看如何清除这些数据。

我们先看看相关的数据表。

VPX_TASK,任务(task)信息,这张表保存着所有的VCenter Server曾经有过的任务信息。

VPX_EVENT ,VPX_EVENT_ARG事件(Event)信息,这张表包含着所有事件信息,每个事件在VPX_EVENT表中有一条记录,每条记录,而这里面的记录又与VPX_EVENT_ARG表一一对应或者一对多对应,在数据库里他们用EVENT_ID列来关联(VPX_EVENT和VPX_EVENT_ARG都有EVENT_ID列)

VPX_HIST_STAT (VC 2.0.x)

VPX_HIST_STAT1 (VC 2.5)

VPX_HIST_STAT2 (VC 2.5)

VPX_HIST_STAT3 (VC 2.5)

VPX_HIST_STAT4 (VC 2.5)

VPX_SAMPLE_TIME1 (VC 2.5)

VPX_SAMPLE_TIME3 (VC 2.5)

VPX_SAMPLE_TIME3 (VC 2.5)

VPX_SAMPLE_TIME4 (VC 2.5)

历史统计,这些表包含着各种关于主机和虚机的统计信息,在 vCenter Server 2.0.x中,这些信息在表VPX_HIST_STAT中,在vCenter Server 2.5上,改用了多个表,其中:日统计信息在表VPX_HIST_STAT1中,周统计信息在表VPX_HIST_STAT2中(由日表累计而来),月统计信息在VPX_HIST_STAT3中(由周表累计而来),年表VPX_HIST_STAT4由月表累计而来,此外还有四个取样时间表。

其实通过修改统计间隔也可以清除一些统计数据,比如修改月间隔,则月统计数据会被全部清除,但年、周、日的统计数据不会受到影响。



如何清理数据库



以我的一个实验环境为例,VCenter是2.5,数据库是Oracle10.2.0.4,先看看我的各个表的大小:

SQL> select count(*) from vpx_task;

  COUNT(*)

----------

      1773

SQL> select count(*) from vpx_event;

  COUNT(*)

----------

    247112

SQL> select count(*) from vpx_event_arg;

  COUNT(*)

----------

    358282

SQL> select count(*) from vpx_hist_stat1;

  COUNT(*)

----------

      9892

SQL> select count(*) from vpx_hist_stat2;

  COUNT(*)

----------

     11140

SQL> select count(*) from vpx_hist_stat3;

  COUNT(*)

----------

     11199

SQL> select count(*) from vpx_hist_stat4;

  COUNT(*)

----------

      6681

段的大小

SQL> select bytes from user_segments where segment_name=\'VPX_EVENT\';

     BYTES

----------

  53477376



SQL> select bytes from user_segments where segment_name=\'VPX_EVENT_ARG\';

     BYTES

----------

  47185920



SQL> select bytes from user_segments where segment_name=\'VPX_TASK\'

     BYTES

----------

   2097152



再看一下数据库文件大小及使用情况

SQL> conn sys/lenovo@vpx as sysdba

已连接。

SQL> set linesize 800;

SQL> col tablespace_name format a10;

SQL> select

  2  d.status,

  3  d.tablespace_name,

  4  d.contents,

  5  TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),\'99G999G990\') \"total\",

  6  TO_CHAR(NVL(a.bytes - NVL(f.bytes, 0), 0)/1024/1024 ,\'99G999G990\') \"used\",

  7  TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0), \'990\')||\'%\' \"used %\",

  8  TO_CHAR(NVL(f.bytes / 1024 / 1024, 0),\'99G999G990\') \"free \"

  9  from sys.dba_tablespaces d,

10       (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,

11       (select tablespace_name,sum(bytes) bytes,max(bytes) largest_free

12               from dba_free_space group by tablespace_name) f

13  WHERE d.tablespace_name = a.tablespace_name

14  AND d.tablespace_name = f.tablespace_name

15  order by 6;



STATUS    TABLESPACE CONTENTS  total       used        used  free                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

--------- ---------- --------- ----------- ----------- ----- -----------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

ONLINE    USERS      PERMANENT           5           0    9%        5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

ONLINE    VPX        PERMANENT       1,000         289   29%         711                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

ONLINE    UNDOTBS1   UNDO               45          18   40%          27                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

ONLINE    SYSAUX     PERMANENT         410         396   96%          14                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

ONLINE    SYSTEM     PERMANENT         500         491   98%           9     

其中,VPX的表空间是VCenter使用的表空间。



清理步骤:

1、  从VMware网站上下载相关脚本
http://kb.vmware.com/selfservice ... ;externalId=1000125
脚本分Oracle和SQL Server,Oracle包含四个脚本,包括清除任务(VCDB_TASK_CLEANUP_ORACLE.sql)、事件(VCDB_EVENT_CLEANUP_ORACLE.sql)、VC2.0统计数据(VCDB_HIST_STAT_CLEANUP_ORACLE_V20.sql)、VC2.5统计数据(VCDB_HIST_STAT_CLEANUP_ORACLE_V25.sql)。

2、  关闭vCenter Server.

3、  拷贝脚本到数据库服务器下执行,在执行脚本时需要先编辑脚本,以VCDB_TASK_CLEANUP_ORACLE.sql为例,脚本中有一段配置文件
-- ######### USER CONFIGURABLE PARAMETERS ########################
-- 0 = COUNT ONLY; 1 = DELETE ROWS
DEL_DATA := 0;
SELECT sys_extract_utc(systimestamp) INTO purge_time FROM DUAL;
--Use one of these methods to specifiy the data cutoff date
--CUTOFF_DATE := \'2007/01/01\'
CUTOFF_DATE := purge_time -180;
--Number of rows to delete per transaction
BATCH_SIZE := 10000;
-- ######### END USER CONFIGURABLE PARAMETERS ####################

如果不做任何修改直接执行,将显示从CUTOFF_DATE开始有多少条数据能被清除

SQL> @VCDB_TASK_CLEANUP_ORACLE.sql

Logged in user: VPXADMIN

Cutoff date: \'21-8月 -08\'

Batch size: 10000

21-3月 -09 starting...

Number of Task data will be purged : 1768
在配置文件中,参数DEL_DATA表示是否要删除,CUTOFF_DATE参数表示从什么时候开始删除,BATCH_SIZE表示一次要删除多少条数据,在我的环境中,修改过后的脚本中的配置段为
-- ######### USER CONFIGURABLE PARAMETERS ########################
-- 0 = COUNT ONLY; 1 = DELETE ROWS
DEL_DATA := 1;
SELECT sys_extract_utc(systimestamp) INTO purge_time FROM DUAL;
--Use one of these methods to specifiy the data cutoff date
--CUTOFF_DATE := \'2007/01/01\'
--CUTOFF_DATE := purge_time -180;
CUTOFF_DATE := purge_time
--Number of rows to delete per transaction
BATCH_SIZE := 10000;
-- ######### END USER CONFIGURABLE PARAMETERS ####################
执行结果为

SQL> @VCDB_TASK_CLEANUP_ORACLE.sql

Logged in user: VPXADMIN

Cutoff date: \'21-3月 -09\'

Batch size: 10000

21-3月 -09 starting...

Number of Task data is purged : 1768



再依次执行VCDB_EVENT_CLEANUP_ORACLE.sql、VCDB_HIST_STAT_CLEANUP_ORACLE_V25.sql两个脚本,删除数据。再次查看

SQL> select count(*) from vpx_task;

  COUNT(*)

----------

         5

SQL> select count(*) from vpx_event;

  COUNT(*)

----------

         0

SQL> select count(*) from vpx_event_arg;

  COUNT(*)

----------

         0

SQL> select count(*) from vpx_hist_stat1;

  COUNT(*)

----------

       327

SQL> select count(*) from vpx_hist_stat2;

  COUNT(*)

----------

         0

SQL> select count(*) from vpx_hist_stat3;

  COUNT(*)

----------

         0

SQL> select count(*) from vpx_hist_stat4;

  COUNT(*)

----------

         0

由于是delete语句操作,表空间并没有释放,但是可以被后来的语句再次使用,这样就起到了回收空间的作用,清除了数据库。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP