Oralce数据导入出现(SYSTEM.PROC_AUDIT)问题处理方法_Oracle教程-查字典教程网
Oralce数据导入出现(SYSTEM.PROC_AUDIT)问题处理方法
Oralce数据导入出现(SYSTEM.PROC_AUDIT)问题处理方法
发布时间:2016-12-28 来源:查字典编辑
摘要:将A数据的USERNAME用户的数据导出后,再导入到B数据库中的USERNAME时,在USERNAME用户下在执行表数据查询时出现如下问题:...

将A数据的USERNAME用户的数据导出后,再导入到B数据库中的USERNAME时,在USERNAME用户下在执行表数据查询时出现如下问题:

ORA-06550: 第 1 行, 第 7 列:

PLS-00201: 必须声明标识符 'SYSTEM.PROC_AUDIT'

ORA-06550: 第 1 行, 第 7 列:

PL/SQL: Statement ignored

出现这个问题是由于A数据库打开了审计,而导入到B数据库时,B数据库审计没有打开,数据库中没有SYSTEM.PROC_AUDIT对象,导致上述问题.

问题解决过程如下:

1)以sysdba登录数据库:

D:UsersAdministrator>sqlplus / as sysdba

2) 显示当前审计参数:

SQL> show parameter audit;

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

audit_file_dest string J:APPADMINISTRATORADMINORC

LADUMP

audit_sys_operations boolean FALSE

audit_trail string DB

3) 启用审计.

SQL> alter system set audit_sys_operations=TRUE scope=spfile;

系统已更改。

4)查看新的状态,还是显示审计操作没打开,需重新启动数据库:

SQL> show parameter audit;

NAME TYPE VALUE

------------------------------------ ----------- --------------------------

audit_file_dest string J:APPADMINISTRATORADMIN

LADUMP

audit_sys_operations boolean FALSE

audit_trail string DB

5)重启数据库

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area 3056513024 bytes

Fixed Size 2179656 bytes

Variable Size 1644170680 bytes

Database Buffers 1392508928 bytes

Redo Buffers 17653760 bytes

数据库装载完毕。

数据库已经打开。

6)重新查看审计状态,审计已打开.

SQL> show parameter audit;

NAME TYPE VALUE

------------------------------------ ----------- --------------------------

audit_file_dest string J:APPADMINISTRATORADMIN

LADUMP

audit_sys_operations boolean TRUE

audit_trail string DB

SQL> conn USERNAME/PWDXXXXXX;

已连接。

7)查询表数据,错误依然,但错误换成了SYSTEM.PROC_AUDIT无效:

SQL> select * from corporationhot;

select * from corporationhot

*

第 1 行出现错误:

ORA-06550: 第 1 行, 第 14 列:

PLS-00905: 对象 SYSTEM.PROC_AUDIT 无效

ORA-06550: 第 1 行, 第 7 列:

PL/SQL: Statement ignored

8)将对象SYSTEM.PROC_AUDIT授权给USERNAME.

SQL> grant execute on SYSTEM.PROC_AUDIT TO USERNAME;

授权成功。

9)再次以USERNAME登录,执行数据表查询,提示对象 SYSTEM.PROC_AUDIT 无效;因为对象已经授权,出现这种状况可能是对象有错误.

SQL> conn USERNAME/PWDXXXXXX;

已连接。

SQL> select * from TABLENAME;

select * from TABLENAME *

第 1 行出现错误:

ORA-06550: 第 1 行, 第 14 列:

PLS-00905: 对象 SYSTEM.PROC_AUDIT 无效

ORA-06550: 第 1 行, 第 7 列:

PL/SQL: Statement ignored

10) 找到SYSTEM.PROC_AUDIT存储过程,发现有编译错误,提示sys.v_$sql,v$sql_bind_capture,sys.v_$session为无

效标识符,由于上述对象是存在的,而且可以查询,因此怀疑是权限设置问题,做如下授权:

SQL> conn / as sysdba;

已连接。

SQL> grant all on sys.v_$sql to system

2 ;

授权成功。

SQL> grant all on v$sql_bind_capture to system;

授权成功。

SQL> grant all on sys.v_$session to system;

授权成功。

11)SYSTEM.PROC_AUDIT编译通过后,以USERNAME登录数据库,查看表数据恢复正常,问题解决.

为了验证错误是不是导出时审计是开的,导入时审计未打开所致,重新将审计关闭:

SQL> alter system set audit_sys_operations=FALSE scope=spfile;

系统已更改。

SQL> restart;

SP2-0042: 未知命令 "restart" - 其余行忽略。

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup;

ORACLE 例程已经启动。

Total System Global Area 3056513024 bytes

Fixed Size 2179656 bytes

Variable Size 1644170680 bytes

Database Buffers 1392508928 bytes

Redo Buffers 17653760 bytes

数据库装载完毕。

数据库已经打开。

12)数据库重启后,以USERNAME用户登录查询数据正常.

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Oracle教程学习
    热门Oracle教程学习
    编程开发子分类