oracle DBlink建立和維護以及ORA-02085 解決辦法
Private | 建立database link的user擁有該database link | 在本地資料庫的特定的schema下建立的database link。只有建立該database link的schema的session能使用這個database link來訪問遠端的資料庫。同時也只有Owner能刪除它自己的private database link。 |
Public | Owner是PUBLIC. | Public的database link是資料庫級的,本地資料庫中所有的擁有資料庫訪問許可權的使用者或pl/sql程式都能使用此database link來訪問相應的遠端資料庫 |
Global | Owner是PUBLIC. |
Global的database link是網路級的,When an Oracle network uses a directory server, the directory server automatically create and manages global database links (as net service names) for every Oracle Database in the network. Users and PL/SQL subprograms in any database can use a global link to access objects in the corresponding remote database. Note: In earlier releases of Oracle Database, a global database link referred to a database link that was registered with an Oracle Names server. The use of an Oracle Names server has been deprecated. In this document, global database links refer to the use of net service names from the directory server. |
create public database link todb151
connect to hezi identified by manager
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.4.151)(PORT = 18000))
)
(CONNECT_DATA =
(SERVICE_NAME = newzqdb)
)
)';
應該注意的是:create public database link todb151
connect to hezi identified by manager
using 'db151' ;
前提是本地tnsname.ora 檔案中有:
db151 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.151)(PORT = 18000))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = newzqdb)
)
)
其中SERVICE_NAME 一般是下面紅字部分,
SQL> show parameter service_names
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string newzqdb
還要注意要和監聽的服務名一致,因為這個遠端是要藉助監聽的。這裡明確的告訴大家,配置靜態監聽註冊時,需要輸入的全域性資料庫名(GLOBAL_DBNAME)輸入什麼都可以,只要保證listerner.ora中的GLOBAL_DBNAME和tnsnames.ora中的SERVICE_NAME保持一致,所以如果是靜態監聽,那麼在建立dblink時應該也應該符合,service_name =listerner.ora中的GLOBAL_DBNAME ,(建立dblink時不一定非得一樣)
[oracle@rac1 ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 01-JUL-2015 21:39:53
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=newzq.com.cn)(PORT=18000)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 01-JUL-2015 20:18:41
Uptime 0 days 1 hr. 21 min. 12 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/products/database/11.2.0.1/network/admin/listener.ora
Listener Log File /u01/oracle/products/diag/tnslsnr/newzq/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=newzq.com.cn)(PORT=18000)))
Services Summary...
Service "newzqdb" has 1 instance(s).
Instance "newzqdb", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
二:建立 private dblink 例項:注意沒有private字眼。
create database link dblink
connect to liuwenhe identified by liuwenhe
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.4.151)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = newzqdb)
)
)';
管理dblink:
在當前資料庫下檢視所有的DBLINK的方法:
1. select * from dba_db_links;
刪除當前資料庫下的一個指定的DBLINK的方法:
1. 刪除public link
drop public database link dblink;
2. 刪除private link
drop database link dblink;
ORA-02085 解決辦法 :
// The connection is rejected.
// *Action: create a database link with the same name as the database it
// connects to, or set global_names=false.
//
2)從報錯資訊的描述上已經可以得到問題的原因和處理方法
錯誤原因:使用的dblink名字與要連線的資料庫名字不相同
處理方法:有兩種處理方法
第一種處理方法:建立與對方資料庫名字相同的dblink
第二種處理方法:調整資料庫引數global_names值為false,取消這種限制
一定要理解具體怎麼操作
SQL> show parameter global_names
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean TRUE
這樣在本地要想建立dblink ,那麼該dblink的名字 ,必須是遠端4.151的global_name ,如下檢視global_name
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
NEWZQDB
也就是隻能起名為newzqdb ,都則報錯ORA-02085
create public database link newzqdb
connect to system identified by manager
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.4.151)(PORT = 18000))
)
(CONNECT_DATA =
(SERVICE_NAME = newzqdb)
)
)';
你可以在本地透過 alter system set global_names=FALSE; 來取消這種限制,一定注意在本地, 不是遠端。
也就是說如果本地global_names這個引數是TRUE,那麼在這裡只能建立一個可以使用的dblink。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-1719656/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle死鎖的檢視以及解決辦法Oracle
- ORACLE 建立DBLINK 自動加域名解決方案Oracle
- linux oracle 建立informix dblink 錯誤解決LinuxOracleORM
- Spark on mesos的坑以及解決辦法Spark
- 關於 Oracle 分割槽索引的建立和維護Oracle索引
- 表存在Clob、Blob欄位,dblink報錯的解決辦法
- Oracle建立dblink MySQLOracleMySql
- Oracle密碼檔案的建立、使用和維護 (zt)Oracle密碼
- 【ASK_ORACLE】Oracle RAC報錯“ipc send timeout”的原因以及解決辦法Oracle
- ScrollView巢狀ListView解決辦法以及原理View巢狀
- rootkits病毒的原理介紹以及解決辦法
- 在RAC建立資料庫報無法建立“/etc/oratab"解決辦法資料庫
- 無法建立目錄或檔案 無法建立目錄的解決辦法
- 【PL/SQL】oracle建立dblinkSQLOracle
- oracle維護服務 oracle解決方案 oracle售後服務Oracle
- Oracle statspack無法收集快照,及解決辦法Oracle
- 【eygle】Oracle的分割槽表和Local索引建立與維護Oracle索引
- 連線oracle錯誤解決辦法Oracle
- oracle 1455 錯誤解決辦法Oracle
- Oracle表碎片起因及解決辦法Oracle
- oracle imp過慢的解決辦法Oracle
- 過擬合和欠擬合以及相對應的解決辦法
- 建立 oracle data gurd 以及三種保護模式Oracle模式
- 普通使用者SSH無密碼互信建立 出現的問題以及解決辦法密碼
- Oracle private dblink和pubic dblinkOracle
- DDOS攻擊的具體解決辦法如何防護
- AWS建立AMI映像資料丟失解決辦法
- Oracle12154解決辦法Oracle
- Oracle ORA-00257故障解決辦法Oracle
- oracle壞塊問題及解決辦法Oracle
- ora-02085問題解決
- Oracle dblink詳解Oracle
- 建立oracle dblink 的兩種方式Oracle
- oracle OEM中 Accessibility Mode disable解決辦法Oracle
- oracle rac asm 問題的官方解決辦法OracleASM
- 你遇到過的相容性問題以及解決辦法
- 使用Hibernate+MySql+nativeSQL的BUG,以及解決辦法MySql
- 網站安全維護公司解決防護方案網站