標籤:
設定與Oracle資料庫的連通性比較簡單,但也是非常重要的工作。畢竟TimesTen與Oracle的整合,相較於獨立的TimesTen,是使用更為廣泛的情境。
無論是後續建立Cache Group,還是簡單的從Oracle載入資料到TimesTen,都需要預先設定TimesTen與Oracle資料庫的連通性。
首先看一張概念圖:
在TimesTen DSN的設定中,OracleNetServiceName指定了後端Oracle資料庫的服務名,而實際的服務定義在tnsnames.ora中,這完全符合Oracle的慣例,簡單來說,你可以建立一個tnsnames.ora, 把原有的Oracle服務的定義拷貝到這個檔案,無論是單一實例還是RAC,或者使用已有的tnsnames.ora。
tnsnames.ora則指向實際的後端Oracle資料庫,通常和TimesTen不在同一台主機上。
那麼,TimesTen在哪裡去找這個tnsnames.ora檔案呢? 可以在安裝時指定,後者後續通過ttmodinstall中指定和修改,例如:
[[email protected] info]$ ttmodinstallThe daemon for instance ‘tt1122‘ is currently configured to use port 53392.Would you like to change this port? [ no ] The server for instance ‘tt1122‘ is currently configured to use port 53393.Would you like to change this port? [ no ] TNS_ADMIN for the instance ‘tt1122‘ is currently set to ‘/u01/app/oracle/product/11.2.0/dbhome_1/network/admin‘.Would you like to change TNS_ADMIN for this instance? [ yes ]
實際上,就是設定了一個$TNS_ADMIN的環境變數:
[oracle@timesten-hol info]$ echo $TNS_ADMIN/u01/app/oracle/product/11.2.0/dbhome_1/network/admin[oracle@timesten-hol info]$ ls $TNS_ADMINlistener.ora samples shrept.lst sqlnet.ora tnsnames.ora[oracle@timesten-hol info]$ ls $TNS_ADMIN/tnsnames.ora/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora$ cat $TNS_ADMIN/tnsnames.ora# tnsnames.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora# Generated by Oracle configuration tools.TTORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) (CONNECT_DATA = (SID = orcl) ) )
然後就可以使用sqlplus測試連接Oracle,如果成功,說明tnsnames.ora設定正確,Oracle資料庫物理可達。
注意sqlplus程式以及包含在TimesTen的安裝程式中,無需安裝Oracle的用戶端。
[[email protected] info]$ sqlplus / as [email protected]SQL*Plus: Release 11.2.0.2.0 Production on Wed Jul 13 06:27:44 2016Copyright (c) 1982, 2010, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL>
然後可以測試通過timesten間接聯通Oracle:
$ ttisql -v1 "uid=tthr;pwd=timesten;dsn=cachedb1;oraclepwd=oracle"Command> passthrough 3Command> select * from product_component_version;< NLSRTL , 11.2.0.1.0, Production >< Oracle Database 11g Enterprise Edition , 11.2.0.1.0, 64bit Production >< PL/SQL , 11.2.0.1.0, Production >< TNS for Linux: , 11.2.0.1.0, Production >Command> passthrough 0Command> call ttversion;< 11, 2, 2, 6, 2 >
以上, passthrough 3表示命令在Oracle中執行,passthrough 0表示在TimesTen本地執行。
至此,我們已經可以確定TimesTen與Oracle資料庫的連通性已經正確設定。
設定TimesTen與Oracle資料庫的連通性