ORCL PRIMARY MAXIMUM PERFORMANCE TO STANDBY
上述结果显示:主库db_unique_name为 SLJJ;角色为主库;保护模式为最大性能;切换状态为可以切备库。
step 2.主库上查看设置的归档日志路径是否可用
SQL> select dest_name,status,error from v$archive_dest;
该视图用户查看本地和远程的归档日志路径是否可用,如果远程的归档日志路径不可用,在ERROR列会有相应报错
step 3.主库上查看DG的状态信息
SQL> set linesize 300
SQL> set pagesize 1000
SQL> col message for a100
SQL> select to_char(timestamp,'DD-mm-YYYY HH24:MI:SS') time,message FROM v$dataguard_status;
......
MESSAGE
--------------------------------------------------------------------------------
MRP0: Background Media Recovery process shutdown
ARC3: Beginning to archive thread 1 sequence 78376 (22999090901-22999329239)
ARC3: Completed archiving thread 1 sequence 78376 (0-0)
256 rows selected.
SQL>
step 4.主库上查看DG环境进程的状态
SQL> select PROCESS,STATUS from v$managed_standby;
SQL> set linesize 300
SQL> set pagesize 1000
SQL> col message for a100
SQL> select message_num,message from v$dataguard_status;
step 3. 备库端查看日志是否应用
SQL> select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
如果发现备库归档日志的编号不连续,则需要到主库去对照主库的归档日志编号,找到主库上已经归档但却没有同步到备库上的那些归档日志手动拷贝过来,并将其注册到备库内,注册归档日志的命令如下所示:
SQL> alter database register physical logfile '/u01/app/oracle/archivelog/’
然后再重新开启备库的应用归档日志进程
step 4.备库上查看归档日志有没有断档
SQL> select * from v$archive_gap;
如果DG环境日志同步正常,则不会查到任何记录。如果查出结果,则说明目前的DG环境归档日志传递有断档。
3.解决办法
停止redo apply
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
oracle data guard 备库启停日志应用
dg broker 启用日志同步
DGMGRL> edit database sljj2dg set state='apply-on';
Succeeded.
DGMGRL>
在Dataguard的备库上应用日志的时候,通常有两个语句,但是这两个语句是有区别的,一个是实时应用,一个是非实时应用。
alter database recover managed standby database disconnect from session;(非实时应用)
alter database recover managed standby database using current logfile disconnect;(实时应用)
启用日志应用,该问题未得到解决。查看告警日志如下:
<msg time='2025-05-26T09:13:51.491+08:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
host_id='jcpt-database' host_addr='92.236.125.173' module=''
pid='27957'>
<txt>Errors in file /u01/app/oracle/diag/rdbms/sljj2dg/sljj/trace/sljj_dbw0_27957.trc:
ORA-01186: file 334 failed verification tests
ORA-01157: cannot identify/lock data file 334 - see DBWR trace file
ORA-01111: name for data file 334 is unknown - rename to correct file
ORA-01110: data file 334: '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00334'
</txt>
</msg>
<msg time='2025-05-26T09:13:51.491+08:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
host_id='jcpt-database' host_addr='92.236.125.173' module=''
pid='27957'>
<txt>File 334 not verified due to error ORA-01157
</txt>
</msg>
<msg time='2025-05-26T09:13:51.491+08:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
host_id='jcpt-database' host_addr='92.236.125.173' module=''
pid='27957'>
<txt>Errors in file /u01/app/oracle/diag/rdbms/sljj2dg/sljj/trace/sljj_dbw0_27957.trc:
ORA-01186: file 2001 failed verification tests
ORA-01157: cannot identify/lock data file 2001 - see DBWR trace file
ORA-01110: data file 2001: '+DATA'
</txt>
</msg>
<msg time='2025-05-26T09:13:51.491+08:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
host_id='jcpt-database' host_addr='92.236.125.173' module=''
pid='27957'>
<txt>File 2001 not verified due to error ORA-01157
</txt>
</msg>
<msg time='2025-05-26T09:13:55.996+08:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
host_id='jcpt-database' host_addr='92.236.125.173' module=''
pid='2823'>
<txt>MRP0: Background Media Recovery terminated with error 1111
</txt>
</msg>
<msg time='2025-05-26T09:13:55.996+08:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
host_id='jcpt-database' host_addr='92.236.125.173' module=''
pid='2823'>
<txt>Errors in file /u01/app/oracle/diag/rdbms/sljj2dg/sljj/trace/sljj_pr00_2823.trc:
ORA-01111: name for data file 334 is unknown - rename to correct file
ORA-01110: data file 334: '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00334'
ORA-01157: cannot identify/lock data file 334 - see DBWR trace file
ORA-01111: name for data file 334 is unknown - rename to correct file
ORA-01110: data file 334: '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00334'
</txt>
</msg>
出现问题,描述如下:
根据报错信息可以初步判断334号数据文件没有创建成功,也就是主库添加的数据文件在备库创建失败。
4.解决问题
step 1.停止redo apply
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL
*
ERROR at line 1:
ORA-16136: Managed Standby Recovery not active
SQL>
由于该问题,导致日志应用无法正常启动。
step 2.将备库启动到mount状态
SQL> select name,open_mode,database_role from v$database;
NAME OPEN_MODE DATABASE_ROLE
--------- -------------------- ----------------
SLJJ MOUNTED PHYSICAL STANDBY
SQL>
step 3.将standby_file_management改为 manual
SQL> alter system set standby_file_management=manual;
System altered.
SQL> show parameter standby
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest string ?/dbs/arch
standby_file_management string MANUAL
step 4.主库检查334号数据文件
SQL> select file#,name from v$datafile where file#=334;
FILE# NAME
--------------------------------------------------------------------------------
334 +FRA/sljj/datafile/rm_index.12427.1198592895
SQL>
step 5.备库使用create datafile as方式创建数据文件
SQL> select file#,name from v$datafile where file#=334;
FILE# NAME
--------------------------------------------------------------------------------
334 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00334
SQL>
SQL> alter database create datafile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00334' as '/u01/app/oracle/oradata/sljj/rm_index.12427.1198592895';
Database altered.
SQL> select file#,name from v$datafile where file#=334;
FILE# NAME
--------------------------------------------------------------------------------
334 /u01/app/oracle/oradata/sljj/rm_index.12427.1198592895
SQL>
step 6.修改standby_file_management参数为auto
SQL> alter system set standby_file_management=auto;
System altered.
SQL> show parameter standby
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_archive_dest string ?/dbs/arch
standby_file_management string AUTO
step 7.开启MRP,检查数据同步情况
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
step 8.查看日志应用进程
SQL> select process,status,thread#,sequence#,block# from v$managed_standby;