现象:
On Primary:
TMON (PID:19260): Process (PID:9074) hung on an I/O to LAD:2 after 260 seconds with threshold of 240 at [krsu.c:10192] <<<<<<<<<<<<
TMON (PID:19260): WARN: Terminating process hung on an operation (PID:9074) <<<<<<<<<<<<<<
TMON (PID:19260): Error 16198 due to hung I/O operation to LOG_ARCHIVE_DEST_2 <<<<<<<<<<<<<<
TMON (PID:19260): Detected ARCH process failure
ARCg (PID:12819): FAIL: Reclaiming FAL entry from dead process (PID:9074) <<<<<<<<<<<<<<<
ARCg (PID:12819): FAL archive failed with error 16198 (see trace for details) <<<<<<<
ARCg (PID:12819): FAL archive failed, archiver continuing
ORA-16055: FAL request rejected <<<<<<<<
原因:
The reason for frequent "ORA-16055: FAL request rejected" are:
1. Wrong value set for VALID_FOR "(ALL_ROLES,ONLINE_LOGFILE)" clause on LOG_ARCHIVE_DEST_1 at primary and standby.
2. Value for max_connections was set to more than 1. In this case, it was set to max_connections=3 for LOG_ARCHIVE_DEST_2 at primary.
3. At standby, LOG_ARCHIVE_DEST_2 was set separately with VALID_FOR clause (STANDBY_LOGFILE,STANDBY_ROLE) which is not required as the LOG_ARCHIVE_DEST_1 with VALID_FOR (ALL_ROLES,ONLINE_LOGFILE) will handle both online and standby redo logs when the role changes.
Old Primary Config:
======================
* log_archive_dest_1 LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_ROLES,ONLINE_LOGFILE)
* log_archive_dest_2 SERVICE=STANDBY_SERVICE_NAME ARCH ASYNC NOAFFIRM delay=0 OPTIONAL max_failure=0 max_connections=3 reopen=300 db_unique_name="standby_db_unique_name" register net_timeout=180 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
Old Standby Config:
======================
* log_archive_dest_1 LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_ROLES,ONLINE_LOGFILE)
* log_archive_dest_2 LOCATION=+XX_FRA/STANDBY_DB_NAME/ARCHIVELOG valid_for=(STANDBY_LOGFILE,STANDBY_ROLE)
处理方法:
Making the below configuration changes should resolve the "ORA-16055: FAL request rejected" and "FAL archive failed with error 16198".
@Primary:
alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary_db_unique_name' sid='*' scope=both;
alter system set log_archive_dest_2='SERVICE=standby_service_name ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby_db_unique_name' sid='*' scope=both;
@Standby:
alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby_db_unique_name' sid='*' scope=both;
alter system set log_archive_dest_2='' sid='*' scope = both;
|