oracle同步数据怎么操作,Oracle流同步使用总结

因为工作关系,最近使用Oracle数据库,前段时间用了Oracle数据库自带的流同步功能,做数据库的热备,功能还是挺强大的,直接可以在登录控制台向导进行配置,下面我就来说下Oracle流同步配置和使用问题总结。

一、Oracle流同步配置

1.设置主从数据库参数

sqlplus/ as sysdba--配置主从数据库参数altersystemsetaq_tm_processes=2scope=both;altersystemsetglobal_names=true scope=both;altersystemsetjob_queue_processes=10scope=both;altersystemsetparallel_max_servers=20scope=both;altersystemsetundo_retention=3600scope=both;altersystemsetnls_date_format='YYYY-MM-DD HH24:MI:SS'scope=spfile;altersystemsetstreams_pool_size=25M scope=spfile;altersystemsetutl_file_dir='*'scope=spfile;altersystemsetopen_links=4scope=spfile;

2.设置归档模式

Oracle流同步在可以em控制台进行配置,使用system帐户登录进入源数据库实例管理主页面,再进入维护的流设置,使用全局流, 方案, 表和子集复制向导进行设置,如果数据库当前是运行在NOARCHIVELOG模式下,则会提示“要设置流, 数据库需要运行在 ARCHIVELOG 模式下。数据库当前运行在 NOARCHIVELOG 模式下。建议您从数据库主页中修改此设置, 然后返回继续运行此向导。”,所以先要设置数据库实例设置为运行在ARCHIVELOG模式下,设置Oracle数据库归档模式SQL语句如下。

--使用管理员帐户登录数据库sqlplus/assysdba--设置归档路径altersystemsetlog_archive_dest_1='location=E:\oracle\arch'scope=spfile;altersystemsetlog_archive_start=TRUE scope=spfile;altersystemsetlog_archive_format='arch%t_%s_%r.arc'scope=spfile;--关闭数据库例程shutdownimmediate;--装载数据库startup mount;--设置数据库为archivelog模式alterdatabasearchivelog;--打开数据库alterdatabaseopen;--查看归档archiveloglist

3.配置源数据库流管理员

设置归档模式后,继续回到流同步向导界面,创建流管理员strmadmin。创建流管理员应当是具有 SYSDBA 权限的现有管理员,随后需要需要 SYSDBA用户名口令,在此向导完成时将创建流管理员用户。

4.配置目标数据库

目标数据库同样也要创建流管理员,输入主机名、端口、SID 或服务名、流管理员、口令,创建目标数据库的流管理员SQL语句如下,可以先在目标数据库执行。

sqlplus/assysdba--创建表空间createtablespace tbs_stream datafile'E:/Oracle/data/tbs_stream.dbf'size 100m autoextendonmaxsize unlimited segmentspacemanagement auto;--将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间executedbms_logmnr_d.set_tablespace('tbs_stream');--创建流管理用户createuserstrmadmin identifiedbystrmadmindefaulttablespace tbs_streamtemporarytablespacetemp;--授权Stream管理用户grantconnect,resource,dba,aq_administrator_roletostrmadmin;Grantexecuteondbms_aqadmtostrmadmin;Grantexecuteondbms_capture_admtostrmadmin;Grantexecuteondbms_propagation_admtostrmadmin;Grantexecuteondbms_streams_admtostrmadmin;Grantexecuteondbms_apply_admtostrmadmin;Grantexecuteondbms_flashbacktostrmadmin;begindbms_streams_auth.grant_admin_privilege(

grantee=>'strmadmin',

grant_privileges=>true);end;/begindbms_rule_adm.grant_system_privilege(

privilege=>DBMS_RULE_ADM.CREATE_RULE_SET_OBJ,

grantee=>'strmadmin',

grant_option=>true);end;/begindbms_rule_adm.grant_system_privilege(

privilege=>DBMS_RULE_ADM.CREATE_RULE_SET_OBJ,

grantee=>'strmadmin',

grant_option=>false);end;/

5.配置流复制规则

Oracle流同步可以使用全局规则(指定要排除的方案和要排除的表)、方案规则(指定要包含的方案和要排除的表)、表规则(指定要包含的表或指定 WHERE 子句以包含表的子集)三种方式,全局规则即整个数据库实例同步,如果只需要同步指定用户建议使用方案规则。同时还可以选择捕获传播DML、DDL更改,排除表。

6.确认配置流和启动作业

上面配置流完成后可以生成脚本,完成提交流设置作业,需要运行源数据库的计算机的主机用户名和口令,点击提交即进行流作业。进入作业活动可以监视在执行流作业,过会作业执行成功后,可以看到源数据库的流管理增加了STREAMS_CAPTURE的捕获记录和STREAMS_PROPAGATION的传播记录,而目标数据库的流管理会增加STREAMS_APPLY的应用记录。

7.测试

配置顺利完成后,源数据库就会自动捕获传播指定对象修改,并应用同步到目标数据库。比如我们增加一个表再往表里加条记录,然后目标数据库也会自动同步过来,实现Oracle数据库的联机热备。

二、使用问题总结

1.archiver error, Connect internal only, until freed.

在使用归档模式一段时间后,出现了上述错误,因为归档的日志空间没能释放,解决办法如下:

--查看flash recovery area的archivelog使用情况select*fromV$FLASH_RECOVERY_AREA_USAGE;--计算flash recovery area已经占用的空间selectsum(percent_space_used)*3/100fromv$flash_recovery_area_usage;--查看recovery目录show parameter recover;--进入Oracle主目录,找到对应的归档日志,删除或转移一些旧的日志cd ORACLE主目录/flash_recovery_area/ORCL/archivelog

del ORACLE主目录/flash_recovery_area/ORCL/archivelog/20120810--使用rman命令清理不用的归档日志,以释放空间rman target sys/pass

crosscheck archivelogall;deleteexpired archivelogall;select*fromV$FLASH_RECOVERY_AREA_USAGE;

2.ORA-00376: 此时无法读取文件 6

ORA-01110: 数据文件 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\JITCADB\ECCCADATA.ORA'

这是因为有数据库文件脱机了,解决办法如下:

--查看数据文件状态selectname, statusfromv$datafile;--修改状态alterdatabasedatafile6online;--重新打开数据库shutdownimmediate;

startup mount;alterdatabaseopen;

3.ORA-16038:日志 2序列号80无法归档

ORA-19809:超出了恢复文件数的限制

归档模式下的联机日志损坏掉了,解决办法如下:

--查看日志组selectgroup#,sequence#,archived,statusfromv$log;--重建该日志文件alterdatabaseclear unarchived logfilegroup2;--重新打开数据库alterdatabaseopen;

Oracle流同步通过高级列对,解析归档日志挖掘DDL、DML语句,对主数据库没有增加额外太大压力,提高了数据库的可用性。当然Oracle流同步也有些需要注意的地方,比如说不能更新数据库的主键的字段,配置维护相对较为复杂。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值