主体定义数据库:master.com.cn<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
主体数据库:repsite.com.cn
高级复制过程:(以下没有特别说明都要在两台数据库上操作)。
1.处理数据库参数:(两台数据库都要配置)1.1设置global_name为true。(global_name由两部分组成。<sid> +<db_domain>.)
SQL> show parameter global_name
NAME TYPE VALUE
------------------------------------ ----------- --------
global_names boolean TRUE
如果为false请更改
alter system set global_names=true scope=spfile; (写在spfile文件中。需要重起才能起作用)
1.2 重新命名global_name
alter database rename global_name to <sid>.<domain_name>.
如:alter database global_name tomaster.com.cn; (在数据库名后面加值)
UPDATE GLOBAL_NAME SET GLOBAL_NAME = '<database name>[.db_domain]';(修改值)
更该完毕。重起两台数据库。
ALTER SYSTEM SET OPEN_LINKS=6 SCOPE=SPFILE;
运行 SQL>shutdown immediate 停止服务
SQL>startup 启动服务
参数修改完毕。
2.开始用户配置:(两台数据库都要相同的配置)2.1 先配置复制数据测试用户。(可以不用)
用system用户操作:
create user wj identified by wj default tablespace users;
grant connect,resource to test;
2.2切换到test用户(conn wj/wj)
create table test(id number,name varchar2(20),constraint test_id_pk primary key(id));(主键一定是要的);
2.3插入一些测试数据
insert into test values(1,'tanfufa1');
insert into test values(4,'tanfufa1');
insert into test values(2,'tanfufa1');
insert into test values(3,'tanfufa1');
commit;
2.4用system用户创建public link;
首先在master和repsite的tnsnames.ora文件下分别添加如下内容:
master的tnsnames.ora文件配置:
REPSITE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.18)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = repsite.com.cn)
)
)
repsite的tnsnames.ora文件配置
MASTER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = master.com.cn)
)
)
在master上创建
create public database link "repsite.com.cn"using'repsite';
测试连通性:
如果不通请检查tnsname.一定要通.不然后面就不用做了.
在repsite上创建
create public database link"master.com.cn"using 'master';
分别测试连通性:
Master:
select * from global_name@ repsite.com.cn
GLOBAL_NAME
---------
repsite.com.cn
Repsite:
select * from global_name@master.com.cn
GLOBAL_NAME
---------
MASTER.COM.CN
如果不通请检查tnsname.一定要通.不然后面就不用做了.
3.配置复制管理用户.(两台数据库都要相同的配置)
3.1用system用户登入
创建复制管理用户repadmin
SQL>create user repadmin identified by repadmin default tablespace users temporary tablespace temp;
为repadmin用户复权限+
execute dbms_defer_sys.register_propagator('repadmin');
grant execute any procedure to repadmin;
execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');
execute dbms_repcat_admin.grant_admin_any_schema(username => 'repadmin');
grant comment any table to repadmin;
grant lock any table to repadmin;
grant select any dictionary to repadmin;
4. 用repadmin用户创建database link.(两台数据库都要相同的配置)
在repsite上创建:
create database link "master.com.cn" connect to repadmin identified by repadmin;
在master上创建:
create database link "repsite.com.cn" connect to repadmin identified by repadmin;
分别测试连通性:
Master:
select * from global_name@ repsite.com.cn
GLOBAL_NAME
---------
repsite.com.cn
Repsite:
select * from global_name@master.com.cn
GLOBAL_NAME
---------
MASTER.COM.CN
如果不通请检查tnsname.一定要通.不然后面就不用做了.