ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态

SQL> drop user aaa ;

drop user aaa

ORA-00604: 递归 SQL 级别 1 出现错误

ORA-06512: 在 line 21

SQL> alter procedure WMSYS.NO_VM_DROP_PROC disable;

alter procedure WMSYS.NO_VM_DROP_PROC disable

ORA-00922: 选项缺失或无效

SQL> alter procedure WMSYS.NO_VM_DROP_PROC DISABLE;

alter procedure WMSYS.NO_VM_DROP_PROC DISABLE

ORA-00922: 选项缺失或无效

SQL> ALTER TRIGGER wmsys.NO_VM_DDL DISABLE;

Trigger altered

SQL> ALTER TRIGGER wmsys.NO_VM_DROP_A DISABLE;

ALTER TRIGGER wmsys.NO_VM_DROP_A DISABLE

ORA-04080: 触发器 ‘NO_VM_DROP_A‘ 不存在

SQL> drop user aaa ;

User dropped

SQL> purge recyclebin;

Done

SQL>

metlink引用文档

ORA-06576 error during Drop User (文档 ID 1498610.1)

In this Document

  Symptoms
  Cause
  Solution
  References

APPLIES TO:

Oracle Server - Enterprise Edition - Version 10.2.0.1 and later

Information in this document applies to any platform.

SYMPTOMS

Dropping a user schema results in below errors:

SQL> drop user GG_ADMIN;

DROP USER "GG_ADMIN"
Error at line 2
ORA-00604: error occurred at recursive SQL level 1
ORA-06576: not a valid function or procedure name
ORA-06512: at line 21 gg_admin cascade;

CAUSE

A DDL trigger is defined on the drop statement.

Next query will get you the definition of the DDL Triggers in the system.

SQL> connect / as sysdba

SQL> SELECT a.obj#, a.sys_evts, b.name FROM trigger$ a,obj$ b WHERE a.sys_evts > 0 AND a.obj#=b.obj# AND baseobject = 0;

  OBJ#       SYS_EVTS NAME
---------- ---------- ------------------------------
  81794             8 LOGON_DATE
  81795          8416 NO_VM_DDL
  81796           128 NO_VM_DROP_A
  13177          8192 AW_REN_TRG
  13179           128 AW_DROP_TRG
  11990        524256 LOGMNRGGC_TRIGGER
  13175          4096 AW_TRUNC_TRG
  71787             1 MGMT_STARTUP

Get an errorstack for ORA-06576 error:

SQL> alter system set events=‘6576 trace name errorstack level 3‘;
SQL> drop user <username>

When executing ‘drop user gg_admin‘, the resultant trace file shows the failing statement is a call to wmsys.no_vm_drop_proc(‘USER‘, ‘GG_ADMIN‘, ‘‘).

From errorstack trace file we could observe the following:

 if (s_event=‘CREATE‘) then
   execute immediate ‘call wmsys.no_vm_create_proc(‘‘‘ || sys.dictionary_obj_type || ‘‘‘, ‘‘‘ ||
      sys.dictionary_obj_name || ‘‘‘, ‘‘‘ || sys.dictionary_obj_owner || ‘‘‘)‘ ;
 elsif (s_event=‘DROP‘) then
   execute immediate ‘call wmsys.no_vm_drop_proc(‘‘‘ || sys.dictionary_obj_type || ‘‘‘, ‘‘‘ ||
      sys.dictionary_obj_name || ‘‘‘, ‘‘‘ || sys.dictionary_obj_owner || ‘‘‘)‘ ;

The triggers enabled for this were in this case NO_VM_DDL and NO_VM_DROP_A

SOLUTION

Check if there are any DROP BEFORE triggers enabled. Once you drop the trigger, it will allow you to drop the user.

Workaround would be:

SQL> ALTER TRIGGER NO_VM_DDL DISABLE;
SQL> ALTER TRIGGER NO_VM_DROP_A DISABLE;
SQL> drop user gg_admin;

REFERENCES

NOTE:75206.1 - OERR: ORA-6576 not a function or procedure

时间: 2024-10-29 15:48:25

ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态的相关文章

oracle中函数处于无效状态

编译后错误提示为pls-00103:出现符号""在需要下列之一时:begin case declare 原因是:有非法字符,如:存在全角空格.

R--基本统计分析方法(包及函数)

摘要:目前经典的统计学分析方法主要有回归分析,Logistic回归,决策树,支持向量机,聚类分析,关联分析,主成分分析,对应分析,因子分析等,那么对于这些经典的分析方法在R中的使用主要有那些程序包及函数呢? 1.线性模型~回归分析:[包]:stats  [函数]:lm(formula, data,  ...)逐步回归:step(lm(formula, data,  ...))回归诊断:influence.measure(lm(formula, data,  ...))多重共线性:kappa(XX

Oracle学习笔记十二 子程序(存储过程、自定函数)和程序包

子程序 子程序:命名的 PL/SQL 块,编译并存储在数据库中. 子程序的各个部分: 1.声明部分 2.可执行部分 3.异常处理部分(可选) 子程序的分类: 1.过程 - 执行某些操作 2.函数 - 执行操作并返回值 子程序的优点: 模块化 将程序分解为逻辑模块 可重用性 可以被任意数目的程序调用 可维护性 简化维护操作 安全性 通过设置权限,使数据更安全 存储过程 过程是用于完成特定任务的子程序. 例如: 一个购票过程可以分为很多个子过程,分别完成. 创建存储过程 创建过程的语法: CREAT

ORA-04044: 此处不允许过程, 函数, 程序包或类型????

用Orale代码建表时,出现 SQL> comment on column SCORE.cno 2 is '学号(外键)';comment on column SCORE.cno is '学号(外键)'ORA-04044: 此处不允许过程, 函数, 程序包或类型SQL> comment on column SCORE.cname 2 is '课程号(外键)';comment on column SCORE.cname is '课程号(外键)'ORA-04044: 此处不允许过程, 函数, 程序

10.程序包

一.示例1 1 --存储过程 2 create or replace procedure addemp( var_sal in out number ) 3 is|as 4 5 begin 6 7 end: 8 9 --函数 10 create or replace function addemp(var_sal number) return number 11 is|as 12 v_num number; 13 begin 14 ------- 15 return v_num; 16 17 e

学习日志---linuxの 程序包管理综述

Linux的程序包管理: 应用程序: GPL:源码, POSIX: Portable Operatin System API: 兼容,意味开发库兼容,因此,源代码可跨平台 ABI:兼容,编译后的程序可以跨平台: 不同的平台可执行的二进制程序格式不同,因此编译后的相同程序在不同平台不一定都能运行 库:可执行程序,本身不能作为程序执行入口,但可以被调用 编译好的二进制格式 程序:预编译.编译.汇编.链接 静态: 动态链接:dll(windows), 在linux下,so(shared object)

Linux程序包管理及yum安装管理

Linux程序包管理: API:ApplicationProgramming Interface   应用编程接口 POSIX:Portable OS    遵循本协议的程序均可在不同系统间移植 程序编写完成后,执行所要经过的处理步骤: 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接 静态编译: 共享编译:直接调用.so共享对象实现 ABI:ApplicationBinary Interface  应用二进制接口 Windows与Linux所支持的可执行二进制

plsql的程序包package

9. 程序包--PACKAGE 9.1 包的定义和编译 包:一个PLSQL相关对象的逻辑分组和单个对象存储在数据库对象中的数据单元.相关的PLSQL对象包括:常量.变量.游标.异常.SP.FUN 包由两部分组成: 规范部分(包头.调用接口)  +  主体部分(包体.实现部分) (1) 包头的创建: create or replace package org_Master is     max_sites_for_an_org number;    type rc is ref cursor;  

Oracle基础 程序包

一.程序包 程序包是一种数据库对象,它是对相关PLSQL类型.子程序.游标.异常.变量和常量的封装.程序包包含两部分内容: 1.程序包规范:可以声明类型.变量.常量.异常.游标和子程序. 2.程序包主题:可以实现在程序包规范中定义的游标.子程序. 二.程序包规范 程序包规范包含一些应用程序课件的公共对象和类型的声明它是应用程序的借口.规范包含应用程序所需的资源,如果程序包规范只声明类型.常量.变量和异常,则不需要有程序包主体.只有子程序和游标才具有程序包主体. 语法: create [or re