批量更改dblink的地址

      在数据库迁移以后,生产开发库有500多个用户的dblink的ip地址需要变更,可以通过修改SYS.LINK$的方式来修改ip。

--更新SYS.LINK$的地址
UPDATE SYS.LINK$ SET HOST = REPLACE (HOST, :PRM_FROMIP, :PRM_TOIP)
 WHERE INSTR(HOST, :PRM_FROMIPPRM_FROMIP) > 0;

--然后刷新共享池
ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH SHARED_POOL ;

一个完成的过程,另加上批量修改数据源的地址。(生产环境勿用)


 --******************************************************************************
  -- 过程名称 :PROCEDURE_IPCHANGE
  -- 功能描述 : 将源数据库dblink的ip改为目标数据库的IP
  --
  -- 参数描述 :参数标识        名称                输入/输出  类型
  --            -------------------------------------------------------------
  --            PRM_FROMIP     源IP              输入       VARCHAR2
  --            PRM_TOIP      目标IP                输出       VARCHAR2
  --
  -- 作    者 :li.chh        完成日期 :2013-03-26
  ---------------------------------------------------------------------------
  -- 修改记录 :
  --******************************************************************************
  PROCEDURE PRC_IPCHANGE(PRM_FROMIP VARCHAR2, PRM_TOIP VARCHAR2) IS
  
    V_SQL VARCHAR2(4000);
  BEGIN
    --更改dblink 的地址
    UPDATE SYS.LINK$
      SET HOST = REPLACE(HOST, PRM_FROMIP, PRM_TOIP)
    WHERE INSTR(HOST, PRM_FROMIP) > 0;
    --更改datasorce的ip地址
    FOR REC_USER IN (SELECT OWNER || '.' || TABLE_NAME TABNAME
                       FROM DBA_TABLES
                      WHERE TABLE_NAME = UPPER('drm_sys_datasource')) LOOP
    
      V_SQL := 'update ' || REC_USER.TABNAME ||
               ' SET  DBURL=REPLACE(DBURL,:1,:2)   WHERE INSTR(DBURL, :3) > 0';
     -- DBMS_OUTPUT.PUT_LINE(V_SQL);
     execute immediate v_sql using PRM_FROMIP,PRM_TOIP,PRM_FROMIP;
    
    END LOOP;
  
  EXCEPTION
    WHEN OTHERS THEN
      NULL;
  END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值