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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

如何通过dblink truncate远程数据库上的表

發布時間:2024/8/26 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何通过dblink truncate远程数据库上的表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一般情況下,當我們直接truncate一個遠程的表的時候,通常會返回如下的錯誤信息:
ORA-02021: DDL operations are not allowed on a
remote database.


比如下面的示例:


先在數據庫test上創建一個test表,并插入一些數據,如下:
SQL> conn toms/toms
已連接。
SQL> select instance_name from v$instance;


INSTANCE_NAME
----------------
test
SQL> create table test(no int);


表汛唇ā?


SQL> insert into test values(100);


已創建 1 行。


SQL> commit;
提交完成




然后在另外一個數據庫(study)上建一個 dblink,并嘗試去truncate test數據庫上
toms用戶下的test表:
SQL> select instance_name from v$instance;


INSTANCE_NAME
----------------
study
SQL> create database link from_test connect to toms?
identified by toms using 'local_test';


數據庫鏈接已創建。


SQL> select * from toms.test@from_test;


未選定行


SQL> truncate table toms.test@from_test;
truncate table toms.test@from_test
?? ? ? ? ? ? ? ? ? ? ? ? *
ERROR 位于第 1 行:
ORA-02021: 不允許對遠程數據庫進行 DDL 操作




SQL>?


這時,我們得到了ORA-02021這樣的錯誤,Oracle不允許這么做。那么如果確實有這樣的需求,
我們該怎么辦呢。下面我介紹一個方法:


先在test數據庫上,建立一個類似如下的procedure:


SQL> create or replace procedure proc_truncate_remote_tab(p_tname in varchar2) as
??2 ?BEGIN
??3 ? ? EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || p_tname;
??4 ?EXCEPTION
??5 ? ? WHEN OTHERS THEN
??6 ? ? ? ? ?raise_application_error(-20001,SQLERRM);
??7 ?end;
??8 ?/


過程已創建。




然后在study數據庫上調用test數據庫上的這個procedure去完成這個truncate動作:
BEGIN
?? proc_truncate_remote_tab@db_link('remote_table_name');
END;


下面測試驗證一下:
SQL> select instance_name from v$instance;


INSTANCE_NAME
----------------
study


SQL>?
SQL> select *from test@from_test;


?? ? ? ?NO
----------
?? ? ? 100


SQL> ?begin
??2 ? ? ?proc_truncate_remote_tab@from_test('test');
??3 ? end;
??4 ?/


PL/SQL 過程已成功完成。


SQL> select *from test@from_test;


未選定行


SQL>?
可以看到,遠程test數據庫上toms用戶下的表test已經被truncate掉了。

總結

以上是生活随笔為你收集整理的如何通过dblink truncate远程数据库上的表的全部內容,希望文章能夠幫你解決所遇到的問題。

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