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

所属分类: 数据库 / oracle 阅读数: 249
收藏 0 赞 0 分享
将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用户登录查询数据正常.
更多精彩内容其他人还在看

Oracle 子程序参数模式,IN,OUT,NOCOPY

Oracle 子程序参数模式主要有IN,OUT,NOCOPY,IN和OUT可以组合,OUT和NOCOPY也可以组合使用.
收藏 0 赞 0 分享

Oracle 存储过程加密方法

Oracle 存储过程加密方法,需要的朋友可以参考下。
收藏 0 赞 0 分享

oracle 多个字符替换实现

CSDN上的一个网友,需要一个sql语句的解决方案需求是这样的求写oracle多个字符替换(有测试数据)
收藏 0 赞 0 分享

Oracle 存储过程教程

一个简单的oracle分页存储过程的实现和调用。在看了众多的分页存储过程以后发现都是针对sqlserver的,而没有oracle的,因此想写一个关于oracle的存储过程,因为我用到的数据库是oracle。
收藏 0 赞 0 分享

oracle 更改数据库名的方法

这两天一朋友问如何更改数据库名,于是做个测试,简单记录下,以便说明问题。
收藏 0 赞 0 分享

Oracle 分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法

Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法,需要的朋友可以参考下。
收藏 0 赞 0 分享

Oracle字符集修改查看方法

Oracle字符集修改查看方法,需要的朋友可以参考下。
收藏 0 赞 0 分享

一些实用的sql语句

一些实用的sql,需要的朋友可以参考下。
收藏 0 赞 0 分享

Oracle中sys和system的区别小结

SYS用户具有DBA权限,并且拥有SYS模式,只能通过SYSDBA登陆数据库。是Oracle数据库中权限最高的帐号 SYSTEM具有DBA权限。但没有SYSDBA权限。平常一般用该帐号管理数据库就可以了。
收藏 0 赞 0 分享

oracle 存储过程和触发器复制数据

oracle 存储过程和触发器复制数据的代码,需要的朋友可以参考下。
收藏 0 赞 0 分享
查看更多