日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产成人精品一区在线播放 | 一级片美女 | 你懂的在线观看网站 | 五月婷婷色| 天天摸天天操天天射 | 天天撸天天射 | 好吊色免费视频 | 欧美日本 | 亚洲成人精品一区二区三区 | 国产亚洲精品久久久久久777 | 日韩激情毛片 | 一起操在线观看 | 国产成人免费视频 | 佐佐木明希电影 | 一级欧美在线 | 国产另类专区 | 99色99| 亚洲毛片一区二区 | 亚洲一卡一卡 | 热久久最新网址 | 国产欧美日韩三级 | 精品www| 熟睡人妻被讨厌的公侵犯 | 国产区视频在线 | 欧洲av在线播放 | 欧美精品性生活 | 重口变态虐黄网站 | 黄色一级大片 | 91免费国产在线观看 | 亚洲福利 | av在线视屏 | 欧美日本韩国一区 | 在线a视频 | 国产无码精品在线观看 | 精品一区二区三区四 | 国产97在线观看 | 国产激情无码一区二区三区 | 日韩av一二三 | 久久久不卡 | 蜜桃在线一区二区三区 | 午夜精彩视频 | 95香蕉视频 | 国产精品999.| 超碰在线91 | 免费观看h片 | 国产高清片 | av手机在线播放 | 欧美国产视频一区 | 未满十八18禁止免费无码网站 | 成人免费短视频 | 国产精品xxx视频 | 国产经典自拍 | 五月婷婷六月丁香综合 | 外国黄色网 | 国产人伦精品一区二区三区 | 伊人avav| 国产黄色一级网站 | 伦理欧美| 国产美女精品人人做人人爽 | 欧美毛片在线 | 野外吮她的花蒂高h在线观看 | 人与动物黄色片 | 日本在线观看视频网站 | 亚洲av综合色区无码一区爱av | 黑白配在线观看免费观看 | 中国女人毛茸茸 | 欧美日韩一二三四区 | 人妖性生活视频 | 少妇无码av无码专区在线观看 | 中文字幕日日 | 人妻无码一区二区三区久久 | 中文字幕素人 | 无码人妻少妇色欲av一区二区 | 亚洲性图一区二区三区 | 午夜精品久久久久久久久 | 人人草人人澡 | 一本亚洲| 青青草超碰 | 男男gay同性三级 | 中文人妻熟女乱又乱精品 | 日本色一区 | 欧美色香蕉 | 久久aⅴ乱码一区二区三区 亚洲成人18 | 永久免费av无码网站性色av | 青青久视频 | 午夜大片网 | 玖玖综合网 | 国产精品久久久久久久专区 | 久久国产欧美日韩精品 | 啊v视频在线 | 色一情一乱一区二区三区 | 日日射天天干 | 精品熟女一区 | 国产又粗又黄又爽视频 | 中文字幕在线不卡 | 麻豆av一区二区三区在线观看 | 一区二区不卡视频 | 欧美黑人性xxx猛交 少妇无套内谢久久久久 | 免费网站在线高清观看 |