将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用户登录查询数据正常.
                                                            
2014-06-07 07:26:51