本文實例講述了oracle跨庫查詢dblink的用法。分享給大家供大家參考,具體如下:
1.創建之前的工作
在創建dblink之前,首先要查看用戶是否有相應的權限。針對特定的用戶,使用 sqlplus user/pwd登錄後,執行如下語句:
復制代碼 代碼如下:select * from user_sys_privs t where t.privilege like upper('%link%');
在sys用戶下,顯示結果為:
SYS CREATE DATABASE LINK NO
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
可以看出在數據庫中dblink有三種權限:
CREATE DATABASE LINK--所創建的dblink只能是創建者能使用,別的用戶使用不了
CREATE PUBLIC DATABASE LINK--public表示所創建的dblink所有用戶都可以使用
DROP PUBLIC DATABASE LINK--刪除指定dblink
如果想要改變某個用戶的權限,需要在sys用戶下修改:
復制代碼 代碼如下:grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott;
查看dblink,有兩種方式,分別如下:
①.復制代碼 代碼如下:select owner,object_name from dba_objects where object_type='DATABASE LINK';
②.復制代碼 代碼如下:select * from dba_db_links;
2. 創建dblink
create public database link LINK_NAME connect to USRNAME identified by "PASSWORD" using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = XXX.XXX.XXX.XXX)(PORT = 1521)) (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = XXX)) )';
注意:using後跟的是一個字符串,其中一定不要出現不必要的空格,否則會出錯ORA-12514,在上面的代碼中為了方便閱讀其中進行了換行,可能會出現空格而導致錯誤,所以使用的時候將空格去掉就ok了。
這裡LINK_NAM為自定的名稱;USERNAME和PASSWORD為指定的oracle數據庫中的用戶名和密碼,SERVICE_NAME如果不確定的話,可以通過以下語句獲得:
復制代碼 代碼如下:show parameter service_names;
或者
復制代碼 代碼如下:select name,value from v$parameter where name='service_names'
3.dblink的使用
dblink的使用相對比較簡單,把一般訪問本地表時的表名改為如下格式即可:[user.]table@link_name。
復制代碼 代碼如下:select studentid from abc.studeng@abc_ten;
4.刪除dblink
確定要刪除的dblink名字以後,可以通過drop命令直接將其刪除:
復制代碼 代碼如下:drop public database link abc_ten;
希望本文所述對大家Oracle數據庫程序設計有所幫助。