首页 > 数据库 >Oracle编译无效对象

Oracle编译无效对象

时间:2023-12-24 19:22:34浏览次数:35  
标签:OWNER object NAME record 无效 OBJECT 编译 VARCHAR2 Oracle

问题描述:使用存储过程的方式对oracle数据库的无效对象,如视图或者同义词进行定期的编译,让他变成一个有效的对象,加上定时任务可以实现自动化的处理。同时在数据库内部创建一个记录表,用来记录被编译过的对象

/*重新编译无效视图,无效同义词存储过程
--1.创建无效对象监控表invalid_object_record,创建无效对象保存表preserve_object_record
create table invalid_object_record
(
  id            number generated by default as identity,
  OWNER         VARCHAR2(128),
  OBJECT_NAME   VARCHAR2(128),
  OBJECT_TYPE   VARCHAR2(23),
  STATUS        VARCHAR2(7)
);
COMMENT ON TABLE invalid_object_record IS 'This is the invalid object monitoring table';

create table preserve_object_record
(
  OWNER         VARCHAR2(128),
  OBJECT_NAME   VARCHAR2(128)
);
COMMENT ON TABLE invalid_object_record IS 'This is an invalid object save table';

--2.创建使用用户,分配权限
create user steven identified by 123456;
grant resource,connect,create session to steven;
--grant select on dba_users to steven;
grant select on dba_objects to steven;
alter user steven quota unlimited on USERS;

--3.写入记录保存表
insert into preserve_object_record values('SCOTT','V_TEST');
commit;

--4.在steven用户创建存储过程
*/

CREATE OR REPLACE PROCEDURE PROC_INVALID_OBJECT
as 
    t_OWNER VARCHAR2(128); 
    t_object_name VARCHAR2(128);
    t_status VARCHAR2(7);
    t_object_type  VARCHAR2(23);
    t_sql varchar2(200);

    select 
    CURSOR c1 IS select OWNER,OBJECT_NAME,OBJECT_TYPE,STATUS from DBA_OBJECTS where 
    (OWNER,OBJECT_NAME) not in (select OWNER,OBJECT_NAME  FROM preserve_object_record) 
    AND OWNER not IN (
    'SYS','SYSTEM','XS$NULL','OJVMSYS','LBACSYS','OUTLN','SYS$UMF','DBSNMP','APPQOSSYS','DBSFWUSER','GGSYS','ANONYMOUS','CTXSYS','DVF','DVSYS','GSMADMIN_INTERNAL','MDSYS','OLAPSYS','XDB',
'WMSYS','GSMCATUSER','MDDATA','REMOTE_SCHEDULER_AGENT','SYSBACKUP','GSMUSER','GSMROOTUSER','SYSRAC','SI_INFORMTN_SCHEMA','AUDSYS','DIP','ORDPLUGINS','ORDDATA','SYSKM',
'ORACLE_OCM','ORDSYS','SYSDG','PUBLIC') 
    AND STATUS = 'INVALID'
    AND OBJECT_TYPE in ('VIEW','SYNONYM');

    
begin
    --执行之前初始化
    EXECUTE IMMEDIATE 'TRUNCATE TABLE invalid_object_record';

    --循环处理无效对象
    FOR x IN c1 LOOP
    begin
      t_OWNER := x.OWNER;
      t_object_name := x.OBJECT_NAME;
      t_sql :='select count(*) from "'||t_OWNER||'"'||'.'||'"'||t_object_name||'" where a = b'; 
      Execute immediate t_sql;  
      EXCEPTION
      WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Error: ' || SQLCODE || ' - ' || SQLERRM);
    END;
    END LOOP;
    
    --记录未被成功处理到表中的信息 
    insert into invalid_object_record(OWNER,OBJECT_NAME,OBJECT_TYPE,STATUS) select OWNER,OBJECT_NAME,OBJECT_TYPE,STATUS from DBA_OBJECTS where 
    (OWNER,OBJECT_NAME) not in (select OWNER,OBJECT_NAME  FROM preserve_object_record) 
    AND OWNER not IN (select username from dba_users where ORACLE_MAINTAINED = 'Y')
    AND OWNER != 'PUBLIC' 
    AND STATUS = 'INVALID'
    AND OBJECT_TYPE in ('VIEW','SYNONYM');
    commit;
END;
/

 

标签:OWNER,object,NAME,record,无效,OBJECT,编译,VARCHAR2,Oracle
From: https://www.cnblogs.com/avasteven/p/17924749.html

相关文章

  • SciTech-Python-编译Python的C/C++扩展的setup.py
    https://github.com/google-deepmind/tree/setup.py"""Setupforpippackage."""importos,platform,sys,sysconfig,shutil,subprocess,setuptoolsfromsetuptools.commandimportbuild_exthere=os.path.dirname(os.path.abspath......
  • 新中源台湾版六仔系统平台安装编译出租的注意方法和处理
    T-G: zy369369在同步的Rust方法中调用异步代码经常会导致一些问题,特别是对于不熟悉异步Rustruntime底层原理的初学者。本人网站有详细介绍多种方法http://www.jizhifuke.com在做GreptimeDB项目的时候,我们遇到一个关于在同步Rust方法中调用异步代码的问题。经过一系列......
  • centos7编译安装php8
    参考推荐:https://blog.csdn.net/zzz1502/article/details/120157436 首先安装需要的依赖和第三方库#yuminstall-y--setopt=protected_multilib=falsegcGcgcc-c++makecmakeautomakeautoconfgdfilebisonpatchmlocateflexdiffutilszlibzlib-develpcrepcre-d......
  • keystone和beaengine的编译
    编译Keystone根据github的文档编译不出来,所以还是用CMake项目转成VisualStudio的项目来编译1、下载源码https://github.com/keystone-engine/keystoneclone或者直接下载zip都行2、CMake创建VisualStudio项目下载和安装CMake就不细说了,在官网下载cmake-3.28.0-windows-x86_6......
  • keystone和beaengine的编译
    编译Keystone根据github的文档编译不出来,所以还是用CMake项目转成VisualStudio的项目来编译1、下载源码https://github.com/keystone-engine/keystoneclone或者直接下载zip都行2、CMake创建VisualStudio项目下载和安装CMake就不细说了,在官网下载cmake-3.28.0-windows-x86_......
  • 二三、编译器
    二三、编译器1、OneDefinitionRule1)转化单元我们写好的每个源文件(.cpp,.c)将其所包含的头文件(#include<xxx.h>)合并后,称为一个转化单元。编译器单独的将每一个转化单元生成为对应的对象文件(.obj),对象文件包含了转化单元的机器码和转化单元的引用信息(不在转化单元中定义的对象)......
  • 通过 RMAN 备份 修复 Oracle 坏块的操作案例
    Oraclerman备份报错,提示数据文件有坏块,自己查看alert并无报错,说明还没有影响到业务。。根据报错检查确认[oracle@xx02~]$dbvfile='+DATAC1/xxxxdb/datafile/xx_tbs.3223.1044115207'blocksize=8192userid=sys/xxxxxxxDBVERIFY:Release11.2.0.4.0-ProductiononMonNo......
  • Ubuntu 22.04.3 LTS 编译 OpenJDK 12
    基于《深入理解Java虚拟机》第3版1.配置环境更新软件源sudoaptupdate获取源码wgethttps://hg.openjdk.org/jdk/jdk12/archive/06222165c35f.zip构建基础编译环境sudoaptinstallbuild-essential此处安装的gcc及g++的版本为11,需要替换为7。参考这个......
  • 编译期注解开发指北
    前言可用于基于注解的工具类开发,主要用于代码生成及相关配套技术明星项目:Lombok示例项目:diy-lombok开发流程明确开发目标:代码生成只是一种中间手段,最终必然落到某个具体需求上,非必要不生成自定义注解开发自定义注解器开发Debug基于日志作为SDK集成到Spring项目......
  • FOG Project的 FOS 编译
    FOGProject系统是一个免费的开源计算机网络克隆和管理解决方案系统,与传统的Ghost有很大的不同,如果您是计算机维护管理人员,当有大量机器需要同时部署上线的时候FOGProject是一个可以大大提高工作效率的系统,支持windows、Linux等操作系统,包括引导方式也支持UEFI方式进行引导。FO......