数据库迁移遇到的问题 我现在的环境是9I,现在要分离该环境的一个用户的所有到新创建的11g环境下,这个用户下的数据量非常大,数据库不能停很长时间,所以迁移用户要迅速,因为是现网!大家有什么好的方法吗我开始的方案是用exp/imp 但exp的增量导出只针对整个数据库,哪样的话数据量太大了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先导入该用户的schema对象以及业务支撑数据,历史数据慢慢导入可行否? 使用 Oracle stream参考1 引言Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现数据库之间的同步。这种技术可以将整个数据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术,对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数据库对象级甚至整个数据库的同步。解析归档日志这种技术现在应用的比较广泛,Quest公司的shareplex软件及DSG公司的realsync都是这样的产品,一些公司利用这样的产品做应用级的容灾。但shareplex或是realsync都是十分昂贵的,因此你可以尝试用Stream这个Oracle提供的不用额外花钱的功能。Oracle Stream对生产库的影响是非常小的,从库可以是与主库不同的操作系统平台,你可以利用Oracle Stream复制几个从库,从库可用于查询、报表、容灾等不同的功能。本文不谈技术细节,只是以手把手的方式一步一步的带你把Stream的环境搭建起来,细节内容可以查联机文档。2 概述主数据库:操作系统:Solaris 9IP地址:192.168.10.35数据库:Oracle 10.2.0.2ORACLE_SID:prodGlobal_name:prod从数据库:操作系统:AIX 5.2IP地址:192.168.10.43数据库:Oracle 10.2.0.3ORACLE_SID:h10gGlobal_name:h10g3 环境准备3.1 设定初始化参数使用pfile的修改init<SID>.ora文件,使用spfile的通过alter system命令修改spile文件。主、从数据库分别执行如下的语句:Sqlplus ‘/ as sysdba’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=25M scope=spfile;alter system set utl_file_dir='*' scope=spfile;alter system set open_links=4 scope=spfile;执行完毕后重启数据库。3.2 将数据库置为归档模式设置log_archive_dest_1到相应的位置;设定log_archive_start为TRUE,即启用自动归档功能;设定log_archive_format指定归档日志的命令格式。举例:sqlplus ‘/ as sysdba’alter system set log_archive_dest_1=’location=/yang/arch’ scope=spfile;alter system set log_archive_start=TRUE scope=spfile;alter system set log_archive_format=’ arch%t_%s_%r.arc’ scope=spfile;shutdown immediate;startup mount;alter database archivelog;alter database open;数据库置为归档模式后,可以按如下方式检验一下:SQL> archive log listDatabase log mode Archive ModeAutomatic archival EnabledArchive destination /yang/archOldest online log sequence 534Next log sequence to archive 536Current log sequence 536观注标红的部分。3.3 创建stream 管理用户3.3.1 创建主环境stream管理用户#以sysdba身份登录connect / as sysdba#创建主环境的Stream专用表空间create tablespace tbs_stream datafile '/yang/oradata/prod/tbs_stream01.dbf'size 100m autoextend on maxsize unlimited segment space management auto;#将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间execute dbms_logmnr_d.set_tablespace('tbs_stream');#创建Stream管理用户create user strmadmin identified by strmadmindefault tablespace tbs_stream temporary tablespace temp;#授权Stream管理用户grant connect,resource,dba,aq_administrator_role to strmadmin;begindbms_streams_auth.grant_admin_privilege(grantee => 'strmadmin',grant_privileges => true);end;/3.3.2 创建从环境stream管理用户#以sysdba身份登录connect / as sysdba#创建Stream专用表空间,我的从库用了ASM,这一步也可以参见3.3.1create tablespace tbs_stream datafile '+VGDATA/h10g/datafile/tbs_stream01.dbf'size 100m autoextend on maxsize unlimited segment space management auto;#同样,将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间execute dbms_logmnr_d.set_tablespace('tbs_stream');#创建Stream管理用户create user strmadmin identified by strmadmindefault tablespace tbs_stream temporary tablespace temp;#授权Stream管理用户grant connect,resource,dba,aq_administrator_role to strmadmin;begindbms_streams_auth.grant_admin_privilege(grantee => 'strmadmin',grant_privileges => true);end;/3.4 配置网络连接3.4.1配置主环境tnsnames.ora主数据库(tnsnames.ora)中添加从数据库的配置。H10G =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.43)(PORT = 1521)))(CONNECT_DATA =(SID = h10g)(SERVER = DEDICATED)))3.4.2配置从环境tnsnames.ora从数据库(tnsnames.ora)中添加主数据库的配置。PROD =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.35)(PORT = 1521)))(CONNECT_DATA =(SID = prod)(SERVER = DEDICATED)))3.5 启用追加日志可以基于Database级别或Table级别,启用追加日志(Supplemental Log)。在建立根据Schema粒度进行复制的Oracle Stream环境中,如果确认Schema下所有Table都有合理的主键(Primary Key),则不再需要启用追加日志。#启用Database 追加日志alter database add supplemental log data;#启用Table追加日志alter table add supplement log group log_group_name(table_column_name) always;3.6 创建DBlink根据Oracle 10gR2 Stream官方文档,针对主数据库建立的数据库链的名字必须和从数据库的global_name相同。如果需要修改global_name,执行“alter database rename global_name to xxx”。3.6.1创建主数据库数据库链#以strmadmin身份,登录主数据库。connect strmadmin/strmadmin#建立数据库链create database link h10g connect to strmadmin identified by strmadmin using 'h10g';3.6.2创建从数据库数据库链#以strmadmin身份,登录从数据库。connect strmadmin/strmadmin#建立数据库链create database link prod connect to strmadmin identified by strmadmin using 'prod';3.7 创建流队列3.7.1创建Master流队列#以strmadmin身份,登录主数据库。connect strmadmin/strmadminbegindbms_streams_adm.set_up_queue(queue_table => 'prod_queue_table',queue_name => 'prod_queue');end;/3.7.2创建Backup流队列#以strmadmin身份,登录从数据库。connect strmadmin/strmadminbegindbms_streams_adm.set_up_queue(queue_table => 'h10g_queue_table',queue_name => 'h10g_queue');end;/3.8 创建捕获进程#以strmadmin身份,登录主数据库。提醒一下,本文档以hr用户做示例。connect strmadmin/strmadminbegindbms_streams_adm.add_schema_rules(schema_name => 'hr',streams_type => 'capture',streams_name => 'capture_prod',queue_name => 'strmadmin.prod_queue',include_dml => true,include_ddl => true,include_tagged_lcr => false,source_database => null,inclusion_rule => true);end;/3.9 实例化复制数据库在主数据库环境中,执行如下Shell语句。如果从库的hr用户不存在,建立一个hr的空用户。exp userid=hr/hr@prod file='/tmp/hr.dmp' object_consistent=y rows=yimp userid=system/manager@h10g file='/tmp/hr.dmp' ignore=y commit=y log='/tmp/hr.log' streams_instantiation=y fromuser=hr touser=hr3.10 创建传播进程#以strmadmin身份,登录主数据库。connect strmadmin/strmadminbegindbms_streams_adm.add_schema_propagation_rules(schema_name => 'hr',streams_name => 'prod_to_h10g',source_queue_name => 'strmadmin.prod_queue',destination_queue_name => 'strmadmin.h10g_queue@h10g',include_dml => true,include_ddl => true,include_tagged_lcr => false,source_database => 'prod',inclusion_rule => true);end;/#修改propagation休眠时间为0,表示实时传播LCR。begindbms_aqadm.alter_propagation_schedule(queue_name => 'prod_queue',destination => 'h10g',latency => 0);end;/3.11 创建应用进程#以strmadmin身份,登录从数据库。connect strmadmin/strmadminbegindbms_streams_adm.add_schema_rules(schema_name => 'hr',streams_type => 'apply',streams_name => 'apply_h10g',queue_name => 'strmadmin.h10g_queue',include_dml => true,include_ddl => true,include_tagged_lcr => false,source_database => 'prod',inclusion_rule => true);end;/3.12 启动STREAM#以strmadmin身份,登录从数据库。connect strmadmin/strmadmin#启动Apply进程begindbms_apply_adm.start_apply(apply_name => 'apply_h10g');end;/#以strmadmin身份,登录主数据库。connect strmadmin/strmadmin#启动Capture进程begindbms_capture_adm.start_capture(capture_name => 'capture_prod');end;/3.13 停止STREAM#以strmadmin身份,登录主数据库。connect strmadmin/strmadmin#停止Capture进程begindbms_capture_adm.stop_capture(capture_name => 'capture_prod');end;/#以strmadmin身份,登录从数据库。connect strmadmin/strmadmin#停止Apply进程begindbms_apply_adm.stop_apply(apply_name => 'apply_h10g');end;/3.14 清除所有配置信息要清楚Stream配置信息,需要先执行3.13,停止Stream进程。#以strmadmin身份,登录主数据库。connect strmadmin/strmadminexec DBMS_STREAMS_ADM.remove_streams_configuration();#以strmadmin身份,登录从数据库。connect strmadmin/strmadminexec DBMS_STREAMS_ADM.remove_streams_configuration();5 问题诊断5.1 如何知道捕捉(Capture)进程是否运行正常?以strmadmin身份,登录主数据库,执行如下语句:SQL> SELECT CAPTURE_NAME,2 QUEUE_NAME,3 RULE_SET_NAME,4 NEGATIVE_RULE_SET_NAME,5 STATUS6 FROM DBA_CAPTURE;结果显示如下:CAPTURE_NAME QUEUE_NAME------------------------------ ------------------------------RULE_SET_NAME NEGATIVE_RULE_SET_NAME STATUS------------------------------ ------------------------------ --------CAPTURE_PROD PROD_QUEUERULESET$_14 ENABLEDENABLED如果STATUS状态是ENABLED,表示Capture进程运行正常;如果STATUS状态是DISABLED,表示Capture进程处于停止状态,只需重新启动即可;如果STATUS状态是ABORTED,表示Capture进程非正常停止,查询相应的ERROR_NUMBER、ERROR_MESSAGE列可以得到详细的信息;同时,Oracle会在跟踪文件中记录该信息。5.2 如何知道Captured LCR是否有传播GAP?以strmadmin身份,登录主数据库,执行如下语句:SQL> SELECT CAPTURE_NAME, QUEUE_NAME, STATUS, CAPTURED_SCN, APPLIED_SCN2 FROM DBA_CAPTURE;结果显示如下:CAPTURE_NAME QUEUE_NAME STATUS------------------------------ ------------------------------ --------CAPTURED_SCN APPLIED_SCN------------ -----------CAPTURE_PROD PROD_QUEUE ENABLED17023672 17023672如果APPLIED_SCN小于CAPTURED_SCN,则表示在主数据库一端,要么LCR没有被dequeue,要么Propagation进程尚未传播到从数据库一端。5.3 如何知道Appy进程是否运行正常?以strmadmin身份,登录从数据库,执行如下语句:SQL> SELECT apply_name, apply_captured, status FROM dba_apply;结果显示如下:APPLY_NAME APPLY_ STATUS---------------------- ------ ----------------APPLY_H10G YES ENABLED如果STATUS状态是ENABLED,表示Apply进程运行正常;如果STATUS状态是DISABLED,表示Apply进程处于停止状态,只需重新启动即可;如果STATUS状态是ABORTED,表示Apply进程非正常停止,查询相应的ERROR_NUMBER、ERROR_MESSAGE列可以得到详细的信息;同时,可以查询DBA_APPLY_ERROR视图,了解详细的Apply错误信息。--End-- 不知楼主9i数据库里的"这个用户"数据量比例大小?如果占80%以上,建议全库做异机恢复,然后再将归档日志文件拷贝过去recover database..这样对业务无影响(无须中断),等到切换的时候操作也简单. 该用户下的的数据量大概是70G,用rman的方法单独迁移一个表空间可行否? 70G占整个数据库的比例是多少?只做过RMAN的整数据库异机恢复,单表空间的迁移没试过, 该用户下的的数据量大概是70G70G并不大 可以在夜间做exp导出。再移植到新的数据库上去。 ORACLE中遇到一难的查询语句 无法初始化ocr 一个简单的SQL查询语句,但是……请各位大虾帮帮俺,谢谢。 ora-02041和ora-02063错误 这段代码慢在哪?请高手帮忙,急!! 如何配置oracle客户端?用来使用PLSQL imp时,为什么有些表无法导入 依旧是ORACLE乱码问题,这个跟别的乱码不同,很怪异 sybases数据库表移植到Oracle问题?请高手指教。 Oracle11g服务端登录plsql客户端时报ORA-12546 TNS:权限被拒绝,之前还是可以用的 各位朋友,求sql,帮个忙 win7旗舰版32位安装oracle 10g db求助
参考1 引言
Oracle Stream功能是为提高数据库的高可用性而设计的,在Oracle 9i及之前的版本这个功能被称为Advance Replication。Oracle Stream利用高级队列技术,通过解析归档日志,将归档日志解析成DDL及DML语句,从而实现数据库之间的同步。这种技术可以将整个数据库、数据库中的对象复制到另一数据库中,通过使用Stream的技术,对归档日志的挖掘,可以在对主系统没有任何压力的情况下,实现对数据库对象级甚至整个数据库的同步。
解析归档日志这种技术现在应用的比较广泛,Quest公司的shareplex软件及DSG公司的realsync都是这样的产品,一些公司利用这样的产品做应用级的容灾。但shareplex或是realsync都是十分昂贵的,因此你可以尝试用Stream这个Oracle提供的不用额外花钱的功能。Oracle Stream对生产库的影响是非常小的,从库可以是与主库不同的操作系统平台,你可以利用Oracle Stream复制几个从库,从库可用于查询、报表、容灾等不同的功能。本文不谈技术细节,只是以手把手的方式一步一步的带你把Stream的环境搭建起来,细节内容可以查联机文档。
2 概述
主数据库:
操作系统:Solaris 9
IP地址:192.168.10.35
数据库:Oracle 10.2.0.2
ORACLE_SID:prod
Global_name:prod
从数据库:
操作系统:AIX 5.2
IP地址:192.168.10.43
数据库:Oracle 10.2.0.3
ORACLE_SID:h10g
Global_name:h10g3 环境准备
3.1 设定初始化参数
使用pfile的修改init<SID>.ora文件,使用spfile的通过alter system命令修改spile文件。主、从数据库分别执行如下的语句:
Sqlplus ‘/ as sysdba’
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=25M scope=spfile;
alter system set utl_file_dir='*' scope=spfile;
alter system set open_links=4 scope=spfile;
执行完毕后重启数据库。
3.2 将数据库置为归档模式
设置log_archive_dest_1到相应的位置;设定log_archive_start为TRUE,即启用自动归档功能;设定log_archive_format指定归档日志的命令格式。
举例:
sqlplus ‘/ as sysdba’
alter system set log_archive_dest_1=’location=/yang/arch’ scope=spfile;
alter system set log_archive_start=TRUE scope=spfile;
alter system set log_archive_format=’ arch%t_%s_%r.arc’ scope=spfile;
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
数据库置为归档模式后,可以按如下方式检验一下:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /yang/arch
Oldest online log sequence 534
Next log sequence to archive 536
Current log sequence 536
观注标红的部分。
3.3 创建stream 管理用户
3.3.1 创建主环境stream管理用户
#以sysdba身份登录
connect / as sysdba
#创建主环境的Stream专用表空间
create tablespace tbs_stream datafile '/yang/oradata/prod/tbs_stream01.dbf'
size 100m autoextend on maxsize unlimited segment space management auto;
#将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间
execute dbms_logmnr_d.set_tablespace('tbs_stream');
#创建Stream管理用户
create user strmadmin identified by strmadmin
default tablespace tbs_stream temporary tablespace temp;
#授权Stream管理用户
grant connect,resource,dba,aq_administrator_role to strmadmin;
begin
dbms_streams_auth.grant_admin_privilege(
grantee => 'strmadmin',
grant_privileges => true);
end;
/
3.3.2 创建从环境stream管理用户
#以sysdba身份登录
connect / as sysdba
#创建Stream专用表空间,我的从库用了ASM,这一步也可以参见3.3.1
create tablespace tbs_stream datafile '+VGDATA/h10g/datafile/tbs_stream01.dbf'
size 100m autoextend on maxsize unlimited segment space management auto;
#同样,将logminer的数据字典从system表空间转移到新建的表空间,防止撑满system表空间
execute dbms_logmnr_d.set_tablespace('tbs_stream');
#创建Stream管理用户
create user strmadmin identified by strmadmin
default tablespace tbs_stream temporary tablespace temp;
#授权Stream管理用户
grant connect,resource,dba,aq_administrator_role to strmadmin;
begin
dbms_streams_auth.grant_admin_privilege(
grantee => 'strmadmin',
grant_privileges => true);
end;
/
3.4 配置网络连接
3.4.1配置主环境tnsnames.ora
主数据库(tnsnames.ora)中添加从数据库的配置。
H10G =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.43)(PORT = 1521))
)
(CONNECT_DATA =
(SID = h10g)
(SERVER = DEDICATED)
)
)
3.4.2配置从环境tnsnames.ora
从数据库(tnsnames.ora)中添加主数据库的配置。
PROD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.35)(PORT = 1521))
)
(CONNECT_DATA =
(SID = prod)
(SERVER = DEDICATED)
)
)3.5 启用追加日志
可以基于Database级别或Table级别,启用追加日志(Supplemental Log)。在建立根据Schema粒度进行复制的Oracle Stream环境中,如果确认Schema下所有Table都有合理的主键(Primary Key),则不再需要启用追加日志。
#启用Database 追加日志
alter database add supplemental log data;
#启用Table追加日志
alter table add supplement log group log_group_name(table_column_name) always;
3.6 创建DBlink
根据Oracle 10gR2 Stream官方文档,针对主数据库建立的数据库链的名字必须和从数据库的global_name相同。
如果需要修改global_name,执行“alter database rename global_name to xxx”。
3.6.1创建主数据库数据库链
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
#建立数据库链
create database link h10g connect to strmadmin identified by strmadmin using 'h10g';
3.6.2创建从数据库数据库链
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
#建立数据库链
create database link prod connect to strmadmin identified by strmadmin using 'prod';
3.7 创建流队列
3.7.1创建Master流队列
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.set_up_queue(
queue_table => 'prod_queue_table',
queue_name => 'prod_queue');
end;
/
3.7.2创建Backup流队列
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.set_up_queue(
queue_table => 'h10g_queue_table',
queue_name => 'h10g_queue');
end;
/
3.8 创建捕获进程
#以strmadmin身份,登录主数据库。提醒一下,本文档以hr用户做示例。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_rules(
schema_name => 'hr',
streams_type => 'capture',
streams_name => 'capture_prod',
queue_name => 'strmadmin.prod_queue',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => null,
inclusion_rule => true);
end;
/
3.9 实例化复制数据库
在主数据库环境中,执行如下Shell语句。如果从库的hr用户不存在,建立一个hr的空用户。
exp userid=hr/hr@prod file='/tmp/hr.dmp' object_consistent=y rows=y
imp userid=system/manager@h10g file='/tmp/hr.dmp' ignore=y commit=y log='/tmp/hr.log' streams_instantiation=y fromuser=hr touser=hr
3.10 创建传播进程
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_propagation_rules(
schema_name => 'hr',
streams_name => 'prod_to_h10g',
source_queue_name => 'strmadmin.prod_queue',
destination_queue_name => 'strmadmin.h10g_queue@h10g',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => 'prod',
inclusion_rule => true);
end;
/
#修改propagation休眠时间为0,表示实时传播LCR。
begin
dbms_aqadm.alter_propagation_schedule(
queue_name => 'prod_queue',
destination => 'h10g',
latency => 0);
end;
/
3.11 创建应用进程
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_rules(
schema_name => 'hr',
streams_type => 'apply',
streams_name => 'apply_h10g',
queue_name => 'strmadmin.h10g_queue',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => 'prod',
inclusion_rule => true);
end;
/
3.12 启动STREAM
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
#启动Apply进程
begin
dbms_apply_adm.start_apply(
apply_name => 'apply_h10g');
end;
/
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
#启动Capture进程
begin
dbms_capture_adm.start_capture(
capture_name => 'capture_prod');
end;
/
3.13 停止STREAM
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
#停止Capture进程
begin
dbms_capture_adm.stop_capture(
capture_name => 'capture_prod');
end;
/
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
#停止Apply进程
begin
dbms_apply_adm.stop_apply(
apply_name => 'apply_h10g');
end;
/
3.14 清除所有配置信息
要清楚Stream配置信息,需要先执行3.13,停止Stream进程。
#以strmadmin身份,登录主数据库。
connect strmadmin/strmadmin
exec DBMS_STREAMS_ADM.remove_streams_configuration();
#以strmadmin身份,登录从数据库。
connect strmadmin/strmadmin
exec DBMS_STREAMS_ADM.remove_streams_configuration();5 问题诊断
5.1 如何知道捕捉(Capture)进程是否运行正常?
以strmadmin身份,登录主数据库,执行如下语句:
SQL> SELECT CAPTURE_NAME,
2 QUEUE_NAME,
3 RULE_SET_NAME,
4 NEGATIVE_RULE_SET_NAME,
5 STATUS
6 FROM DBA_CAPTURE;
结果显示如下:
CAPTURE_NAME QUEUE_NAME
------------------------------ ------------------------------
RULE_SET_NAME NEGATIVE_RULE_SET_NAME STATUS
------------------------------ ------------------------------ --------
CAPTURE_PROD PROD_QUEUE
RULESET$_14 ENABLED
ENABLED
如果STATUS状态是ENABLED,表示Capture进程运行正常;
如果STATUS状态是DISABLED,表示Capture进程处于停止状态,只需重新启动即可;
如果STATUS状态是ABORTED,表示Capture进程非正常停止,查询相应的ERROR_NUMBER、ERROR_MESSAGE列可以得到详细的信息;同时,Oracle会在跟踪文件中记录该信息。
5.2 如何知道Captured LCR是否有传播GAP?
以strmadmin身份,登录主数据库,执行如下语句:
SQL> SELECT CAPTURE_NAME, QUEUE_NAME, STATUS, CAPTURED_SCN, APPLIED_SCN
2 FROM DBA_CAPTURE;
结果显示如下:
CAPTURE_NAME QUEUE_NAME STATUS
------------------------------ ------------------------------ --------
CAPTURED_SCN APPLIED_SCN
------------ -----------
CAPTURE_PROD PROD_QUEUE ENABLED
17023672 17023672
如果APPLIED_SCN小于CAPTURED_SCN,则表示在主数据库一端,要么LCR没有被dequeue,要么Propagation进程尚未传播到从数据库一端。
5.3 如何知道Appy进程是否运行正常?
以strmadmin身份,登录从数据库,执行如下语句:
SQL> SELECT apply_name, apply_captured, status FROM dba_apply;
结果显示如下:
APPLY_NAME APPLY_ STATUS
---------------------- ------ ----------------
APPLY_H10G YES ENABLED
如果STATUS状态是ENABLED,表示Apply进程运行正常;
如果STATUS状态是DISABLED,表示Apply进程处于停止状态,只需重新启动即可;
如果STATUS状态是ABORTED,表示Apply进程非正常停止,查询相应的ERROR_NUMBER、ERROR_MESSAGE列可以得到详细的信息;同时,可以查询DBA_APPLY_ERROR视图,了解详细的Apply错误信息。--End--
如果占80%以上,建议全库做异机恢复,然后再将归档日志文件拷贝过去recover database..
这样对业务无影响(无须中断),等到切换的时候操作也简单.
只做过RMAN的整数据库异机恢复,单表空间的迁移没试过,
再移植到新的数据库上去。