返回顶部
首页 > 资讯 > 数据库 >数据库中失效对象编译的方法教程
  • 849
分享到

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

2024-04-02 19:04:59 849人浏览 八月长安
摘要

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

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

--------------------------------------------------------
--  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;
/

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

您可能感兴趣的文档:

--结束END--

本文标题: 数据库中失效对象编译的方法教程

本文链接: https://lsjlt.com/news/64995.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 数据库中失效对象编译的方法教程
    本篇内容介绍了“数据库中失效对象编译的方法教程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!-------...
    99+
    2024-04-02
  • Oracle数据库失效对象处理
    近期对数据库进行巡检,发现数据库业务用户(非 SYS/Public)下存在失效对象。对失效对象进行分析,主要包括失效的视图、物化视图、函数、包、触发器等。思考:基于以下原因,建议对失效对象进行处理:1、通过失效的对象,可能能够反推发现业务...
    99+
    2015-09-11
    Oracle数据库失效对象处理
  • 在ORACLE中找出并批量编译失效的对象
        每次数据库升级之后,都需要对库中的对象进行重新编译一下。下面整理出了一个脚本,只需要执行一下就能批量编译这些失效的对象。需要注意的是:因权限问题,最好是选择s...
    99+
    2024-04-02
  • Oracle数据库失效对象处理详情
    近期对数据库进行巡检,发现数据库业务用户(非 SYS/Public)下存在失效对象。对失效对象进行分析,主要包括失效的视图、物化视图、函数、包、触发器等。 思考: 基于以下原因,建议...
    99+
    2024-04-02
  • MySQL5.6编译安装及配置数据库教程
    不知道大家之前对类似MySQL5.6编译安装及配置数据库教程的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL5.6编译安装及配置数据库教程你一定会有所收获...
    99+
    2024-04-02
  • 数据库中已存在对象的解决方法
    这篇文章主要介绍数据库中已存在对象的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!数据库中已存在对象的解决方法:1、在创建语句前加“IF OBJECT_ID ('表名...
    99+
    2024-04-02
  • Python编程算法中的对象编程:一切皆对象?
    Python是一种面向对象编程语言,这意味着在Python中,一切皆对象。对象编程是一种编程范式,它将数据和数据上的操作封装在一起,形成一个对象。Python中的对象编程为程序员提供了一种更加高效的方式来处理代码和数据。 在Python中...
    99+
    2023-10-16
    编程算法 对象 编程算法
  • Python 编程中的文件缓存对象:如何避免数据丢失?
    在 Python 编程中,我们经常需要从文件中读取数据或者将数据写入到文件中。然而,由于文件 I/O 操作是比较耗时的,所以我们往往会使用文件缓存对象来提高程序的性能。但是,如果我们不注意缓存对象的使用,就有可能导致数据丢失的问题。本文将...
    99+
    2023-07-11
    文件 缓存 对象
  • C++ 成员函数详解:对象方法的底层实现与编译过程
    c++++ 中的成员函数是附加在类中的对象方法,用于操作对象中的数据成员。编译过程包括:实例化:为每个成员函数创建函数指针,存储在对象中;调用机制:编译器自动插入类似于 result =...
    99+
    2024-04-29
    c++ 成员函数
  • 数据库中对象名无效如何解决
    当数据库中的对象名无效时,可以尝试以下解决方法: 检查对象名是否符合数据库命名规范:确保对象名只包含字母、数字和下划线,并以字母...
    99+
    2023-10-22
    数据库
  • Java编程中的对象和文件:如何编写高效算法?
    Java是一种面向对象的编程语言,它的核心思想是将现实世界中的事物抽象成对象,通过对象的互相作用来实现程序的功能。因此,在Java编程中,对象和文件是两个非常重要的概念。本文将介绍如何在Java编程中,通过对象和文件的运用,编写高效的算法...
    99+
    2023-11-04
    文件 编程算法 对象
  • Oracle 11g下编译使用BBED的方法教程
    BBED介绍: BBED(Oracle Block Browerand EDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内...
    99+
    2024-04-02
  • 如何在PHP中实现高效的对象编程算法?
    PHP是一种广泛使用的编程语言,它在Web开发中扮演着重要的角色。在PHP中,对象编程是一种非常重要的编程范式,它可以帮助我们更好地组织和管理代码。在本文中,我们将介绍如何在PHP中实现高效的对象编程算法。 一、封装 封装是面向对象编程中最...
    99+
    2023-08-15
    对象 编程算法 日志
  • Python GUI 编程:面向对象的方法
    ...
    99+
    2024-04-02
  • PDO中操作大数据对象的方法
    这篇文章主要介绍了PDO中操作大数据对象的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PDO操作大数据对象一般在数据库中,我们保存的都...
    99+
    2024-04-02
  • Java中的对象编程算法:如何处理大量数组数据?
    在Java中,处理大量数组数据是一种常见的需求。无论是在数据分析、图像处理还是机器学习等领域,都需要高效地处理大量的数据。在这种情况下,使用对象编程算法能够有效地提高代码的可读性和可维护性,并且能够更快地处理大量数据。 本文将介绍Java...
    99+
    2023-10-31
    对象 编程算法 数组
  • Mysql数据库数据更新失效的原因和解决方法
    这篇文章将为大家详细讲解有关Mysql数据库数据更新失效的原因和解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 背景最近的项目中遇到一项问题,并发更新某一单据...
    99+
    2024-04-02
  • Gearman::XS在Centos下的编译安装方法教程
    本篇内容主要讲解“Gearman::XS在Centos下的编译安装方法教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Gearman::XS在Centos下的编译安装方法教程”吧!目前Gear...
    99+
    2023-06-09
  • PHP中的对象编程算法:函数是如何让你更有效率的?
    PHP是一种流行的编程语言,它支持多种编程范式,包括面向对象编程(OOP)。在OOP中,我们使用对象来表示现实世界中的实体,并使用方法来定义对象的行为。PHP中的对象编程算法是如何利用函数来提高代码效率的呢?让我们来一探究竟。 一、函数的...
    99+
    2023-10-10
    对象 编程算法 函数
  • Java中如何使用对象实现高效的编程算法?
    在Java编程中,对象是非常重要的概念。使用对象可以将数据和行为结合起来,从而更加灵活和高效地编写算法。在本文中,我们将介绍如何使用对象实现高效的编程算法。 一、面向对象编程基础 在Java中,面向对象编程是一种基础的编程思想。它将程序分...
    99+
    2023-10-31
    对象 编程算法 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作