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();
——————————————————————————————————————————————————————————————
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值