日益增长的分布式应用需求要求实现更好分布式的软件环境,不断推动着分布式技术的进步。Oracle数据复制是实现分布式数据环境的一种技术,通过在不同的物理站点拷贝数据来建立分布式数据环境。
7. 如果添加的表没有主键需要设置可以代替主键的列或者列的集合:
begin
dbms_repcat.set_columns(
sname => ’SHORACL’,
oname => ’ CREDIT_CARD ’,
column_list => ’ CREDIT_CARD_ID’);
end;
/ |
8. 在主体组中的数据对象可以被复制之前,必须为他们生成复制支持。该方法为复制创建必要的触发器、包或者存储过程:
begin
dbms_repcat.generate_replication_support(
sname=>’SHORACL’,
oname=>’ CREDIT_CARD’,
type=>’TABLE’,
min_communication=>TRUE);
end;
/ |
9. 为快速刷新创建实体化视图日志:
create materialized view log on SHORACL. CREDIT_CARD;
如果是没有主键的表示用一下语句:
create materialized view log on SHORACL. CREDIT_CARD with
rowid excluding new values; |
10.启动复制:
begin
dbms_repcat.resume_master_activity(
name=>’sh_rep’);
end;
/ |
二.设置实体化视图站点:
1.创建复制管理员并授予相应的权限:
disconnect;
connect system/passwd@BJ;
create user mvadmin identified by
mvadmin;
begin
dbms_repcat_admin.
grant_admin_any_schema(username=> ’mvadmin’);
end;
/
grant comment any table to mvadmin;
grant lock any table to mvadmin;
grant select any dictionary to mvadmin; |
2.注册传播方:
begin
dbms_defer_sys.register_propagator(
username => ’mvadmin’);
end;
/ |
3.公共数据库连接。需要每个复制需要创建三个数据库连接。公共数据库连接指定数据库的全局名称:
create public database link ORACLSH using ’oracle.shanghai.
com’; |
Using子句后跟的是全局数据库名或者是连接字符串。
create public database link ORACLSH using ’(description=
(address=(protocol=tcp)(host=127.0.0.1)(port=1521))
(connect_data=(service_name=oracl)))’ |
4.建立清除延迟事务队列调度作业:
disconnect;
connect mvadmin/mvadmin@BJ;
begin
dbms_defer_sys.schedule_purge(
next_date => sysdate,
interval => ’/*1:hr*/ sysdate + 1’,
delay_seconds => 0,
rollback_segment => ’’);
end; |