服务器之家

服务器之家 > 正文

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

时间:2019-11-18 15:28     来源/作者:Oralce教程网

将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 行, 第 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用户登录查询数据正常.

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
运维必须知道的关于云服务器的十个问题
运维必须知道的关于云服务器的十个问题 2019-05-24
返回顶部