ITPub博客

首页 > Linux操作系统 > Linux操作系统 > stream配置之双向tablespace级别复制(三)

stream配置之双向tablespace级别复制(三)

原创 Linux操作系统 作者:atlantisholic 时间:2011-06-14 09:16:47 0 删除 编辑

一.       在源库和目标库分别建立对应的用户和表空间

使用表级别复制时,需要事先在源库和目标库建立相应的表空间和相应的用户,否则stream配置将无法初始化。

1.在源库创建用于复制的表空间

CREATE  TABLESPACE  infogrid  DATAFILE  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAC01\INFOGRID.DBF'  SIZE  25REUSE  AUTOEXTEND  ON  MAXSIZE  UNLIMITED;

2.在源库和目标库创建用于复制的用户

源库:

create  user  infogrid  identified  by  infogrid  default  tablespace  infogrid;

目标库:(目标库必须包与源库表空间相同的用户,否则无法初始化成功)

create  user  infogrid  identified  by  infogrid  default  tablespace  users;

3. 在源库创建用于测试复制用的表

test1test2test3test4…

在表中插入测试数据。

 

二.       在源库和目标库初始化用于stream复制的环境

1. 设置初始化参数

--COMPATIBLE 大于等于 10.2.0,目标库的值必须大于等于源库的值

--GLOBAL_NAMES 两边设置为:true,db_link的名字必须和链接库的global_name相同

--JOB_QUEUE_PROCESSES 大于等于 2,以支持消息传播队列

--AQ_TM_PROCESSES 大于等于 2,在有队列的streams数据库上需要配置队列进程

--STREAMS_POOL_SIZE 设置足够大小

--LOG_ARCHIVE_CONFIG 在使用downstream的时候需要配置DB_UNIQUE_NAME

--LOG_ARCHIVE_DEST_n 在使用 downstream时,至少需要针对downstream目标设置一个路径

--LOG_ARCHIVE_DEST_STATE_n 使用downstream时,需要将对应的归档路径设置为可用

--OPEN_LINKS 使用stream时,必须将这个值大于等于4

--PARALLEL_MAX_SERVERS 设置一个适合的值

--PROCESSES 保证进程够用

--SESSIONS 回话数保证够用

--SGA_MAX_SIZE 设置足够大小

--SGA_TARGET 设置足够大小

--SHARED_POOL_SIZE 设置足够大小

--TIMED_STATISTICS 设置为:true

--UNDO_RETENTION 设置为最小3600,确保不出现"snapshot too old"

 

2. 为确保 stream复制的准确性,增加辅助日志信息

Alter database add supplemental log data(primary key,unique)columns;

 

3. 分别在源库和目标库创建database link,用于源库和目标库的信息交互;

CREATE  DATABASE  LINK  orac02.com  CONNECT  TO  strmadmin  IDENTIFIED  BY  infogrid  USING  'orac02';

CREATE  DATABASE  LINK  orac01.com  CONNECT  TO  strmadmin  IDENTIFIED  BY  infogrid  USING  'orac01';

4. 分别在源库和目标库创建用于读取数据文件的directory,

如果文件存放在多个地方,必须创建多个directory,否则stream无法执行表空间复制的初始化。

创建用于表空间元数据和数据文件传输的directory,streams初始化时,将导出的数据存放于该文件夹,并通过网络传输(表空间复制无法使用database_link直接通过网络初始化,必须创建对应的文件夹作为中转)

源库:

create  directory  SOURCE_DIRECTORY  as  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAC01\dmp';

create  directory  datafile_directory  as  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORAC01';

目标库:

create  directory SOURCE_DIRECTORY  as  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\INFOGRID\dmp';

三.       在源库执行初始化streams复制的脚本

DECLARE
  t_names  DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET;
BEGIN
 
-- Tablespace names
  t_names(
1) := 'INFOGRID';
  DBMS_STREAMS_ADM.MAINTAIN_TTS(
     tablespace_names             => t_names,
     source_directory_object      =>
'SOURCE_DIRECTORY',
     destination_directory_object =>
'DEST_DIRECTORY',
     source_database              =>
'orac01.com',
     destination_database         =>
'orac02.com',
     perform_actions              => true,
     bi_directional               => true,
     include_ddl                  => true);
END;
/

四.       测试streams复制的有效性

1.   查看 streams相关进程的运行情况

select * from dba_capture;
select * from dba_propagation;
select * from dba_apply;

2.   测试streams配置是否在起作用

在源库的测试表中插入一些数据,并在目标库中查询,看是否也被同步到对应的目标库的数据库表中。

五.       删除streams的配置

1.  停止并删除streams相关进程。

begin
dbms_capture_adm.stop_capture(capture_name =>
'capture_name');
dbms_capture_adm.drop_capture(capture_name =>
'capture_name');
dbms_propagation_adm.stop_propagation(propagation_name =>
'propagation_name');
dbms_propagation_adm.drop_propagation(propagation_name =>
'propagation_name');
dbms_apply_adm.stop_apply(apply_name =>
'apply_name');
dbms_apply_adm.drop_apply(apply_name =>
'apply_name');
end;

 

2.  移除streams的整个配置

begin
dbms_streams_adm.remove_streams_configuration;
end;

 

3.  删除streams配置脚本相关数据

--查找相关失败的数据

select * from dba_recoverable_script_errors
--
清楚或回滚这些数据

begin
dbms_streams_adm.recover_operation(script_id =>
'FCC27F88BDDD4EA59645D08B43C34DC6',operation_mode => 'PURGE');
end;

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23071790/viewspace-697913/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-08-30

  • 博文量
    130
  • 访问量
    632746