分享
 
 
 

Qracle高级复制维护中要注意的方面

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

前段时间一致在做Oracle高级复制,下面是在维护过程中对出现问题的一些分析、解决,贴出来希望对大家有帮助。

高级复制是oracle数据库的高级功能,它的维护比普通数据库复杂,下面是在已有高级复制数据库维护过程中出现过一些问题和解决办法。

1、稳定的物理链路:连接服务器的网络由于故障断开,服务器彼此之间数据就不能访问,数据无法传输;网络不稳定,数据就会发生丢包,不完整。

2、传输速度方面要求较高:否则还不如单级版本。

3、参与的服务器不能长期不开机:这样会积压大量的延迟任务,导致数据无法进行发布。

4、参与复制的表,不能在它上面直接执行任何DDL语句:因为ORACLE自动在参与复制的表上建立了内部的支持复制的TRIGGER和PACKAGE,在它上面直接执行任何DDL语句都会破坏这些复制支持。应该先SUSPEND要修改表所在的复制组,在REPICATION MANAGER中或调用REPCAT API执行DDL语句,然后重新GENERATE该表的复制支持,最后将复制组状态恢复为NORMAL。注重修改表结构的DDL语句中表名前一定要带上属主,并且最后没有分号。假如不小心直接执行了DDL语句,应该将该表移出复制环境,删掉,重新建立或从其它节点复制过来。

5、修改一张表加一个字段,并设置缺省值,如 ALTER TABLE OWNER.TABLE_NAME ADD(FIELD_NAME VARCHAR2(20) DEFAULT 'AAA');在9i之前不能一次执行,要分成两部分执行:

1、ALTER TABLE OWNER.TABLE_NAME ADD FIELD_NAME

2、ALTER TABLE OWNER.TABLE_NAME MODIFY FIELD_NAME DEFAULT 'AAA'

这是因为执行任何DDL语句,需要SUSPEND复制组,此时复制表只能查询,不能执行其它DML语句。假如直接加上一个字段同时赋予缺省值,此时的处理是加上一个字段,并马上给该字段赋上给定的缺省值,这后面的DML语句是不能执行的,所以会报错。而分成两部分执行,第一部分先加一个字段,第二部分再修改该字段的定义,不会发生插入缺省值的DML操作,因此可以执行。

6、执行任何ADMIN REQUEST(对复制环境的治理命令)前,都要保证此时没有堆积的DEFERRED TRANS。

7、执行任何ADMIN REQUEST,必须一步一步执行。因为ADMIN REQUEST的工作原理,是用一个REPCATLOG表保存ADMIN REQUEST语句,执行完一条消失一条,后面的再继续执行。假如前面一条没执行完,后面的ADMIN REQUEST就无法执行,而REPCATLOG表假如不为空,复制组就无法恢复为NORMAL。因此每次发出ADMIN REQUEST后,都要检查REPCATLOG表,当所有节点上的REPCATLOG表都为空后,才能发出下一条命令。

8、假如发现REPCATLOG表中有无法执行的命令,可以重新APPLY或PURGE掉再重新发出命令执行。假如只是某一个节点上有遗留命令,可以在该节点上多APPLY几次执行。

9、假如发出命令后一直没有响应,而ADMIN REQUEST又无法PURGE掉,现象类似死锁。可以试着BROKEN掉该ADMIN REQUEST对应的JOB,重新刷新命令。假如命令能继续执行,恢复JOB的状态。假如还不行,从V$SESSION 和V$LOCK中查出死锁,用ALTER SYSTEM KILL SESSION 杀掉死锁的进程,假如还是杀不掉。就需要查出类型为'RQ'的分布式死锁,用SID再从V$PROCESS、V$BGPROCESS查出对应的后台进程,从操作系统级杀掉后台进程的方式来解锁,可能还需要重启数据库。最后再恢复JOB的状态和其他涉及的复制环境状态。

10、可以通过REPLICATION MANAGER或相关系统表查询复制环境情况,以REPADMIN用户登陆:

查看复制组和复制对象:

select gname,status from dba_repgroup;

--其中gname 即为复制组名,status 表示状态

select gname,oname,status from dba_repobject

where type =’TABLE’ and oname =

‘table_name’;

要查询某张表在哪个复制组中,将table_name 替换成表名,注重表名一定要大写。

查看分布式状态:

select job,what,next_sec,this_sec,

last_sec,failures,broken from dba_jobs;

failures 小于16,broken 为N 表示分布式状态正常

查看数据库连接

select * from dba_db_links;

恢复传播复制任务

当连接复制环境中数据库的网络出现问题,可能会造成复制任务的停止。具体现象表现为本地数据库的更新操作没有发布到远地数据库中。当出现这种情况时,请参考前面提到的查看分布式状态的方法,检查复制任务是否正常。假如failures 大于等于16,broken 为Y 表示分布式状态不正常,需要恢复传播复制任务。

exec dbms_job.run(jobno);

-- jobno 为在dba_jobs 表中ailures 大于等于16,broken 为Y 的job。

查看执行出错的事务,当分布式数据库出现不正常时,请执行下列语句,并根据查询的error_msg 来解决问题。

select distinct origin_tran_db,destination,error_msg from deferror;

尝试执行出错的事务,根据查询的error_msg 解决了网络无法连接等问题后,请执行下列语句,并拷贝生成的拼接exec 语句在客户端执行。

select ' exec dbms_defer_sys.execute_error

( ' ' ' DEFERRED_TRAN_ID ' ' ' , ' ' '

DESTINATION ' ' ' )' from deferror;

删除执行出错的事务,可能会碰到这样一种状况,尝试执行出错的事务,该事务依旧执行不成功。假如此时deferror 表中的error_msg 都是“NO DATA FOUND”的错误,那么可以考虑删除执行出错的事务。请非凡注重,必须确认已经解决了出错原因,并在每个分布式节点都尝试执行出错的事务后,才可以删除再次执行出错的事务,否则会造成分布式数据库的数据不一致。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有