单实例数据库环境,日志报错:ORA-07445:[apaneg()+227]、ORA-07445:[kkqcsnlocbk()+97],解决方法关闭SQL Tuning Advisor或者设置参数alter system set "_no_or_expansion" = true;。具体日志等如下:
1.数据库alert日志中报错
$ cat alert_oradb.log |grep ORA-07445
ORA-07445: exception encountered: core dump [kkqcsnlocbk()+97] [SIGSEGV] [ADDR:0x0] [PC:0x24C6289] [Address not mapped to object] []
ORA-07445: exception encountered: core dump [apaneg()+227] [SIGSEGV] [ADDR:0x8] [PC:0x21607D1] [Address not mapped to object] []
ORA-07445: exception encountered: core dump [kkqcsnlocbk()+97] [SIGSEGV] [ADDR:0x0] [PC:0x24C6289] [Address not mapped to object] []
---
Wed May 09 22:26:53 2018
VKRM started with pid=31, OS id=4874
Wed May 09 22:26:56 2018
Begin automatic SQL Tuning Advisor run for special tuning task "SYS_AUTO_SQL_TUNING_TASK"
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x0] [PC:0x24C6289, kkqcsnlocbk()+97] [flags: 0x0, count: 1]
Errors in file /u01/app/oracle/diag/rdbms/oradb/oradb/trace/oradb_j000_4878.trc (incident=96321):
ORA-07445: exception encountered: core dump [kkqcsnlocbk()+97] [SIGSEGV] [ADDR:0x0] [PC:0x24C6289] [Address not mapped to object] []
Incident details in: /u01/app/oracle/diag/rdbms/oradb/oradb/incident/incdir_96321/oradb_j000_4878_i96321.trc
2.查看相应的trace报错文件
--主要就是在MODULE NAME:(DBMS_SCHEDULER)做/* SQL Analyze(1142,1) */
Unix process pid: 28431, image: (J002)
*** 2018-05-06 18:13:30.848
*** SESSION ID:(1142.133) 2018-05-06 18:13:30.848
*** CLIENT ID:() 2018-05-06 18:13:30.848
*** SERVICE NAME:(SYS$USERS) 2018-05-06 18:13:30.848
*** MODULE NAME:(DBMS_SCHEDULER) 2018-05-06 18:13:30.848
*** ACTION NAME:(ORA$AT_SQ_SQL_SW_12) 2018-05-06 18:13:30.848
Dump continued from file: /u01/app/oracle/diag/rdbms/oradb/oradb/trace/oradb_j002_28431.trc
ORA-07445: exception encountered: core dump [apaneg()+227] [SIGSEGV] [ADDR:0x8] [PC:0x21607D1] [Address not mapped to object] []
========= Dump for incident 80282 (ORA 7445 [apaneg()+227]) ========
----- Beginning of Customized Incident Dump(s) -----
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x8] [PC:0x21607D1, apaneg()+227] [flags: 0x0, count: 1]
Registers:
………………
*** 2018-05-06 18:13:30.852
dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x3, level=3, mask=0x0)
----- Current SQL Statement for this session (sql_id=f0z6ybsa0d8yy) -----
/* SQL Analyze(1142,1) */ select * from ( wi………………)) select ali.c_loanaccountcode
3.解决方法:
关闭SQL Tuning Advisor或者设置参数alter system set "_no_or_expansion" = true;。 参考文档: ORA-7445 [apaneg] (文档 ID 1994477.1) Bug 18758878 - Automatic SQL tuning advisor fails with ORA-7445 [apaneg] (文档 ID 18758878.8) ---ID 18758878.8中的解决方法如下: Description Automatic SQL tuning advisor may fail with an ORA-7445 [apaneg]. Workaround Disable OR expansion using below parameter: alter system set "_no_or_expansion" = true;
我这里就简单粗暴的关闭了自动sql tuning advisor功能,关闭过程如下:
SQL> exec dbms_auto_task_admin.disable(client_name=>'sql tuning advisor',operation=>null,window_name=>null);
PL/SQL procedure successfully completed.
SQL> select client_name,status from DBA_AUTOTASK_CLIENT;
CLIENT_NAME STATUS
-------------------------------- --------
auto optimizer stats collection ENABLED
auto space advisor ENABLED
sql tuning advisor DISABLED
SQL> select window_name,autotask_status,OPTIMIZER_STATS,SEGMENT_ADVISOR,SQL_TUNE_ADVISOR from dba_autotask_window_clients;
WINDOW_NAME AUTOTASK OPTIMIZE SEGMENT_ SQL_TUNE
------------------------------ -------- -------- -------- --------
MONDAY_WINDOW ENABLED ENABLED ENABLED DISABLED
TUESDAY_WINDOW ENABLED ENABLED ENABLED DISABLED
WEDNESDAY_WINDOW ENABLED ENABLED ENABLED DISABLED
THURSDAY_WINDOW ENABLED ENABLED ENABLED DISABLED
FRIDAY_WINDOW ENABLED ENABLED ENABLED DISABLED
SATURDAY_WINDOW ENABLED ENABLED ENABLED DISABLED
SUNDAY_WINDOW ENABLED ENABLED ENABLED DISABLED
7 rows selected.