日期:2014-05-17  浏览次数:20798 次

Oracle不能DROP任何东西,求解!
--之前创建了一个表:mytable
create table mytable
(
  MMD_ID            INTEGER,
  MMD_MM_ID         INTEGER,
  MMD_TYPE          INTEGER,
  MMD_CURRENCY_TYPE INTEGER,
  MMD_CURRENCY      NVARCHAR2(50),
  MMD_AMOUNT        NUMBER(18,2)
)
--后来使用DROP语句,删除报错
drop table mytable;


不管是DROP表、还是存储过程,都会报错。出错信息如下:
drop PROCEDURE mytable
Error at line 1
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-20010: 你不能删除任何信息.
ORA-06512: 在 line 3


------解决方案--------------------
估计是用触发器作了权限控制呢。
------解决方案--------------------
-- 例如:
create or replace 
TRIGGER ddl_deny
BEFORE CREATE OR DROP ON DATABASE
DECLARE
  l_errmsg VARCHAR2(100) := 'You have no permission to do this!';
BEGIN
  IF ora_login_user NOT IN ('SYS','SYSTEM','DATA_MONITOR') THEN
    raise_application_error(-20001, ora_dict_obj_owner 
------解决方案--------------------
 '.' 
------解决方案--------------------
 ora_dict_obj_name 
------解决方案--------------------
 ' ' 
------解决方案--------------------
 l_errmsg);
  END IF;
END;

-- 上面触发器表示,除'SYS','SYSTEM','DATA_MONITOR'三个用户以外的其他用户不能CREATE、DROP操作。