日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何通过DBLINK取REMOTE DB的DDL

發布時間:2024/8/26 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何通过DBLINK取REMOTE DB的DDL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天在寫一個數據庫結構同步小工具,需要用到dbms_metadata.get_ddl這個包取對象的DDL。這個包取本地對象的DDL是沒有問題的,但在這個工具中,需要通過DBLINK方式取遠端數據庫的DDL,經過一番資料查找,找到了解決方法。


首先嘗試直接在dual用dblink,結果出錯:


SQL> SELECT (DBMS_METADATA.GET_DDL('TABLE', 'NEW_A', 'ADMIN')) FROM DUAL@DB230;

SELECT (DBMS_METADATA.GET_DDL('TABLE', 'NEW_A', 'ADMIN')) FROM DUAL@DB230

ORA-31603: object "NEW_A" of type TABLE not found in schema "ADMIN"
ORA-06512: at "SYS.DBMS_METADATA", line 1548
ORA-06512: at "SYS.DBMS_METADATA", line 1585
ORA-06512: at "SYS.DBMS_METADATA", line 1902
ORA-06512: at "SYS.DBMS_METADATA", line 2793
ORA-06512: at "SYS.DBMS_METADATA", line 4333
ORA-06512: at line 1

ADMIN.NEW_A在DB230是存在的,從這個錯誤可以看出,直接在dual表加dblink是沒有意義的,dbms_metadata還是會從本地數據庫查看表是否存在。

接著修改一下SQL,在dbms_metadata也加上dblink,看看結果如何:

SQL> SELECT DBMS_METADATA.GET_DDL@DB230('TABLE', 'NEW_A', 'ADMIN') FROM DUAL@DB230;

SELECT DBMS_METADATA.GET_DDL@DB230('TABLE', 'NEW_A', 'ADMIN') FROM DUAL@DB230

ORA-22992: cannot use LOB locators selected from remote tables

現在錯誤變了,說明在dbms_metadata上加dblink奏效了。新的錯誤很明顯,在SQL方式下,不能直接通過dblink傳送lob,所以需要想辦法把lob轉換為其他類型再傳送:

SQL> SELECT DBMS_LOB.SUBSTR@DB230(DBMS_METADATA.GET_DDL@DB230('TABLE', 'NEW_A', 'ADMIN')) FROM DUAL@DB230;

DBMS_LOB.SUBSTR@DB230(DBMS_MET
--------------------------------------------------------------------------------

CREATE TABLE "ADMIN"."NEW_A"
( "TABLE_NAME" VARCHAR2(32),

"D" DATE,

"BYTES" NUMBER

) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 81920 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "ADMIN_TS"

可以看到,此時遠端數據庫的DDL已經被成功取過來。注意dbms_lob也要加上dblink,表名在遠端數據庫執行這個函數。

最后簡單總結一下:

1.函數和表都可以加dblink,函數加上dblink表示在遠端數據庫執行該函數,表加上dblink表示從遠端數據庫讀取表。

2. 從遠端數據庫取DDL,所有函數及表(dbms_metadata/dbms_lob/dual)都要加上dblink,否則會失敗

3. 此種方法最多返回32767個字節,如果對象的DDL長度大于32767,則只能部分返回。在處理里需特別處理(如分段取DDL)。

4. 如果是在PL/SQL中取遠端數據庫對象的DDL,則可以不用dbms_lob,通過變量賦值的方式不需要dbms_lob截斷,如:

BEGIN
SELECT DBMS_METADATA.GET_DDL@DB230('TABLE','NEW_A','ADMIN') into V FROM DUAL@DB230;
END;

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的如何通过DBLINK取REMOTE DB的DDL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美性大交| 69热在线观看 | av老司机在线观看 | 91精品欧美一区二区三区 | 日本乱轮视频 | 中文字幕一区av | 国产成人免费在线视频 | 天天摸天天做天天爽 | 中文字幕av播放 | 日本男女啪啪 | 亚洲激情综合 | 亚洲欧洲综合 | 久久精品国产亚洲 | 国产成人亚洲精品无码h在线 | 午夜寂寞少妇 | 国产精品免费一区二区三区都可以 | 亚洲va韩国va欧美va | 久久综合一区二区 | 亚洲成人高清在线 | 精品一区二区三区中文字幕 | 亚洲图片一区二区三区 | hitomi一区二区三区精品 | 在线看免费 | 爆操网站| 麻豆网站| 99免费精品视频 | 欧美日韩国产在线一区 | 国产精品三级电影 | 午夜精品视频在线 | 欧美精品一区二区三区在线 | 日本一道本 | 最近中文字幕在线mv视频在线 | 国产成人a亚洲精品 | 国产区精品在线观看 | 91av在 | 亚洲精品国产精品国自产观看 | 成人伊人网站 | 一亲二脱三插 | 国产精品久久久久久久午夜 | 伊人久久一区二区 | 69xxx国产| 毛片一级在线观看 | 极品女神无套呻吟啪啪 | 视频在线日韩 | 亚洲国产成人精品无码区99 | 亚洲视频免费在线观看 | 高清日韩一区二区 | av免费观看入口 | 欧美成人一区二免费视频软件 | 青青草国产成人99久久 | 午夜视频免费看 | 欧日韩在线观看 | 玖玖精品视频 | 手机在线看片福利 | 性做久久久 | 精品人妻一区二区三区香蕉 | 精品亚洲一区二区三区四区五区 | jizzz18| 久久久久二区 | 一级毛片基地 | 黄色在线观看视频网站 | 亚洲精品视频三区 | 在线播放中文字幕 | 日韩视频一区二区三区在线播放免费观看 | 欧美日韩在线视频 | 亚洲综合久久av一区二区三区 | 久久传媒| 91精品国产91久久久久久 | 日本免费黄色 | 91午夜精品亚洲一区二区三区 | 日韩精品视频在线看 | 国模私拍一区二区三区 | 91看片黄色 | 日韩电影在线一区二区 | sese国产 | 精品玖玖玖 | 流白浆视频 | 啊v视频在线 | 欧美自拍偷拍 | 久久久久久久久久久久91 | 天堂网一区二区三区 | 99久久精品免费看国产四区 | 特级精品毛片免费观看 | 中文字幕免费在线视频 | 欧美性xxxxx 亚洲特黄一级片 | 麻豆精品国产传媒 | www日| 极品美女销魂一区二区三区 | 日韩毛片中文字幕 | 天天添天天操 | 国产日韩视频一区 | 国产成人短视频在线观看 | 在线观看亚洲色图 | 人人舔人人干 | 国产无遮挡又黄又爽又色视频 | 欧美大奶在线 | 国产精品成人在线观看 | 国产欧美一区二区三区免费看 | 禁久久精品乱码 |