|
4.为实体化视图站点建立复制代理。创建复制代理用户并授予视图接受方权限。复制代理是复制接收方连接主体站点的用户
disconnect;
connect system/passwd@SH;
create user proxy_bjoracle identified by proxy_bjoracle;
begin
dbms_repcat_admin.register_user_repgroup(
user_name=>’proxy_bjoracle,
privilege_type => ’proxy_snapadmin’,list_of_gnames => NULL);
end;
/
grant select_catalog_role to proxy_bjoracle;
5. 创建主体组。
disconnect;
connect repadmin/repadmin@SH;
begin
dbms_repcat.create_master_repgroup(gname=>’sh_rep’);
end;
/
6. 向主体组中添加复制对象
a) 添加表:
begin
dbms_repcat.create_master_repobject(
gname=>’sh_rep’,
type=>’TABLE’,
oname=>’ CREDIT_CARD’
sname=>’SHORACL’
use_existing_object=>TRUE,
copy_rows=>TRUE);
end;
b) 添加索引
begin
dbms_repcat.create_master_repobject(
gname=>’sh_rep’,
type=>’INDEX’,
oname=>’ INDEX_CREDIT_CARD’
sname=>’SHORACL’
use_existing_object=>TRUE,
copy_rows=>FALSE);
end;
/
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;
5.建立复制管理员mvadmin的数据库连接:
create database link ORACLSH connect to proxy_bjoracle
identified by proxy_bjoralce
Connect to ... Identified by ...子句指明用什么用户连接远程数据库
6.建立复制调度数据库连接作业:
begin
dbms_defer_sys.schedule_push(
destination => ’ora92zjk’,interval => ’/*1:hr*/ sysdate + 1’,
next_date => sysdate,stop_on_error => false,
delay_seconds => 0,parallelism => 0);
end;
/
|