Oralce数据导入出现(SYSTEM.PROC_AUDIT)问题处理方法

前端之家收集整理的这篇文章主要介绍了Oralce数据导入出现(SYSTEM.PROC_AUDIT)问题处理方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

将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:\Users\Administrator>sqlplus / as sysdba

2) 显示当前审计参数

:
sql> show parameter audit;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string J:\APP\ADMINISTRATOR\ADMIN\ORC
L\ADUMP
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:\APP\ADMINISTRATOR\ADMIN
L\ADUMP
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:\APP\ADMINISTRATOR\ADMIN
L\ADUMP
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 行,第 7 列:
PL/sql: Statement ignored

10)

找到SYSTEM.PROC_AUDIT存储过程,发现有编译错误,提示sys.v_$sql,v$sql_bindcapture,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用户登录查询数据正常

.

原文链接:https://www.f2er.com/oracle/65630.html

猜你在找的Oracle相关文章