資料庫鏈與同義詞
建立包含資料庫鏈的同義詞時需要額外的注意,否則很可能會出現問題。
如果同義詞指向當前使用者的物件,那麼不會存在任何問題:
SQL> CONN YANGTK/YANGTK@YTK已連線。
SQL> CREATE DATABASE LINK TEST2 CONNECT TO TEST IDENTIFIED BY TEST USING 'TEST2';
資料庫連結已建立。
SQL> SELECT COUNT(*) FROM TEST@TEST2;
COUNT(*)
----------
5
SQL> CREATE SYNONYM TEST FOR TEST@TEST2;
同義詞已建立。
SQL> SELECT COUNT(*) FROM TEST;
COUNT(*)
----------
5
如果是其他使用者建立同義詞指向TEST@TEST2,則會出現問題:
SQL> CREATE USER ABC IDENTIFIED BY ABC;
使用者已建立。
SQL> GRANT DBA TO ABC;
授權成功。
SQL> CONN ABC/ABC@YTK已連線。
SQL> CREATE SYNONYM TEST FOR YANGTK.TEST;
同義詞已建立。
SQL> SELECT COUNT(*) FROM TEST;
SELECT COUNT(*) FROM TEST
*第 1 行出現錯誤:
ORA-02019: 未找到遠端資料庫的連線說明
導致這個問題的最根本原因是資料庫鏈,由於資料庫鏈格式的特殊性,決定了其無法通過SCHEMA.DBLINK_NAME的方式訪問。所以,使用者只能訪問當前使用者下的資料庫鏈或PUBLIC資料庫鏈。
而對於同義詞而言,只是一個別名而已,實際執行的時候,仍然會替換成原本的名稱,所以實際上執行的是:SELECT COUNT(*)FROM TEST@TEST2。
而當前使用者並不包含資料庫鏈,所以出現了上面的錯誤。
這個時候需要在當前使用者下建立同樣的資料庫鏈:
SQL> CREATE DATABASE LINK TEST2 CONNECT TO TEST IDENTIFIED BY TEST USING 'TEST2';
資料庫連結已建立。
SQL> SELECT COUNT(*) FROM TEST;
COUNT(*)
----------
5
如果同義詞指向的是全域性資料庫鏈則不會出現這個問題。
還有一點需要注意,如果當前使用者已經存在一個同名的指向其他資料庫的資料庫鏈,或者使用者人為的建立了一個這樣的資料庫鏈,就會造成錯誤的結果。
SQL> CREATE DATABASE LINK TEST2 CONNECT TO TEST IDENTIFIED BY TEST USING 'TESTDATA';
資料庫連結已建立。
SQL> SELECT COUNT(*) FROM TEST;
COUNT(*)
----------
1
SQL> SELECT COUNT(*) FROM YANGTK.TEST;
COUNT(*)
----------
1
SQL> CONN YANGTK/YANGTK@YTK已連線。
SQL> SELECT COUNT(*) FROM TEST;
COUNT(*)
----------
5
表面上兩個使用者訪問的是同一個物件,但是兩個使用者時間上訪問的是不同的資料庫,這裡一定要小心。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69184/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle學習筆記(十四) 資料庫物件 索引 檢視 序列 同義詞Oracle筆記資料庫物件索引
- 中考常見同義詞和同義短語總結
- [20191122]schama建立同義詞.txt
- 匯出oracle公有同義詞Oracle
- Elasticsearch 近義詞詞庫配置Elasticsearch
- 大資料---單詞釋義大資料
- 6.5. 常用物件——6.5.4. 同義詞物件
- 同義詞相似度可以怎樣計算
- 自動為新建的表建立同義詞
- 【學習】SQL基礎-017-同義詞SQL
- 同時使用資料庫鏈和序列時應注意的幾點(轉)資料庫
- oralce 跨使用者訪問表 同義詞
- Elasticsearch:使用同義詞 synonyms 來提高搜尋效率Elasticsearch
- MYSQL學習與實驗(一)——資料庫定義與操作MySql資料庫
- 區塊鏈與分散式資料庫的比較區塊鏈分散式資料庫
- mysql資料庫多表同結構合併資料MySql資料庫
- 配置達夢資料庫同構DBLINK資料庫
- elasticsearch之ik分詞器和自定義詞庫實現Elasticsearch分詞
- day88-ElasticSearch-分詞- 自定義擴充套件詞庫Elasticsearch分詞套件
- 區塊鏈和資料庫區塊鏈資料庫
- 自定義註解完成資料庫切庫資料庫
- 資料庫中AS的使用意義資料庫
- 已知詞頻生成詞雲圖(資料庫到生成詞雲)--generate_from_frequencies(WordCloud)資料庫Cloud
- 資料庫與資料庫管理系統概述資料庫
- 實時資料庫與時序資料庫資料庫
- NoSQL資料庫概念與NoSQL資料庫家族SQL資料庫
- Vue同構(三): 狀態與資料Vue
- 一文讀懂知識圖譜與向量資料庫的異同資料庫
- 英語背單詞專案(資料庫中是4級單詞)資料庫
- 單一資料庫拆分成幾十個資料庫的意義資料庫
- pyhanlp 停用詞與使用者自定義詞典功能詳解HanLP
- ClickHouse資料庫資料定義手記之資料型別資料庫資料型別
- 同時支援真實資料與 mock 資料的 httpmock 工具MockHTTP
- Mybatis實現分包定義資料庫MyBatis資料庫
- ES 實現實時從Mysql資料庫中讀取熱詞,停用詞MySql資料庫
- 資料庫關鍵詞 drop、truncate和delete的用法資料庫delete
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫
- 資料庫安全與保密資料庫
- 與資料庫打交道資料庫