koko的oracle杂货铺

 

有关grid control(2)


接上篇

在成功添加完agent以后,我们可以手动将数据库添加到OMS的targets中。

添加起来比较简单,在这里就不一一赘述。

主要介绍下遇到的主要问题:

如果之前添加过一次,然后删除了,再次添加会报错,一般有可能会遇到下面几种错:

ORA-20600: The specified target is in the process of being deleted

或者报在执行sysman下某个trigger时出错。

主要原因就是sysman下某些表未清除干净,一般是遇到了exception,这时候就需要手动来清除这些表中的记录。

先介绍几个表:

MGMT_TARGETS  --目前在GC中能看到的target都在此表中,删除了的对象不在此

MGMT_TARGETS_DELETE --记录执行过删除操作的target,如果delete_complete_time为空,则有可能删除操作正在进行中

MGMT_TARGET_DELETE_EXCEPTIONS --记录了删除失败所有可能涉及到的表名

 

首先可以先尝试用下面的方法再执行下delete target的操作:

exec mgmt_admin.delete_target('mgcdb2','oracle_database') --这里2个参数分别对应MGMT_TARGETS中的target_name和target_type

exec mgmt_admin.delete_target_internal('mgcdb2','oracle_database')

如果报错,只有用手工的方式来清除相关记录了:(参考metalink 849388.1)

1. 停止agent

2. 执行 exec mgmt_admin.cleanup_agent('racn2:3872') --这个主机名和端口号可以在emctl status agent的结果中得到,或是在MGMT_TARGETS之前的记录中得到

3.运行如下sql

select 'delete from ' || o.name || ' where ' || c.name ||
' not in (SELECT target_guid FROM MGMT_TARGETS) and ' || c.name ||
' !=''00000000000000000000000000000000'';'
from sys.obj$ o, sys.tab$ t ,sys.col$ c
where o.owner# = userenv('SCHEMAID')
and c.name like ('%TARGET_GUID%')
and c.obj# = o.obj#
and (o.name like ('MGMT_%') OR o.name like ('OCS_%'))
and o.obj# = t.obj#
and bitand(t.property, 1) = 0
and bitand(c.property,32) = 0
and bitand(c.property,512) = 0
and o.name not in (SELECT table_name
FROM MGMT_TARGET_DELETE_EXCEPTIONS)
order by o.name;

将结果copy出来直接运行。

4.清除agent下相关文件

如果是rac环境 则需要在各个node的文件夹下删除,

rm -r $ORACLE_HOME/<nodename>/sysman/emd/state/*
rm -r
$ORACLE_HOME/<nodename>/sysman/emd/collection/*
rm -r
$ORACLE_HOME/<nodename>/sysman/emd/upload/*
rm
$ORACLE_HOME/<nodename>/sysman/emd/lastupld.xml
rm
$ORACLE_HOME/<nodename>/sysman/emd/agntstmp.txt
rm
$ORACLE_HOME/<nodename>/sysman/emd/blackouts.xml
rm
$ORACLE_HOME/<nodename>/sysman/emd/protocol.ini

5. 然后resecure agent,start agent 继续执行添加数据库的操作





 
 
 
 
评论:

发表一条评论:
  • HTML语法: 启用
 

Valid XHTML or CSS?

[This is a Roller site]
Theme by koko.
 
© koko