ORA-48167: invalid argument for checking ADR initialization

文档解释

ORA-48167: invalid argument for checking ADR initialization

Cause: Invalid arguments were specified for the routine to check ADR initialization.

Action: Check the inputs to the ADR initialization routine.

ORA-48167: invalid argument for checking ADR initialization 错误指的是检查Automatic Diagnostic Repository (ADR)初始化的调用中使用的参数不正确。

官方解释

ORA-48167: invalid argument for checking ADR initialization

Cause: An invalid argument was supplied to the check for ADR initialization.

Action: Supply a valid argument for checking ADR initialization.

常见案例

一般情况下,当检查ADR初始状态时会出现ORA-48167错误,如:

SQL> alter session set container=ORCLPDB1;

Session altered.

SQL> show parameter control

NAME TYPE VALUE

———————————— ———– ——————————

control_files string /u01/app/oracle/oradata/ORCL/control01.ctl

SQL> show parameter adr

NAME TYPE VALUE

———————————— ———– ——————————

diagnostic_dest string /u01/app/oracle/diag/rdbms/orcl/ORCL

adr_base string

SQL> execute dbms_diagnostics.check_adr_base(diag_dest=>’not_set’);

BEGIN dbms_diagnostics.check_adr_base(diag_dest=>’not_set’); END;

*

ERROR at line 1:

ORA-48167: invalid argument for checking ADR initialization

一般处理方法及步骤

1.正确指定ADR基础路径

检查并修改ADR_BASE。可以使用如下语句获取ADR_BASE,确保其显示在spfile指定的初始化参数文件中(通常spfile+SID.ora):

SQL> SHOW PARAMETER adr_base

如果ADR_BASE没有设置,可以使用以下语句指定ADR路径:

SQL> ALTER SYSTEM SET adr_base=’/u01/app/oracle/diag’ SCOPE=SPFILE;

笔者一般建议在ADR_BASE参数中设定与DIAGNOSTIC_DEST相同的值,如:

SQL> ALTER SYSTEM SET adr_base=’/u01/app/oracle/diag/rdbms/orcl/ORCL’ SCOPE=SPFILE;

2.重启数据库

为了使上述更改生效,重启数据库实例(当然,可以改为重载初始化参数,但建议重启数据库实例):

SQL> SHUTDOWN IMMEDIATE;

数据库关闭完成后,重新启动实例:

SQL> STARTUP;

3.再次检查ADR基础路径

此时确认ADR_BASE是否已正确指定:

SQL> SHOW PARAMETER adr_base

4.测试检查命令

再次执行检查命令,看是否测试是否通过:

SQL> execute dbms_diagnostics.check_adr_base(diag_dest=>’not_set’);

PL/SQL procedure successfully completed.

你可能感兴趣的