oracle dg 状态检查session
先检查备库的归档日志同步状况 oracle
SELECT NAME,applied FROM v$archived_log; app
alter database recover managed standby database cancel;spa
select thread#,sequence#,standby_dest,archived,applied,status from v$archived_log order by 1,2;
日志
alter database recover managed standby database using current logfile disconnect from session;xml
.在备库 查看gap进程
1. select * from v$archive_gap;ip
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
get
查看主库的基本信息:同步
SYS@enmo1 hey~1->select open_mode,protection_mode,database_role,switchover_status from v$database;
OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER_STATUS
-------------------- ----------------------------- ------------------------ ------------------------
READ WRITE MAXIMUM PERFORMANCE PRIMARY TO STANDBY
查看备库的基本信息:
SYS@enmo2 hey~2->select open_mode,protection_mode,database_role,switchover_status from v$database;
OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER_STATUS
------------------------- ----------------------------- ------------------------ ------------------------
READ ONLY WITH APPLY MAXIMUM PERFORMANCE PHYSICAL STANDBY NOT ALLOWED
备库应用日志保持和主库数据一致(若是不一致,执行以下语句应用日志)
SYS@enmo2 hey~2->recover managed standby database using current logfile disconnect from session;
Media recovery complete.
SYS@enmo2 hey~2->recover managed standby database cancel;
Media recovery complete.
主库切换到备库角色并查看切换以后的状态为RECOVERY NEEDED
SYS@enmo1 hey~1->alter database commit to switchover to physical standby with session shutdown;
Database altered.
SYS@enmo1 hey~1->shutdown abort;
ORACLE instance started.
Total System Global Area 830930944 bytes
Fixed Size 2257800 bytes
Variable Size 700451960 bytes
Database Buffers 121634816 bytes
Redo Buffers 6586368 bytes
Database mounted.
SYS@enmo1 hey~1->select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
RECOVERY NEEDED
切换应用日志,而后在查看切换状态为TO primary正常:
SYS@enmo1 hey~1->recover managed standby database using current logfile disconnect from session;
Media recovery complete.
SYS@enmo1 hey~1->select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO PRIMARY
备库切主库:
SYS@enmo2 hey~2->select open_mode,protection_mode,database_role,switchover_status from v$database;
OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER_STATUS
-------------------- -------------------- ---------------- --------------------
MOUNTED MAXIMUM PERFORMANCE PHYSICAL STANDBY TO PRIMARY
SYS@enmo2 hey~2->alter database commit to switchover to primary with session shutdown;
Database altered.
SYS@enmo2 hey~2->alter database open;
Database altered.
SYS@enmo2 hey~2->select switchover_status,database_role from v$database;
SWITCHOVER_STATUS DATABASE_ROLE
-------------------- ----------------
FAILED DESTINATION PRIMARY
SYS@enmo2 hey~2->select open_mode,protection_mode,database_role from v$database;
OPEN_MODE PROTECTION_MODE DATABASE_ROLE
-------------------- -------------------- ----------------
READ WRITE MAXIMUM PERFORMANCE PRIMARY
2、备库不一样步的问题检查方法
一、检查主备两边的序号
select max(sequence#) from v$log; ---检查发现一致
二、备库执行,查看是否有数据未应用
select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
select SEQUENCE#,FIRST_TIME,NEXT_TIME ,APPLIED from v$archived_log order by 1;
三、检查备库是否开启实时应用
select recovery_mode from v$archive_dest_status where dest_id=2;
四、检查备库状态
select switchover_status from v$database; --发现状态not allowed
三、看看进程MRP是否存在
ps aux|grep mrp --发现进程不存在
四、若是不存在执行如下:
alter database recover managed standby database using current logfile disconnect;
alter database recover managed standby database disconnect from session; --后台执行
alter database recover managed standby database --前台执行,执行这个能够看到报错的状况
若是有报错,查看alert日志和log.xml日志
五、验证是否正常
select process,status from v$managed_standby;
select process,status,sequence# from v$managed_standby;
若是看到mrp0正常
六、以上步骤处理好后,若是数据还不正常,接着处理
关闭备库,接着处理:
把主库上 undotbs01.dbf 文件,物理的重拷到备库机上之前undotbs01.dbf 所在目录下;
$scp /data/oracle/oradata/voip/undotbs01.dbf 192.168.122.204:/data/oracle/oradata/voip
再在主库上从新生成一个standby control file ,拷到备库机上相应目录下,
alter database create standby controlfile as '/data/oracle/oradata/voip/qyqdg01.ctl'
$scp /data/oracle/oradata/voip/qyqdg01.ctl 192.168.122.204:/data/oracle/oradata/voip
$ mv qyqdg01.ctl control01.ctl
$ cp control01.ctl /data/oracle/flash_recovery_area/qyq/
$cd /data/oracle/flash_recovery_area/qyq/
$ mv control01.ctl control02.ctl
接着
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
--------------------------------------
session恢复完成后,重启打开备库;
alter database open read only;