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

 更新时间:2012年12月02日 17:40:54   作者:  
A数据库打开了审计,而导入到B数据库时,B数据库审计没有打开,数据库中没有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 行, 第 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用户登录查询数据正常.

相关文章

  • 解决navicat 链接oracle时出现的各种问题

    解决navicat 链接oracle时出现的各种问题

    这篇文章主要介绍了解决navicat 链接oracle时出现的各种问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • Oracle基础教程之分组查询

    Oracle基础教程之分组查询

    这篇文章主要给大家介绍了关于Oracle基础教程之分组查询的相关资料,Oracle分组查询指的是将一张表按照某个字段或几个字段进行分组,并在每个组内进行聚合运算,得到结果集,需要的朋友可以参考下
    2024-02-02
  • Oracle监听日志定期清理

    Oracle监听日志定期清理

    这篇文章主要介绍了Oracle监听日志定期清理的相关资料,需要的朋友可以参考下
    2017-10-10
  • Oracle数据库中的级联查询、级联删除、级联更新操作教程

    Oracle数据库中的级联查询、级联删除、级联更新操作教程

    这里整理了Oracle中的三种级联操作,其中Oracle定义外健的时候可以定义级联删除,但是没有级联修改的语法,当然可以用触发器实现,下面我们详细来看Oracle数据库中的级联查询、级联删除、级联更新操作教程
    2016-05-05
  • PLSQL创建新用户并导入导出.dmp文件全过程

    PLSQL创建新用户并导入导出.dmp文件全过程

    plsql导入.sql和.dmp文件时会经常用到,对于初学者来说可能没有那么简单,毕竟oracle数据库比较麻烦,这篇文章主要给大家介绍了关于PLSQL创建新用户并导入导出.dmp文件的相关资料,需要的朋友可以参考下
    2023-11-11
  • 使用Navicat Premium工具将oracle数据库迁移到MySQL

    使用Navicat Premium工具将oracle数据库迁移到MySQL

    最近的业务项目需求,因此总结遇到的问题。使用Navicat Premium工具将Oralce数据库迁移到MySQL,本文通过图文的形式给大家详细介绍,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • Oracle 11g中密码过期问题详解

    Oracle 11g中密码过期问题详解

    本文主要是对Oracle中产生密码过期的2种情况进行了详细分析,并给出了解决方案,非常的简单实用,有需要的朋友可以参考下
    2014-09-09
  • 设置oralce自动内存管理执行步骤

    设置oralce自动内存管理执行步骤

    设置内存管理首先要启用oracle自动内存管理需要shutdown ,restart,接下来为大家介绍下详细的执行步骤,感兴趣的朋友可以参考下哈
    2013-04-04
  • 详解Oracle中的隐含参数_disable_logging

    详解Oracle中的隐含参数_disable_logging

    之前看到过一篇文章是介绍Oracle的一个内部隐含参数_disable_logging,最近又看到有朋友论述这个参数,所以下面这篇文章就来给大家介绍下关于Oracle中隐含参数_disable_logging的相关资料,需要的朋友可以参考下。
    2017-02-02
  • Oracle数据库用户密码过期的解决方法

    Oracle数据库用户密码过期的解决方法

    常使用oracle数据库的小伙伴可能会经常遇到oracle密码过期的问题,下面这篇文章主要给大家介绍了关于Oracle数据库用户密码过期的解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05

最新评论