ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle专题深入讨论 » RAC下實施高級復制經驗交流

标题: [原创] RAC下實施高級復制經驗交流
离线 jonnyzhang110
初级会员


精华贴数 0
个人空间 0
技术积分 130 (13584)
社区积分 0 (1317046)
注册日期 2007-3-25
论坛徽章:0
      
      

发表于 2008-4-29 14:25 
RAC下實施高級復制經驗交流

大家有沒在RAC環境中實施過高級復制.
比如:
Master A  -----   Master  B
A站點為RAC環境 兩節點
B站點為RAC環境 兩節點
A,B為異地可讀寫復制.
如何實施高級復制.
和單機環境實施的異同。
打算在RAC環境實施復制。
已經在單機環境測試過。
大家可以參考.就是RAC不知道是否一樣,高手指點一下.
例子:
基礎資料:
TESTA-TESTB做Master-Master復制
復制管理員          傳遞者         接收者                    Global_name
                                                          TESTA站點        TESTB站點
repadmin
test        repadmin        repadmin                 TESTA.COM        TESTB.COM


------------
安裝主站點
------------
1.使用管理員帳戶連接到TESTA DB
Sqlplus /nolog
Conn sys@testa
Pwd
2.創建復制管理員用戶在TESTA DB
CREATE USER repadmin IDENTIFIED BY test;
3.賦予復制管理員相應權限
BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
username => 'repadmin');
END;
/
GRANT COMMENT ANY TABLE TO repadmin;
GRANT LOCK ANY TABLE TO repadmin;
GRANT SELECT ANY DICTIONARY TO repadmin;
4.注冊傳遞者在TESTA DB
BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
username => 'repadmin');
END;
/
5.注冊接收者在TESTA DB(接收其他站點傳遞來的資料)
/*list_of_gnames => NULL
上述設置所有復制組的receiver都為repadmin
list_of_gnames => gname1,gname2,...
如果需要設置部分復制組的receiver可以使用上述配置
*/
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'repadmin',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/
6.設置定期的Purge在TESTA DB(10分鐘一次)
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => 'SYSDATE + 1/144',
delay_seconds => 0);
END;
/
7.在TESTB DB上重復1-6步驟(添加其他站點)
8.創建主站點之間的Scheduled Link
a.創建主站點之間的DB Link
(注意DBLink的名字要與連接到的DB的gobal_name相同,using後跟TNS中配置的連接其他DB用的字串)
CONNECT sys@testa
CREATE PUBLIC DATABASE LINK testb.com USING 'testb';
CONNECT repadmin@testa
CREATE DATABASE LINK testb.com CONNECT TO repadmin IDENTIFIED BY test;
CONNECT sys@testb
CREATE PUBLIC DATABASE LINK testa.com USING 'testa';
CONNECT repadmin@testb
CREATE DATABASE LINK testa.com CONNECT TO repadmin IDENTIFIED BY test
b.設置各站點之間定時Push機制(以下採用定期Push機制,而非連續Push)
CONNECT repadmin@testa
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'testb.com',
interval => 'SYSDATE + (1/1440)',
next_date => SYSDATE,
delay_seconds =>0);
END;
/
CONNECT repadmin@testb
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'testa.com',
interval => 'SYSDATE + (1/1440)',
next_date => SYSDATE,
delay_seconds =>0);
END;
/

---------------------------------
Creating a Master Group
---------------------------------

1.創建主復制組
CONNECT repadmin@testa
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPGROUP (
gname => 'test_repg');
END;
/
(備用)
刪除主復制組
BEGIN
DBMS_REPCAT.DROP_MASTER_REPGROUP(
gname =>'test_repg',
all_sites =>true);
END;
/
2.添加對象到主復制組
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'test_repg',
type => 'TABLE',
oname => 'TEST_TB',
sname => 'test',
use_existing_object => TRUE,
copy_rows => TRUE);
END;
/
(備用)
從主復制組中刪除對象
BEGIN
DBMS_REPCAT.DROP_MASTER_REPOBJECT (
sname =>'test',
oname =>'TEST_TB',
type => 'TABLE');
END;
/
3.添加其他主站點
BEGIN
DBMS_REPCAT.ADD_MASTER_DATABASE (
gname => 'test_repg',
master => 'testb.com',
use_existing_objects => TRUE,
copy_rows => TRUE,
propagation_mode => 'ASYNCHRONOUS');
END;
/
檢查結果
SELECT DBLINK FROM DBA_REPSITES WHERE GNAME = 'TEST_REPG';
如果查詢結果可以看到有添加的主站點則繼續.否則等待.
(備用)
Remove站點
BEGIN
DBMS_REPCAT.REMOVE_MASTER_DATABASES (
gname => 'test_repg',
master_list => 'testb.com');
END;
/
4.生成復制支持
BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'TEST',
oname => 'TEST_TB',
type => 'TABLE',
min_communication => TRUE);
END;
/
使用以下語句檢查對復制組的管理操作是否已經都完成,完成之後才可以開始復制
SELECT COUNT(*) FROM DBA_REPCATLOG WHERE GNAME = 'TEST_REPG';

5.開始復制
BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'test_repg');
END;
/

大家交流一下經驗,看怎麼做RAC下的復制。
高手留步。

[ 本帖最后由 jonnyzhang110 于 2008-4-29 14:27 编辑 ]


只看该作者    顶部
离线 jonnyzhang110
初级会员


精华贴数 0
个人空间 0
技术积分 130 (13584)
社区积分 0 (1317046)
注册日期 2007-3-25
论坛徽章:0
      
      

发表于 2008-4-29 16:28 
高手留步,自己頂一下。


只看该作者    顶部
离线 cow977
高级会员



精华贴数 0
个人空间 0
技术积分 2822 (558)
社区积分 5 (17291)
注册日期 2004-5-21
论坛徽章:13
会员2007贡献徽章开发板块每日发贴之星数据库板块每日发贴之星开发板块每日发贴之星行业板块每日发贴之星数据库板块每日发贴之星
行业板块每日发贴之星数据库板块每日发贴之星行业板块每日发贴之星设计板块每日发贴之星行业板块每日发贴之星行业板块每日发贴之星

发表于 2008-4-29 17:06 
頂一下


只看该作者    顶部
离线 dwilson


精华贴数 8
个人空间 120
技术积分 5417 (241)
社区积分 62 (4371)
注册日期 2002-12-12
论坛徽章:9
会员2007贡献徽章会员2006贡献徽章授权会员ERP板块每日发贴之星生肖徽章2007版:兔生肖徽章2007版:猴
生肖徽章2007版:牛生肖徽章2007版:鸡生肖徽章2007版:虎   

发表于 2008-4-30 12:57 
学习学习


__________________
竹密岂防流水过,
山高哪碍野云飞!
只看该作者    顶部
离线 jonnyzhang110
初级会员


精华贴数 0
个人空间 0
技术积分 130 (13584)
社区积分 0 (1317046)
注册日期 2007-3-25
论坛徽章:0
      
      

发表于 2008-5-7 15:59 
看來用的人不多呀。
那位高人有經驗,分享一下。


只看该作者    顶部
离线 yuxuan
每天进步一点点


来自 合肥
精华贴数 0
个人空间 60
技术积分 3558 (413)
社区积分 331 (1775)
注册日期 2001-11-7
论坛徽章:11
数据库板块每日发贴之星生肖徽章2007版:蛇生肖徽章2007版:羊生肖徽章2007版:鼠数据库板块每日发贴之星2008北京奥运纪念徽章:拳击
行业板块每日发贴之星行业板块每日发贴之星数据库板块每日发贴之星行业板块每日发贴之星行业板块每日发贴之星 

发表于 2008-5-7 22:16 
本人也很关注,正准备在RAC环境中实施高级复制
不过我的A站是RAC,B站是单机


__________________
努力工作,健康生活
只看该作者    顶部
离线 jonnyzhang110
初级会员


精华贴数 0
个人空间 0
技术积分 130 (13584)
社区积分 0 (1317046)
注册日期 2007-3-25
论坛徽章:0
      
      

发表于 2008-5-9 11:22 
找了很多資料都沒有提到RAC怎麼去做。
不過前天問了一個公司的Oracle顧問,他本人認為沒有什麼區別。
我也覺得應該沒什麼區別。
反正配置過程中並無提到特別針對RAC的設置。
準備直接在生產上配置了。
應該問題不大。


只看该作者    顶部
离线 jonnyzhang110
初级会员


精华贴数 0
个人空间 0
技术积分 130 (13584)
社区积分 0 (1317046)
注册日期 2007-3-25
论坛徽章:0
      
      

发表于 2008-6-2 19:51 
今天在生產上嘗試做復制
發現一個大問題:
生產庫的表要寫,但是一個組在啟用之前加入其中的表都是隻讀的.
大家有沒什麼好辦法提高咝兴俣妊剑砗芏嘤写蟾1500個左右。


只看该作者    顶部
离线 yuxuan
每天进步一点点


来自 合肥
精华贴数 0
个人空间 60
技术积分 3558 (413)
社区积分 331 (1775)
注册日期 2001-11-7
论坛徽章:11
数据库板块每日发贴之星生肖徽章2007版:蛇生肖徽章2007版:羊生肖徽章2007版:鼠数据库板块每日发贴之星2008北京奥运纪念徽章:拳击
行业板块每日发贴之星行业板块每日发贴之星数据库板块每日发贴之星行业板块每日发贴之星行业板块每日发贴之星 

发表于 2008-6-5 14:51 
关注


__________________
努力工作,健康生活
只看该作者    顶部
离线 jonnyzhang110
初级会员


精华贴数 0
个人空间 0
技术积分 130 (13584)
社区积分 0 (1317046)
注册日期 2007-3-25
论坛徽章:0
      
      

发表于 2008-6-30 23:10 
结贴报告

在生产上配置了Master-Master复制,问题多多,最后又撤下来了,还费了不少周章,具体情况如下:
      配置了1000个表的复制,分五个复制组,生产环境是三个节点的RAC,每个节点每天归档得量是6G左右。
在rac上配置高级复制和单个节点上没什么区别,只用在一个节点上配置高级复制即可。
问题主要有两个:
1.配置完高级复制之后启动复制,发现有些表变成只读,oracle 报表结构有变化,但是压根没变过。网上查了一下有人说是bug.这样应用就没办法使用,使用set_disable包使复制不再传递,但是因为生产更新量比较大,因此造成系统表空间暴涨,直接长到30g.
2.最后想停调复制也无法短时间停止,给oracle开sr后,使用trunc系统表方法才停止复制组,等一些列操作。
3.最后咨询oracle 顾问,顾问并不建议配置大量这样表的复制。依据顾问经验复制表不应该超过50个。


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问