由于业务需求,对测试库数据进行模糊化。为保生产数据安全,先删db_link;

1.共有db_link删除:

select 'drop public database link '||db_link||';' from dba_db_links where owner='PUBLIC';

2.私有db_link删除:

Create or replace procedure Drop_DbLink(schemaName varchar2, dbLink varchar2 ) is
plsql varchar2(1000);
cur number;
uid number;
rc number;
begin
select u.user_id into uid from dba_users u
where u.username = schemaName;
plsql := 'drop database link "'||dbLink||'"';
cur := SYS.DBMS_SYS_SQL.open_cursor;
SYS.DBMS_SYS_SQL.parse_as_user(
c => cur,
statement => plsql,
language_flag => DBMS_SQL.native,
userID => uid
);
rc := SYS.DBMS_SYS_SQL.execute(cur);
SYS.DBMS_SYS_SQL.close_cursor(cur);
end;
/

select 'exec Drop_DbLink('''||owner||''','''||db_link||''');'  from dba_db_links;

05-19 21:23