oracle用户dblink,oracle创建删除其他用户dblink 存储过程

create or replace procedure p_drop_dblinks(p_owner varchar,

p_dblink_namevarchar)isv_sqlvarchar2(4000);

curnumber;

uidnumber;

rcnumber;begin

beginv_sql := 'grant create database link to' ||p_owner;executeimmediate v_sql;end;begin

select u.user_id

intouidfromdba_users uwhere u.username = upper(p_owner);

v_sql := 'drop database link' ||p_dblink_name;

dbms_output.put_line(v_sql);

cur :=SYS.DBMS_SYS_SQL.open_cursor;

SYS.DBMS_SYS_SQL.parse_as_user(C=>cur,

STATEMENT=>v_sql,

LANGUAGE_FLAG=>DBMS_SQL.native,

USERID=>uid);

rc := SYS.DBMS_SYS_SQL.execute(cur);

SYS.DBMS_SYS_SQL.close_cursor(cur);end;beginv_sql := 'revoke create database link from' ||p_owner;executeimmediate v_sql;end;end;/执行方法execp_drop_dblinks(dblink_owner,dblink_name);create or replace procedure p_create_dblinks(p_owner varchar,

p_dblink_namevarchar,

r_uservarchar,

r_passwdvarchar,

r_hostvarchar2) isv_sqlvarchar2(4000);

curnumber;

uidnumber;

rcnumber;

v_backtracevarchar2(2000);begin

beginv_sql := 'grant create database link to' ||p_owner;executeimmediate v_sql;end;begin

select u.user_id

intouidfromdba_users uwhere u.username = upper(p_owner);

v_sql := 'create database link' || p_dblink_name || 'connect to' ||r_user|| 'identified by "' || r_passwd || '"

using''' || r_host || '''';

cur :=SYS.DBMS_SYS_SQL.open_cursor;

SYS.DBMS_SYS_SQL.parse_as_user(C=>cur,

STATEMENT=>v_sql,

LANGUAGE_FLAG=>DBMS_SQL.native,

USERID=>uid);

rc := SYS.DBMS_SYS_SQL.execute(cur);

SYS.DBMS_SYS_SQL.close_cursor(cur);end;beginv_sql := 'revoke create database link from' ||p_owner;executeimmediate v_sql;end;beginv_sql := 'select * from dual@' ||p_dblink_name;

cur :=SYS.DBMS_SYS_SQL.open_cursor;

SYS.DBMS_SYS_SQL.parse_as_user(C=>cur,

STATEMENT=>v_sql,

LANGUAGE_FLAG=>DBMS_SQL.native,

USERID=>uid);

rc := SYS.DBMS_SYS_SQL.execute(cur);IF rc = 0 THENdbms_output.put_line('DBLINK is ok');END IF;

exceptionwhen others thenv_backtrace :=dbms_utility.format_error_backtrace;if sqlcode = '-12154' thenDBMS_OUTPUT.put_line('ORA' || sqlcode ||

':TNS or remote host ip is erro,please exec p_drop_dblinks(''' ||p_owner|| '''.''' || p_dblink_name ||

''')!!!');elseDBMS_OUTPUT.put_line(v_backtrace);end if;rollback;

SYS.DBMS_SYS_SQL.close_cursor(cur);end;end;/执行方法exec p_create_dblinks(dblink_owner,dblink_name,remote_user,remote_password,remote_host);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值