如果数据库链接或任何其他Oracle对象是用双引号创建的,其中包含
任何东西
除大写字母、数字和允许的字符外
_#$
,那么您将无法在任何DDL中引用该对象,除非您完全重复其区分大小写的名称,并且每次都用双引号括起来:
drop database link "xyz"
这就是为什么不值得这样做——在创建对象时省略双引号,并允许Oracle以大写形式存储所有内容,这总是假设没有双引号。
其次,如果链接是私有的,您必须是链接所有者才能删除它。创建新链接也是如此。因此,请注销并使用链接所有者的用户名和密码重新登录。
对于DBA(或任何有
create any procedure
system-priv),但是,如果你不知道密码:你可以在另一个用户下创建一个过程,并在该过程中删除链接:
create procedure otheruser.dropmylink
as
begin
execute immediate 'drop database link xyz';
end;
/
begin otheruser.dropmylink; end; -- execute the proc
/
drop procedure otheruser.dropmylink; -- drop the proc
/
我们不得不使用这样愚蠢的解决方法,这很烦人,但事实就是这样。