生产环境中,oracle系统包损坏如何修复

来源:这里教程网 时间:2026-03-03 20:58:57 作者:

生产环境中,oracle系统包损坏如何修复

1、修复介绍

** 在生产环境中,往往会遇到各种类型的系统包损坏,导致各种功能无法使用,遇到了之后很多人都是百度,google,甚至是mos等方式去查询,有些能找到解决办法,有些不能,那么有没有一种办法能够解决呢?

答案肯定是有的。

**在oracle安装目录下有对应的一个路径($ORACLE_HOME/rdbms/admin/),里面存放了所有的系统包的原始创建语句,我们可以通过它来进行重建,如常见的包对应的名称:

DBMS_JOB :dbmsjob.sql prvtjob.plb

DBMS_DDL :  dbmsutil.sql prvtutil.plb

DBMS_ROWID : dbmsutil.sql prvtutil.plb

DBMS_TRACE :  dbmspbt.sql prvtpbt.plb

...

**重建之前可以删除当前系统下损坏的包或者包体以及相关同义词,重建完成后编译无效对象就行了。根据损坏的包体不同,可选择是否停机也是不一样的,需要自己评估。就我之前恢复的几个案例来看,不需要进行任何的停机。

2、修复案例

2.1 报错现象

--通过上面查看包体缺失,这种情况我们直接重建即可。

2.2 服务器上在线重建dbms_job;

  drop package DBMS_JOB;

  @?/rdbms/admin/dbmsjob.sql

  @?/rdbms/admin/prvtjob.plb

  @?/rdbms/admin/utlrp.sql

  grant execute on dbms_job to public;

2.3 编译无效对象

2.4 测试恢复效果

3、如果是其它包怎么修复呢?

同理也是在$ORACLE_HOME/rdbms/admin/下找到对应的sql和plb文件,进行处理即可。如果太多了,可以find+xargs+grep关键字即可。

公众号:数据库技术加油站、itpub 、墨天伦同步更新,有需要的关注。

相关推荐