透明閘道器的安裝配置及一般使用
一個ORACLE如果配置多個透明閘道器資訊,則不需要安裝多次閘道器軟體,只需要安裝一次,然後配置多個$ORACLE_HOME/dg4msql/admin/init閘道器SID.ora檔案並新增多個靜態監聽和tns指向閘道器SID即可,Sqlserver使用者名稱和密碼只在oracle建立dblink時用得上
Oracle透明閘道器連結sqlserver
Oracle:
OS:Red Hat Enterprise Linux Server release 5.4 amd64
DB:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit
Ip:10.98.20.108
Hostname:localhost2.localdomain
Sqlserver
OS:windows server 2003 x86
DB:sqlserver2005
IP:10.98.20.101
Hostname:MDSTestWeb9
例項名稱:MSSQLSERVER
指向的DB:etsudc
1. 在oracle伺服器上安裝和DB一樣版本的閘道器軟體,目錄選擇和DB一樣的ORACLE_HOME
2. 在oracle伺服器檢視剛剛安裝好的閘道器軟體對應的檔案(initdg4msql.ora其中的dg4msql是預設的閘道器SID,當然也可以把檔名手工修改成initwangguan.ora,這樣的話後面涉及到閘道器SID都要修改成wangguan了),確保和如下圖一致(雖然上面安裝介面要輸入sqlserver的例項名稱,但是下面的配置中並未出現例項名稱,只出現了埠,因為sqlserver資料庫,不同的例項具有不同埠,埠即代表了例項)
cat $ORACLE_HOME/dg4msql/admin/initdg4msql.ora
3. 在oracle伺服器上配置監聽增加如下閘道器監聽資訊
(SID_DESC =
(SID_NAME = dg4msql) #此處為配置檔案SID,要與initdg4msql.ora中的名字對應(ORACLE_HOME = /orahome/11.2/db_1)
(PROGRAM = dg4msql) #此處為配置檔案目錄名稱,$ORACLE_HOME/dg4msql/admin/initdg4msql.ora
)
當然如果想讓閘道器監聽資訊不用1521埠也可以如下實驗1522埠
LISTENER_getways =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.98.20.108)(PORT = 1522))
)
)
SID_LIST_LISTENER_getways =
(SID_LIST =
(SID_DESC=
(SID_NAME = dg4msql)
(ORACLE_HOME = /orahome/11.2/db_1)
(PROGRAM = dg4msql)
)
)
4. 在oracle伺服器上重啟監聽檢視閘道器監聽的SID和SERVICE_NAME是什麼
5. 在oracle伺服器上配置tns資訊,新增如下(可以使用閘道器監聽的service_name也可以使用sid,如下使用的是service_name)
dg4msql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.98.20.108)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dg4msql)
)
(HS = OK)
)
與一般配置不同的就是(HS=OK)這句,這句指定是外部程式而不是Oracle資料庫例項
6. 在oracle伺服器上tnsping下dg4msql通不通,如果不通檢查下看看什麼原因,檢查tnsping沒有問題後繼續如下
個人操作的時候遇到tns中host是ip時tnsping不通,但是把tns中的host從ip改成hostname後正常,再改回ip也正常了,目前不知道是什麼原因
7. 在oracle伺服器上建立dblink(最好建立成public)
create public database link SQLSERVERLINK connect to sa identified by "123456" using 'dg4msql';
8. 在oracle伺服器上驗證
select * from hr_social@SQLSERVERLINK;
閘道器伺服器的使用其實就是dblink的使用,dblink不能執行DDL
Select * from test_123@SQLSERVERLINK
insert into test_123@SQLSERVERLINK values (1)
delete from test_123@SQLSERVERLINK
update test_123@SQLSERVERLINK set hid=8
如果需要在ORACLE上再建立一個透明閘道器指向另一臺sqlserver伺服器或指向sqlserver伺服器的另一個sqlserver例項或指向sqlserver伺服器該例項的另一個資料庫,則只需要在步驟2中為新增一個initSID.ora檔案、步驟3中為新增一個靜態監聽SID_DESC指向新的SID,再增加tns和建立dblink即可
如還需要在oracle伺服器10.98.20.108中新建一個透明閘道器指向10.98.20.101中的另一個例項SQLEXPRESS的Ginkgo
1. 必須給sqlserver例項SQLEXPRESS新增埠為1533
2. 在oracle伺服器的$ORACLE_HOME/dg4msql/admin下cp initdg4msql.ora initginko.ora,再修改initginko.ora為如下(好像只能使用[10.98.20.101]:1533//Ginkgo這樣的配置,其他如[10.98.20.101]:1533/SQLEXPRESS/Ginkgo或[10.98.20.101]/SQLEXPRESS/Ginkgo都不行)
3. 再在oracle伺服器上配置監聽增加如下閘道器監聽資訊
4. 重啟監聽後再在oracle伺服器上檢視新增閘道器的sid和service_name是什麼
5. 再在oracle伺服器上配置tns增加如下資訊
6. 再在oracle伺服器上建立dblink,驗證即可
透明閘道器遇到的一些問題
select * from tablename@SQLSERVERDBLINK時報錯ORA-00600: 內部錯誤程式碼,引數: [HO define: Long fetch]
原因:sqlserver表中的資料型別有大文字型別或欄位太多超出了限制,不要使用*,直接寫出欄位名
Select字段名報錯ORA-00904 無效的列名或者識別符號
原因: sqlserver建的表時用了雙引號括起來的列名,select column時”column”加雙引號
RAC配置透明閘道器的方法
RAC環境介紹
OS:linux
DB:Oracle 11GR2
兩個節點,節點1的ip10.98.0.147,節點2的ip10.98.0.148
1. 沒有安裝透明閘道器之前,兩個節點的oracle使用者下面的$ORACLE_HOME都不存在dg4msql目錄
2. 下載getways軟體放到任意一個節點上(放到一個節點上就可以了),並授予oracle:oinstall許可權,chown –R oracle:oinstall getways
3. 在有安裝包的節點上使用Oracle使用者安裝getways,安裝介面預設自動勾選cluster installation,會自動安裝到兩個節點上
4. 兩個節點的oracle使用者下面的$ORACLE_HOME都有dg4msql目錄了,檢視兩個節點的/u01/app/oracle/product/11.2.0/db_1/dg4msql/admin/initdg4msql.ora都有類似如下配置(IP、埠、DB,不會出現例項是因為埠即代表了例項)5. 修改監聽前,節點1和節點2的的監聽資訊如下,RAC的監聽資訊在grid使用者目錄下
節點1有listener和listener_scan1兩個監聽器
節點2有listener一個監聽器
6. 參考以上兩個例項的監聽資訊,我們瞭解到只能修改listener的監聽器的資訊,因為兩者都有這個監聽,節點2沒有listener_scan1這個監聽器,就算有,也不要修改這個監聽資訊,因為只有listener監聽在oracle使用者下面執行lsnrctl status有能看到資訊,而listener_scan1在oracle使用者下執行lsnrctl status listener_scan1壓根看不到任何資訊,修改監聽的方法為在grid使用者下執行netmgr,具體如下圖
節點1修改為如下
節點2修改為如下
7. 重啟監聽資訊,在grid使用者下執行srvctl stop listener、srvctl start listener
8. 在grid或oracle使用者下執行lsnrctl status都發現了透明閘道器的service
9. 修改兩個節點的oracle使用者下的$ORACLE_HOME/network/admin/tnsname.ora檔案,新增如下配置
節點1
Sqlserver_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.98.0.147)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dg4msql)
)
(HS = OK)
)
節點2
Sqlserver_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.98.0.148)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dg4msql)
)
(HS = OK)
)
10. Oracle使用者下執行tnsping sqlserver_DB看是否正常
11. 建立DBlink
create public database link SQLSERVERLINK connect to sa identified by "123456" using 'sqlserver_DB';
12. 執行查詢,看是否正常
select * from tablename@SQLSERVERLINK;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2116918/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE透明閘道器的配置Oracle
- transparent gateway 透明閘道器配置Gateway
- oracle連線teradata透明閘道器配置Oracle
- ORACLE9i 的透明閘道器的配置 (轉)Oracle
- 透明閘道器一些特殊場景的配置
- oracle通過透明閘道器連線mysql的配置OracleMySql
- oracle9i透明閘道器到sqlserver的配置OracleSQLServer
- 透明閘道器 oracle 10g for sqlserver 和sybase的配置Oracle 10gSQLServer
- 安全閘道器 透明加解密解密
- Docker 安裝 Kong 閘道器Docker
- Tyk閘道器Docker安裝Docker
- Tyk API閘道器介紹及安裝說明API
- Oracle 透明閘道器連線MySQLOracleMySql
- Oracle配置透明閘道器訪問sql2000OracleSQL
- Oracle 通過透明閘道器訪問mysql配置步驟OracleMySql
- ORACLE 透明閘道器訪問 MYSQL 表OracleMySql
- Oracle透明閘道器訪問Mysql—luckyfriendsOracleMySql
- 配置Oracle Gateways透明閘道器連線多個MSSQL資料庫OracleGatewaySQL資料庫
- 10g透明閘道器訪問sqlserverSQLServer
- Oracle 通過透明閘道器訪問mysqlOracleMySql
- Oracle 透過透明閘道器 訪問 mysqlOracleMySql
- Oracle Gateways透明閘道器訪問SQL ServerOracleGatewaySQLServer
- Oracle透明閘道器訪問SQLServer資料庫OracleSQLServer資料庫
- Oracle透明閘道器訪問MySQL資料庫OracleMySql資料庫
- oracle透過透明閘道器訪問sql serverOracleSQLServer
- ADSL+RH8.0透明閘道器指南(轉)
- AI閘道器對企業的意義及如何構建 AI 閘道器AI
- ORACLE通過透明閘道器連線DB2OracleDB2
- oracle透明閘道器之異構資料庫的訪問Oracle資料庫
- 透明的閘道器:在Linux上執行IPchains(轉)LinuxAI
- SIA-GateWay之API閘道器安裝部署指南GatewayAPI
- 多網路卡 配置多閘道器
- 什麼是閘道器?閘道器的作用是什麼,閘道器的作用詳解
- 裝置管理閘道器(golang版本)Golang
- GNU/Linux和FreeBSD上的NAT閘道器安裝(轉)Linux
- Janusec應用安全閘道器(WAF閘道器)
- Ceph物件閘道器,多區域閘道器物件
- Modbus轉Ethernet IP閘道器模組與匯川PLC通訊在閘道器配置軟體中的配置