逻辑Stannby无法启动实时应用的解决思路:
首先需要做的是查看一下DG环境中的启动模式,SQL实时应用支持在最高性能和最大可用模式,不支持在最大保护模式的环境中;因为最大保护模式为确保不丢失任何数据,primary上的事务在commit前必须确认REDO已经传递到至少一个standby上。
查看DG的模式:
SQL> set sqlprompt 'PRIMARY > '
PRIMARY > select NAME,DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;
NAME DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
--------- ---------------- -------------------- --------------------
ORCL PRIMARY MAXIMUM AVAILABILITY RESYNCHRONIZATION
当前的为模式MAXIMUM AVAILABILITY(最大可用模式),无需修改,若发现为MAXIMIZE PROTECTION(最大保护模式),需启动数据库到mount状态修改一下数据库的模式:
PRIMARY > shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
PRIMARY > startup mount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 62916852 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
Database mounted.
PRIMARY > alter database set standby database to maximize availability;
Database altered.
最大性能模式对应的是maximize performance
PRIMARY > select NAME,DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;
NAME DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
--------- ---------------- -------------------- --------------------
ORCL PRIMARY MAXIMUM AVAILABILITY UNPROTECTED
PRIMARY > alter database open;
Database altered.
查看日志传输方式:确保由LGWR传输日志至STANDBY
PRIMARY > select DEST_NAME,STATUS,TYPE,ARCHIVER from v$archive_dest;
DEST_NAME STATUS TYPE ARCHIVER
---------------------------------------- --------- ------- ----------
LOG_ARCHIVE_DEST_1 VALID PUBLIC ARCH
LOG_ARCHIVE_DEST_2 VALID PUBLIC LGWR
LOG_ARCHIVE_DEST_3 INACTIVE PUBLIC ARCH
LOG_ARCHIVE_DEST_4 INACTIVE PUBLIC ARCH
LOG_ARCHIVE_DEST_5 INACTIVE PUBLIC ARCH
LOG_ARCHIVE_DEST_6 INACTIVE PUBLIC ARCH
LOG_ARCHIVE_DEST_7 INACTIVE PUBLIC ARCH
LOG_ARCHIVE_DEST_8 INACTIVE PUBLIC ARCH
LOG_ARCHIVE_DEST_9 INACTIVE PUBLIC ARCH
LOG_ARCHIVE_DEST_10 INACTIVE PUBLIC ARCH
PRIMARY > show parameter archive_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string location=/u01/log/arch_locatio
n
log_archive_dest_10 string
log_archive_dest_2 string service=orcl_s_tns lgwr valid_
for=(online_logfiles,primary_r
ole) db_unique_name=orcl_std
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
如发现不是LGWR,而是ARCH传输,需修改一下日志传输方式:
SQL> alter system set log_archive_dest_2='service=orcl_s_tns lgwr valid_for=(online_logfiles,primary_role) db_unique_name=orcl_std';
System altered.
细节方便可以根据以下视图查看SQL应用信息:
v$logstdby_state
SQL> select * from v$logstdby_state;
PRIMARY_DBID SESSION_ID REALTIME_APPLY STATE
------------ ---------- -------------------- --------------------
1369377775 1 Y APPLYING
dba_logstdby_events记录逻辑standby的操作日志,默认情况下记录一百条消息
SQL> desc dba_logstdby_events;
Name Null? Type
----------------------------------------- -------- ----------------------------
EVENT_TIME DATE
EVENT_TIMESTAMP TIMESTAMP(6)
CURRENT_SCN NUMBER
COMMIT_SCN NUMBER
XIDUSN NUMBER
XIDSLT NUMBER
XIDSQN NUMBER
EVENT CLOB
STATUS_CODE NUMBER
STATUS VARCHAR2(2000)
dba_logstdby_log记录当前重做日志应用情况
SQL> desc dba_logstdby_log;
Name Null? Type
----------------------------------------- -------- ----------------------------
THREAD# NOT NULL NUMBER
RESETLOGS_CHANGE# NOT NULL NUMBER
RESETLOGS_ID NOT NULL NUMBER
SEQUENCE# NOT NULL NUMBER
FIRST_CHANGE# NOT NULL NUMBER
NEXT_CHANGE# NUMBER
FIRST_TIME DATE
NEXT_TIME DATE
FILE_NAME VARCHAR2(513)
TIMESTAMP DATE
DICT_BEGIN VARCHAR2(3)
DICT_END VARCHAR2(3)
APPLIED VARCHAR2(8)
等等..
温馨提示:重启系统后别忘了开监听…
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29320885/viewspace-1107156/ ,如需转载,请注明出处,否则将追究法律责任。