`
cuiyadll
  • 浏览: 197450 次
文章分类
社区版块
存档分类
最新评论

oracle同步手顺

阅读更多
常用命令:
sqlplus /nolog 启动sqlplus程序
conn / as sysdba 以系统管理员登录
conn strmadmin/strmadmin@icg 以数据库成员登录
show parameter xxx 查看系统配置
alter system set key=value 更改系统配置
lsnrctl stop/start 重新加载监听
startup mount/nomount 启动数据库
shutdown immediate 关闭数据库
alter database open 打开数据库
EXEC DBMS_STREAMS_ADM.remove_streams_configuration(); 清除同步配置






开始
1.查看数据库是否归档
————————————————————————————————————————————
select name,log_mode from v$database;
————————————————————————————————————————————
结果:ARCHIVELOG表示归档成功

2.如果为归档直接跳过,如果不是归档,执行下面操作
2.1增加LOG位置,使用show parameter log_archive_dest_1可以查看
————————————————————————————————————————————————————————————————————————————————————————
alter system set log_archive_dest_1='location=D:/u01/product/11.2.0/db_1/archive_log';
————————————————————————————————————————————————————————————————————————————————————————
2.2重启数据库
——————————————————————
shutdown immediate;
startup mount;
alter database open;
——————————————————————
2.2.1如果发生ORA-00119异常,执行下面操作
可能是$HOME/network/admin/tnsnames.ora中没有指定LISTINER_MECOOLDB地址
可以直接打开D:\u01\admin\MECOOLDB\pfile中的init.ora.xxxx文件,修改loc al_listener="(ADDRESS = (PROTOCOL = TCP)(HOST = ICG-DL-LYS)(PORT = 1521))"
然后执行
————————————————————————————————————————————————————————————————————————————————
create spfile from pfile = 'D:\u01\admin\MECOOLDB\pfile\init.ora.xxxx",
————————————————————————————————————————————————————————————————————————————————
也可以直接修改tnsnames.ora文件,增加
LISTINER_MECOOLDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.221)(PORT = 1521))
就可以了。
可能还是启动不起来,这个时候执行一下
——————————————————————————————————————————————————————
create spfile from pfile;
——————————————————————————————————————————————————————
就可以了。
2.3修改日志文件命名格式
——————————————————————————————————————————————————————————————————————————————
alter system set log_archive_max_processes = 5;
alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;
——————————————————————————————————————————————————————————————————————————————
2.4查看系统存档模式
——————————————————————
archive log list;
——————————————————————
3.配置数据库相关参数
3.1配置前最好使用show parameter 查看一下是否需要配置
————————————————————————————————————————————————
alter system set aq_tm_processes=2 scope=both;
alter system set global_names=true scope=both;
alter system set job_queue_processes=10 scope=both;
alter system set parallel_max_servers=20 scope=both;
alter system set undo_retention=3600 scope=both;
alter system set nls_date_format='YYYY-MM-DD HH24:MI:SS' scope=spfile;
alter system set streams_pool_size=512M scope=spfile;
alter system set utl_file_dir='*' scope=spfile;
alter system set open_links=4 scope=spfile;
————————————————————————————————————————————————
3.2重启数据库
——————————————————————
shutdown immediate;
startup mount;
alter database open;
——————————————————————

4.源数据库和目的数据库创建相同表空间和用户并赋权,
4.1如果原来有,现象不需要,请执行
——————————————————————————————————————————————————————————————
drop user strmadmin cascade;
DROP TABLESPACE streams_tbs INCLUDING CONTENTS AND DATAFILES;
——————————————————————————————————————————————————————————————
4.2创建表空间和用户,并且进行赋值
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
CREATE TABLESPACE streams_tbs DATAFILE 'D:\u01\oradata\MECOOLDB\streams_tbs.dbf' SIZE 100M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;
CREATE USER strmadmin IDENTIFIED BY strmadmin DEFAULT TABLESPACE streams_tbs;
grant connect, resource, dba, aq_administrator_role to strmadmin;
begin
  dbms_streams_auth.grant_admin_privilege( 
    grantee => 'strmadmin', 
    grant_privileges => true 
  ); 
end;
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
以上为主库和备库共同的东西,一下需要分别设定

5.配置本地访问名称tnsname.ora文件和listener.ora
主库:路径$HOME\network/admin/
GLOBAL_DBNAME必须指定
————————————————————————————————————————————————————————————————————————
#spfile文件使用
LISTINER_MECOOLDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.221)(PORT = 1521))
#用户连接备库的时候使用的
ICGDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.201)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ICGDB)
    )
  )
#用户连接主库的时候使用的
MECOOLDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.221)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = MECOOLDB)
    )
  )
——————————————————————————————————————————————————————————————————————————
备库一样,略

6.在主库上面启用 supplemental log
————————————————————————————————————————————————
ALTER DATABASE FORCE LOGGING;
alter database add supplemental log data;
————————————————————————————————————————————————
查看结果
SELECT  SUPPLEMENTAL_LOG_DATA_MIN, 
        SUPPLEMENTAL_LOG_DATA_PK,  
        SUPPLEMENTAL_LOG_DATA_UI, 
        SUPPLEMENTAL_LOG_DATA_ALL  
FROM    V$DATABASE;
结果:
SUPPLEME SUP SUP SUP 
-------- --- --- --- 
YES      NO  NO  NO

7.创建db link
主库上:
————————————————————————————————————————————————————————————————————————————————————————
conn strmadmin/strmadmin;
create database link icgdb connect to strmadmin identified by strmadmin using 'icgdb';
————————————————————————————————————————————————————————————————————————————————————————
备库上:
————————————————————————————————————————————————————————————————————————————————————————
conn strmadmin/strmadmin;
create database link mecooldb connect to strmadmin identified by strmadmin using 'mecooldb';
————————————————————————————————————————————————————————————————————————————————————————

8.创建队列流
8.1创建主库队列流
8.1.1增加
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
conn strmadmin/strmadmin@mecooldb
exec DBMS_STREAMS_ADM.SET_UP_QUEUE(queue_table => 'SOURCE_QUEUE_TABLE',queue_name => 'SOURCE_QUEUE',queue_user => 'strmadmin');
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
8.1.2移除
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
conn strmadmin/strmadmin@mecooldb
exec dbms_streams_adm.remove_queue(queue_name => 'SOURCE_QUEUE',cascade => true,drop_unused_queue_table => true);
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
8.1.3检测
————————————————————————————————————————————————————————————————————————————————————
select owner,queue_table,name from dba_queues where owner='STRMADMIN';
————————————————————————————————————————————————————————————————————————————————————
8.2创建备库队列流
8.2.1增加
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
conn strmadmin/strmadmin@icgdb
exec DBMS_STREAMS_ADM.SET_UP_QUEUE(queue_table => 'TARGET_QUEUE_TABLE',queue_name => 'TARGET_QUEUE',queue_user => 'strmadmin');
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
8.2.2移除
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
conn strmadmin/strmadmin@icgdb
exec dbms_streams_adm.remove_queue(queue_name => 'TARGET_QUEUE',cascade => true,drop_unused_queue_table => true);
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
8.2.3检测
————————————————————————————————————————————————————————————————————————————————————
select owner,queue_table,name from dba_queues where owner='STRMADMIN';
————————————————————————————————————————————————————————————————————————————————————

9.在主库上创建捕获进程
9.1创建
————————————————————————————————————————
conn strmadmin/strmadmin@mecooldb;
BEGIN
  DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
    schema_name => 'icg',
    streams_type=> 'capture',
    streams_name => 'capture_stream',
    queue_name => 'strmadmin.SOURCE_QUEUE',
    include_dml => true,
    include_ddl => true,
    source_database => null,
    include_tagged_lcr => false,
    inclusion_rule => true
  );
END;
————————————————————————————————————————
9.2检测
————————————————————————————————————————
select CAPTURE_NAME,QUEUE_NAME,START_SCN,STATUS,CAPTURE_TYPE from dba_capture;
select * from  ALL_CAPTURE_PREPARED_SCHEMAS;
————————————————————————————————————————

10.实例化复制数据库
10.1获取源库互置用户的SCN
————————————————————————————————————————————————————————
conn strmadmin/strmadmin@mecooldb;
set serveroutput on;
DECLARE
  iscn NUMBER;
BEGIN
  iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();
  DBMS_OUTPUT.PUT_LINE('Instantiation SCN is: ' || iscn);
END;
/
————————————————————————————————————————————————————————
10.2设置为目标库互置用户的SCN
————————————————————————————————————————————————————————
conn strmadmin/strmadmin@icgdb;
BEGIN
  DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN(
    source_schema_name => 'SYSTEM',
    source_database_name => 'MECOOLDB',
    instantiation_scn => &iscn
  );
END;
/
————————————————————————————————————————————————————————

11.创建传播进程
11.1创建传播进程
————————————————————————————————————————————————————————
conn strmadmin/strmadmin@mecooldb;
BEGIN
  DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES(
    schema_name => 'icg',
    streams_name => 'source_to_target',
    source_queue_name => 'strmadmin.SOURCE_QUEUE',
    destination_queue_name => 'strmadmin.TARGET_QUEUE@icgdb',
    include_dml => true,
    include_ddl => true,
    include_tagged_lcr => false,
    source_database => 'MECOOLDB',
    inclusion_rule => true,
    queue_to_queue => true
  );
END;
/
————————————————————————————————————————————————————————
11.2检测
————————————————————————————————————————————————————————
select PROPAGATION_NAME,SOURCE_QUEUE_NAME,DESTINATION_QUEUE_NAME,DESTINATION_DBLINK,STATUS from dba_propagation;
————————————————————————————————————————————————————————
11.3修改propagation休眠时间为5,表示实时传播LCR(logical change recoder)。
————————————————————————————————————————————————————————
BEGIN
  dbms_aqadm.alter_propagation_schedule(
    queue_name => 'SOURCE_QUEUE',
    destination => 'icgdb',
    destination_queue=> 'TARGET_QUEUE',
    latency => 0);
END;
/
————————————————————————————————————————————————————————
11.4目标数据库创建Apply进程
————————————————————————————————————————————————————————
conn strmadmin/strmadmin@icgdb;
BEGIN
  DBMS_STREAMS_ADM.ADD_SCHEMA_RULES(
    schema_name => 'icg',
    streams_type => 'apply',
    streams_name => 'target_apply_stream',
    queue_name => 'strmadmin.TARGET_QUEUE',
    include_dml => true,
    include_ddl => true,
    include_tagged_lcr => false,
    source_database => 'MECOOLDB',
    inclusion_rule => true
  );
END;
/
————————————————————————————————————————————————————————

12.启动STREAM
12.1在目标库启动apply进程
————————————————————————————————————————————————————————
conn strmadmin/strmadmin@icgdb;
EXEC DBMS_APPLY_ADM.SET_PARAMETER(apply_name => 'target_apply_stream', parameter => 'disable_on_error', VALUE => 'n');
EXEC DBMS_APPLY_ADM.START_APPLY(apply_name=>'target_apply_stream');
————————————————————————————————————————————————————————
12.2检测启动情况
————————————————————————————————————————————————————————
select apply_name,queue_name,status from dba_apply;
————————————————————————————————————————————————————————
12.3在主库上启动Capture进程
————————————————————————————————————————————————————————
conn strmadmin/strmadmin@mecooldb;
EXEC DBMS_CAPTURE_ADM.START_CAPTURE(capture_name=>'capture_stream');
————————————————————————————————————————————————————————
12.4检测启动情况
————————————————————————————————————————————————————————
select capture_name,status from dba_capture;
————————————————————————————————————————————————————————

13.停止stream
13.1停止Capture进程
————————————————————————————————————————————————————————
conn strmadmin/strmadmin@mecooldb;
exec dbms_capture_adm.stop_capture(capture_name => 'capture_stream');
————————————————————————————————————————————————————————
13.2停止Apply进程
————————————————————————————————————————————————————————
conn strmadmin/strmadmin@icgdb;
exec dbms_apply_adm.stop_apply(apply_name => 'target_apply_stream');
————————————————————————————————————————————————————————

14.清除所有配置(注意在清除钱要先停止stream,请注意,不要误操作了)
——————————————————————————————————————————————————————————————
conn strmadmin/strmadmin@mecooldb;
EXEC DBMS_STREAMS_ADM.remove_streams_configuration();
conn strmadmin/strmadmin@icgdb;
EXEC DBMS_STREAMS_ADM.remove_streams_configuration();
——————————————————————————————————————————————————————————————












分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics