千家信息网

数据库中失效对象编译的方法教程

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容介绍了"数据库中失效对象编译的方法教程"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!----
千家信息网最后更新 2026年10月31日数据库中失效对象编译的方法教程

本篇内容介绍了"数据库中失效对象编译的方法教程"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

----------------------------------------------------------  DDL for Table RECOMPILE_LOG--------------------------------------------------------  CREATE TABLE "RECOMPILE_LOG"    (    "RDATE" DATE,     "ERRMSG" VARCHAR2(200 BYTE)   ) ;----------------------------------------------------------  DDL for Table RECOMPILE_TYPE_INFO--------------------------------------------------------  CREATE TABLE "RECOMPILE_TYPE_INFO"    (    "TYPE" VARCHAR2(30 BYTE),     "PROCESS_MODE" VARCHAR2(30 BYTE),     "BASE_TABLE" VARCHAR2(30 BYTE)   ) ;Insert into EODA.RECOMPILE_TYPE_INFO (TYPE,PROCESS_MODE,BASE_TABLE) values ('TRIGGER','COMPILE','DBA_DEPENDENCIES');Insert into EODA.RECOMPILE_TYPE_INFO (TYPE,PROCESS_MODE,BASE_TABLE) values ('PROCEDURE','COMPILE','DBA_DEPENDENCIES');Insert into EODA.RECOMPILE_TYPE_INFO (TYPE,PROCESS_MODE,BASE_TABLE) values ('FUNCTION','COMPILE','DBA_DEPENDENCIES');Insert into EODA.RECOMPILE_TYPE_INFO (TYPE,PROCESS_MODE,BASE_TABLE) values ('PACKAGE','COMPILE','DBA_DEPENDENCIES');Insert into EODA.RECOMPILE_TYPE_INFO (TYPE,PROCESS_MODE,BASE_TABLE) values ('TYPE','COMPILE','DBA_DEPENDENCIES');Insert into EODA.RECOMPILE_TYPE_INFO (TYPE,PROCESS_MODE,BASE_TABLE) values ('INDEX','REBUILD ONLINE','DBA_INDEXES');----------------------------------------------------------  DDL for Procedure RECOMPILE_OBJECTS--------------------------------------------------------set define off;  CREATE OR REPLACE EDITIONABLE PROCEDURE "RECOMPILE_OBJECTS" (RIO_OWNER       VARCHAR2,                                              RIO_OBJECT_NAME VARCHAR2) AS  COMPILE_SQL   VARCHAR2(500);  P_OWNER       VARCHAR2(30) := UPPER(RIO_OWNER);  P_OBJECT_NAME VARCHAR2(30) := UPPER(RIO_OBJECT_NAME);BEGIN  FOR RIO_TYPE IN (SELECT TYPE, PROCESS_MODE, BASE_TABLE                     FROM RECOMPILE_TYPE_INFO) LOOP    IF RIO_TYPE.BASE_TABLE = 'DBA_DEPENDENCIES' THEN      FOR DBA_DEP IN (SELECT OWNER, NAME                        FROM DBA_DEPENDENCIES                       WHERE TYPE = RIO_TYPE.TYPE                         AND REFERENCED_OWNER = P_OWNER                         AND REFERENCED_NAME = P_OBJECT_NAME) LOOP        FOR DBA_OBJ IN (SELECT STATUS                          FROM DBA_OBJECTS                         WHERE OWNER = DBA_DEP.OWNER                           AND OBJECT_NAME = DBA_DEP.NAME) LOOP          IF DBA_OBJ.STATUS = 'INVALID' THEN            BEGIN              COMPILE_SQL := 'ALTER ' || RIO_TYPE.TYPE || ' ' ||                             DBA_DEP.OWNER || '.' || DBA_DEP.NAME || ' ' ||                             RIO_TYPE.PROCESS_MODE;              EXECUTE immediate COMPILE_SQL;            EXCEPTION              WHEN OTHERS THEN                INSERT INTO recompile_log                  (rdate, errmsg)                VALUES                  (sysdate, COMPILE_SQL);            END;          END IF;        END LOOP;      END LOOP;    END IF;    IF RIO_TYPE.BASE_TABLE = 'DBA_INDEXES' THEN      FOR DBA_IND IN (SELECT OWNER, INDEX_NAME, PARTITIONED, STATUS                        FROM DBA_INDEXES                       WHERE TABLE_OWNER = P_OWNER                         AND TABLE_NAME = P_OBJECT_NAME) LOOP        IF DBA_IND.PARTITIONED = 'NO' AND DBA_IND.STATUS = 'INVALID' THEN          BEGIN            COMPILE_SQL := 'ALTER ' || RIO_TYPE.TYPE || ' ' ||                           DBA_IND.OWNER || '.' || DBA_IND.INDEX_NAME || ' ' ||                           RIO_TYPE.PROCESS_MODE;            EXECUTE immediate COMPILE_SQL;          EXCEPTION            WHEN OTHERS THEN              INSERT INTO recompile_log                (rdate, errmsg)              VALUES                (sysdate, COMPILE_SQL);          END;        END IF;        IF DBA_IND.PARTITIONED = 'YES' THEN          FOR IND_PAR IN (SELECT PARTITION_NAME, STATUS                            FROM DBA_IND_PARTITIONS                           WHERE INDEX_OWNER = DBA_IND.OWNER                             AND INDEX_NAME = DBA_IND.INDEX_NAME) LOOP            IF IND_PAR.STATUS = 'UNUSABLE' THEN              BEGIN                COMPILE_SQL := 'ALTER ' || RIO_TYPE.TYPE || ' ' ||                               DBA_IND.OWNER || '.' || DBA_IND.INDEX_NAME ||                               ' PARTITION ' || IND_PAR.PARTITION_NAME ||                               ' ONLINE';                EXECUTE immediate COMPILE_SQL;              EXCEPTION                WHEN OTHERS THEN                  INSERT INTO recompile_log                    (rdate, errmsg)                  VALUES                    (sysdate, COMPILE_SQL);              END;            END IF;          END LOOP;        END IF;      END LOOP;    END IF;  END LOOP;END;/

"数据库中失效对象编译的方法教程"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

对象 教程 数据 数据库 方法 编译 内容 更多 知识 实用 学有所成 接下来 困境 实际 情况 文章 案例 编带 网站 行业 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京路客互联网科技有限公司 美国互联网保险保险科技 互联网科技深圳 互联网为科技 互联网与新科技 艾特科技互联网 赫美联合互联网科技 福州新华互联网科技学校 知乎 互联网企业和科技型企业 互联网金融中的现代科技 本届互联网博览会上的黑科技 企晟互联网信息科技有限公司 科技大学互联网 深圳无忧互联网科技 本届互联网大会上的黑科技 容联科技互联网电商 现代互联网科技公司 优雇互联网科技有限公司 恒生互联网科技趋势 科技发展第三阶段互联网时代 广州万易互联网科技有限公司 互联网最新的科技有限公司 港股互联网科技股 宁夏众和广鑫互联网科技有限公司 上海京穆互联网科技有限公司 互联网科技股为什么大涨 九思连强互联网电子科技有限公司 广州梦谷互联网科技有限公司领导 北京军民互联网科技公司 互联网科技大佬云集
0