分类: Oracle
2008-12-22 09:55:33
关于OracleStream的安装、配置和使用
数据源机器配置 |
目标机器配置 | |
计算机名 |
Source |
Dest |
IP地址 |
192.168.23.130 |
192.168.23.131 |
SID |
Source |
Dest |
SQL> conn sys/inxite as sysdba; 已连接。 SQL> alter system set aq_tm_processes=2 scope=both; 系统已更改。 SQL> alter system set global_names=true scope=both; 系统已更改。 SQL> alter system set job_queue_processes=20 scope=both; 系统已更改。 SQL> alter system set parallel_max_servers=20 scope=both; 系统已更改。 SQL> alter system set undo_retention=3600 scope=both; 系统已更改。 SQL> alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile; 系统已更改。 SQL> alter system set streams_pool_size=25M scope=spfile; 系统已更改。 SQL> alter system set utl_file_dir='*' scope=spfile; 系统已更改。 SQL> alter system set open_links=4 scope=spfile; 系统已更改。 SQL> alter system set log_archive_dest='e:/OracleDB/arch' scope=spfile; 系统已更改。 SQL> alter system set log_archive_start=TRUE scope=spfile; 系统已更改。 SQL> alter system set log_archive_format='arch%t_%s_%r.arc' scope=spfile; 系统已更改。 |
SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORA-32004: obsolete and/or deprecated parameter(s) specified ORACLE 例程已经启动。 Total System Global Area 167772160 bytes Fixed Size 1247900 bytes Variable Size 92276068 bytes Database Buffers 71303168 bytes Redo Buffers 2945024 bytes 数据库装载完毕。 SQL> alter database archivelog; 数据库已更改。 SQL> alter database open; 数据库已更改。 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 1 下一个存档日志序列 2 当前日志序列 2 SQL> |
#创建主环境的Stream专用表空间 SQL> create tablespace tbs_stream datafile 'e:/OracleDB/tbs_stream01.dbf' 2 size 100m autoextend on next 100m maxsize 1000m segment space management auto; 表空间已创建。 #将logminer 的数据字典从system表空间转移到新建的表空间,防止撑满system表空间 SQL> execute dbms_logmnr_d.set_tablespace('tbs_stream'); PL/SQL 过程已成功完成。 #创建Stream管理用户 SQL> create user strmadmin identified by strmadmin default tablespace tbs_stream temporary tablespace temp; 用户已创建。 #授权Stream管理用户 SQL> grant connect,resource,dba,aq_administrator_role to strmadmin; 授权成功。 SQL> begin 2 dbms_streams_auth.grant_admin_privilege( 3 grantee => 'strmadmin', 4 grant_privileges => true); 5 end; 6 / PL/SQL 过程已成功完成。 |
在source机器上添加dest数据源,名称为dest 在dest机器上添加source数据源,名称为source |
第五步:启用追加日志
可以基于Database级别或Table级别,启用追加日志(Supplemental Log)。在建立根据Schema
粒度进行复制的Oracle Stream 环境中,如果确认Schema 下所有Table 都有合理的主键
#启用Database 追加日志 SQL> alter database add supplemental log data; 数据库已更改。 #启用Table追加日志 SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE, FOREIGN KEY) COLUMNS; |
SQL> select * from global_name; GLOBAL_NAME -------------------------------------------------------------------------------- SOURCE.REGRESS.RDBMS.DEV.US.ORACLE.COM SQL>conn strmadmin/strmadmin; SQL> create database link dest connect to strmadmin identified by strmadmin using 'dest'; 数据库链接已创建。 SQL> select * from tab@dest; 未选定行 |
SQL> select * from global_name; GLOBAL_NAME -------------------------------------------------------------------------------- DEST.REGRESS.RDBMS.DEV.US.ORACLE.COM SQL>conn strmadmin/strmadmin SQL> create database link source connect to strmadmin identified by strmadmin using 'source'; 数据库链接已创建。 SQL> select * from tab@source; 未选定行 |
SQL> connect strmadmin/strmadmin 已连接。 SQL> begin 2 dbms_streams_adm.set_up_queue( 3 queue_table => 'source_queue_table', 4 queue_name => 'source_queue'); 5 end; 6 / PL/SQL 过程已成功完成。 |
SQL> connect strmadmin/strmadmin 已连接。 SQL> begin 2 dbms_streams_adm.set_up_queue( 3 queue_table => 'dest_queue_table', 4 queue_name => 'dest_queue'); 5 end; 6 / PL/SQL 过程已成功完成。 |
exp userid=test/test@source file='e:/test.dmp' object_consistent=y rows=y |
imp userid=test/test@dest file='e:/test.dmp' ignore=y commit=y log='e:/test.log' streams_instantiation=y fromuser=test touser=test |
SQL> connect strmadmin/strmadmin 已连接。 SQL> begin 2 dbms_streams_adm.add_schema_rules( 3 schema_name => 'test', 4 streams_type => 'capture', 5 streams_name => 'capture_source', 6 queue_name => 'strmadmin.source_queue', 7 include_dml => true, 8 include_ddl => true, 9 include_tagged_lcr => false, 10 source_database => null, 11 inclusion_rule => true); 12 end; 13 / PL/SQL 过程已成功完成。 |
SQL> connect strmadmin/strmadmin 已连接。 SQL> begin 2 dbms_streams_adm.add_schema_propagation_rules( 3 schema_name => 'test', 4 streams_name => 'source_to_dest', 5 source_queue_name => 'strmadmin.source_queue', 6 destination_queue_name => 'strmadmin.dest_queue@dest', 7 include_dml => true, 8 include_ddl => true, 9 include_tagged_lcr => false, 10 source_database => 'source', 11 inclusion_rule => true); 12 end; 13 / PL/SQL 过程已成功完成。 #修改propagation休眠时间为0,表示实时传播LCR SQL> begin 2 dbms_aqadm.alter_propagation_schedule( 3 queue_name => 'source_queue', 4 destination => 'dest', 5 latency => 0); 6 end; 7 / PL/SQL 过程已成功完成。 |
SQL> connect strmadmin/strmadmin 已连接。 SQL> begin 2 dbms_streams_adm.add_schema_rules( 3 schema_name => 'test', 4 streams_type => 'apply', 5 streams_name => 'apply_dest', 6 queue_name => 'strmadmin.dest_queue', 7 include_dml => true, 8 include_ddl => true, 9 include_tagged_lcr => false, 10 source_database => 'source', 11 inclusion_rule => true); 12 end; 13 / PL/SQL 过程已成功完成。 |
SQL> connect strmadmin/strmadmin 已连接。 SQL> begin 2 dbms_apply_adm.start_apply( 3 apply_name => 'apply_dest'); 4 end; 5 / PL/SQL 过程已成功完成。 |
SQL> connect strmadmin/strmadmin 已连接。 SQL> begin 2 dbms_capture_adm.start_capture( 3 capture_name => 'capture_source'); 4 end; 5 / PL/SQL 过程已成功完成。 |