暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

catalog.sql脚本

慢慢 2024-12-23
126

catalog.sql主要用于创建数据字典。在数据库运行过程中,如果数据字典发生损坏,可以重新执行catalog.sql来修复损坏的数据字典。但当共享池内存不足或者数据库组件混乱时执行catalog.sql容易出现问题。以下简要分析catalog.sql的执行过程,不同的数据库版本其执行顺序可能不同。

(1)Oracle首先判断是否是SYS用户执行catalog.sql。如下所示:

SELECT TO_NUMBER('MUST_BE_AS_SYSDBA') FROM DUAL

WHERE USER != 'SYS';

WHENEVER SQLERROR CONTINUE;

(2)创建Oracle STANDARD包,里面有Oracle内置函数的创建过程,如sqlerrm。如下所示:

rem Load PL/SQL Package STANDARD first, so views can depend upon it

@@standard

@@dbmsstdx

STANDARD包是创建和执行Oracle其他存储过程的前提。当STANDARD失效时,可能出现以下错误:

SQL> select COMP_NAME,VERSION,STATUS from dba_registry;

select COMP_NAME,VERSION,STATUS from dba_registry

                                     *

ERROR at line 1:

ORA-00904: "DBMS_REGISTRY"."STATUS_NAME": invalid identifier

ORA-06553: PLS-213: package STANDARD not accessible

ORA-06553: PLS-213: package STANDARD not accessible

同时警告日志也出现如下错误信息:

Mon Jul 02 17:39:21 EDT 2012

Errors in file /oracle/app/admin/zhoul/bdump/zhoul_cjq0_6444.trc:

ORA-00604: error occurred at recursive SQL level 1

ORA-00904: "DBMS_LOGSTDBY"."DB_IS_LOGSTDBY": invalid identifier

ORA-06553: PLS-213: package STANDARD not accessible

(3)注册Oracle Database Catalog Views组件,如下所示:

Rem Load registry so catalog component can be defined

@@catcr

BEGIN

   dbms_registry.loading('CATALOG', 'Oracle Database Catalog Views',

        'dbms_registry_sys.validate_catalog');

END;

/

remark

remark  FAMILY "FIXED (VIRTUAL) VIEWS"

remark

(4)创建一系列视图和同义词,如下所示:

create or replace view v_$map_library as select * from v$map_library;

create or replace public synonym v$map_library for v_$map_library;

grant select on v_$map_library to select_catalog_role;

BEGIN

   dbms_registry.loaded('CATALOG');

END;

/

注意 当1号数据文件有坏块时,谨慎执行catalog.sql。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论