您查看的文章来源于http://www.oklinux.cn ***业务需要,先做个高级复制的(同步复制)。详细的说明如下:***       [Oracle] oracle高级复制同步复制配置步骤       首先,数据库要具备高级复制功能(用system身份登录数据库,查看v$option视图,如果其中Advanced replication为TRUE,则支持高级复制功能;否则不支持)  一.数据库基本情况 数据库A 版本oracle 10.2.0.1 数据库名sid:eread 数据库B 版本oracle 10.1.0.3 数据库名sid:test 主体定义站点:A eread 主体站点:B test 注:主体定义站点指配置复制工作的站点  本例涉及的用户.  复制管理员:repadmin  应用用户:cqm 本例复制的对象:reptest 数据表  本例的先决条件:你需要设置好相应的参数,job_queue_processes需要大于0,global_name=true,并且建立相应的db link. alter system set global_names=true scope=both;
二.在两个数据库上分别创建应用用户CQM CREATE USER CQM IDENTIFIED BY CQM DEFAULT TABLESPACE CQM TEMPORARY TABLESPACE TEMP; GRANT DBA TO CQM; 三.在两个数据库上分别创建复制管事员用户REPADMIN --创建repadmin用户管理复制环境  CREATE USER REPADMIN IDENTIFIED BY REPADMIN;  ALTER USER REPADMIN DEFAULT TABLESPACE USERS;  ALTER USER REPADMIN TEMPORARY TABLESPACE TEMP;  GRANT connect, resource TO REPADMIN;  --授予repadmin用户权限可以管理当前站点中任何主体组  EXECUTE dbms_repcat_admin.grant_admin_any_schema('REPADMIN');  --授予repadmin用户权限可以为任何表创建snapshot logs  GRANT comment any table TO REPADMIN;  GRANT lock any table TO REPADMIN;  --指定repadmin用户为propagator,并授予执行任何procedure的权限  EXECUTE dbms_defer_sys.register_propagator('REPADMIN');  GRANT execute any procedure TO REPADMIN; 
四.更改两个数据库的全局名称 alter database rename global_name to A.TEST.COM.CN; alter database rename global_name to B.TEST.COM.CN;
A:eread.im.com.cn B:test.im.com.cn 五.在两个数据库上建立数据库链接 create public database link test.im.com.cn connect to REPADMIN identified by REPADMIN using 'test'; create public database link eread.im.com.cn connect to REPADMIN identified by REPADMIN using 'eread'; 六.在两个数据库的应用用户CQM下创建表 在数据库EREAD上用户CQM下:注意,要进行复制的表必须有主键 CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate); ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID)); 在数据库EREAD上用户CQM下: CREATE TABLE TEST(ID NUMBER(10),TIMESTAMP DATE DEFAULT sysdate); ALTER TABLE TEST ADD(CONSTRAINT TEST_PK PRIMARY KEY(ID)); 七.在主体定义站点开始操作(数据库A:eread) 以REPADMIN登录数据库eread 创建复制组: execute dbms_repcat.create_master_repgroup('rep_hh');  execute dbms_repcat.create_master_repgroup('repg');  在复制组里加入复制对象: execute dbms_repcat.create_master_repobject(sname=>'cqm',oname=>'test',type=>'table',use_existing_object=>true,gname=>'repg',copy_rows=>false); 对复制对象产生复制支持: execute dbms_repcat.generate_replication_support('cqm','test','table'); 添加主体复制节点: execute dbms_repcat.add_master_database(gname=>'repg',master=>'test.im.com.cn',use_existing_objects=>true,copy_rows=>false, propagation_mode => 'synchronous'); 在主体定义站点启动复制: execute dbms_repcat.resume_master_activity('repg',true); 八.至此配置完成
1)模拟小数据量测试:OK 2)模拟大数据量测试:OK CREATE OR REPLACE procedure insert_into_test as i number; m NUMBER; n NUMBER; BEGIN n:=0; FOR i IN 1..10000 LOOP m:=i; INSERT INTO test(id)valueS (m); n:=n+1; IF n=1000 THEN COMMIT; n:=0; END IF; END LOOP; COMMIT; END; /  
|