連通ORACLE
oracle服務端和客戶端的典型配置
劉禕洋
2012.4.12
連通ORACLE
Linux服務端配置
Linux安裝數據庫後,需要配置和啓用監聽器。
配置監聽器
配置全局數據庫和監聽端口1521(端口可選),數據庫默認安裝netca,可以通過執行命令
#netca
按照嚮導提示完成配置,netca是一個GUI工具,需要linux安裝支持GUI工具和JDK環境;
也可以通過新增或修改$oracle_home/network/admin/listener.ora達到同樣目的。
執行步驟:
#export oracle_home=/安裝路徑/app/oracle/product/11R2/dbhome_1
#vi $oracle_home/network/admin/listener.ora
新建或替換下面內容。
配置典型配置格式如下:
(SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /home/oracle/app/oracle/product/11R2/dbhome_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /home/oracle/app/oracle/product/11R2/dbhome_1) (SID_NAME = orcl) ) )
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.120.24)(PORT = 1521)) ) ) ) |
l GLOBAL_DBNAME爲安裝全局數據庫的名稱
l SID_NAME爲安裝全局數據庫的ID名稱,默認與GLOBAL_DBNAME同
l HOST 爲監聽主機,可以爲Ip或機器名稱hostname
l PORT爲監聽端口,默認爲1521
測試配置
使用監聽器命令lsnrctl來啓用、關閉和查看監聽
Ø 執行命令 lsnrctl stop 關閉監聽
Ø 執行命令 lsnrctl start 啓用監聽
Ø 執行命令 lsnrctl status 查看狀態
如果成功則爲The command completed successfully。如果不成功,則說明listener.ora文件配置有誤。
測試是否可以登錄數據庫
#sqlplus
>orcl
>orcl
如果要測試sqlplus 用戶/密碼@服務名方式登錄,請參考LINUX客戶端配置
常見錯誤
配置不正確導致的常見錯誤,請重新修改配置文件。
ORA-12514:listener does not currently know of service requested in connect
ORA-27101: shared memory realm does not exist
ORA-12541 TNS no listener
其他常見錯誤
ORA-12560: TNS: 協議適配器錯誤
答:在客戶端執行命令telnet ip 1521,檢查是否可以通,如不通請檢查網關或包防火牆配置。
如果曾經安裝過oracle服務端或客戶端,此時報錯
請檢查環境變量是否配置正確,嘗試配置或修改環境變量TNS_ADMIN,ORACLE_HOME, PATH 中的oracle路徑爲當前的oracle路徑,具體請參照官方oracle環境變量配置。
連通ORACLE
Linux客戶端配置
Linux客戶端要連接到數據庫,通常需要配置tnsnames.ora內容:
配置TNS本地網絡服務名稱
配置TNS本地網絡服務名稱和端口1521(端口可選),數據庫端默認安裝netca,netca是一個GUI的Oracle net service工具,需要linux安裝支持GUI工具和JDK環境;輸入命令
#netca
按照嚮導提示完成配置本地網絡服務名稱。
如果無netca,也可以通過新增或修改$oracle_home/network/admin/tnsnames.ora完成同樣配置。
執行步驟:
#export oracle_home=/安裝路徑/app/oracle/product/11R2/dbhome_1
#vi $oracle_home/network/admin/tnsnames.ora
如無目錄則建立目錄 network/admin,
增加下面內容。
配置典型配置格式如下:
orclalias= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.120.24)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) |
l orclalias =爲tns連接的服務名稱。
l HOST 爲監聽主機,可以爲Ip或機器名稱hostname
l PORT爲監聽端口,默認爲1521
l SERVICE_NAME = orcl爲服務器的數據庫名稱
測試配置
測試是否可以登錄數據庫
#sqlplus orcl/orcl@orclalias
如果顯示連接到..,並進入sql,則說明配置成功。
測試配置。
查看連通狀態,可使用命令:
#tnsping orclalias
常見錯誤
Tns無法解析錯誤
答:檢查host,port,servername是否配對。
其他錯誤
答:服務端沒有啓用監聽器其端口,或者監聽器配置錯誤。
連通ORACLE
windows服務端配置
Windows安裝數據庫後,需要配置和啓動監聽器。
配置監聽器
配置全局數據庫和監聽端口1521(端口可選),打開開始菜單,在oracle菜單中選擇net configuration assistant或在命令提示窗口下輸入命令netca來配置監聽器,可以通過執行命令
#netca
圖表 1 netca
圖表 2 開始菜單
圖表 3 管理監聽程序配置
按照嚮導提示完成配置,netca需要配置JDK環境;
也可以通過新增或修改%oracle_home%/network/admin/listener.ora完成同樣配置。
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = F:\app\oracle\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:F:\app\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) )
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = RD-LIUYY.ssc.net.cn)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
ADR_BASE_LISTENER = F:\app\oracle |
l LISTENER部分包含協議地址列表,每個實例一個入口
l SID_LIST_LISTENER部分標識全局數據庫名稱、標識監聽程序正在服務的每個實例的Oracle軟件主目錄以及實例或SID。
l SID_LIST描述用於靜態數據庫註冊、保持和以前的版本兼容性以及供Oracle Enterprise Manager使用。
l HOST 爲監聽主機,可以爲Ip或機器名稱hostname
l PORT爲監聽端口,默認爲1521
測試配置
使用監聽器命令lsnrctl來啓用、關閉和查看監聽
Ø D:/> lsnrctl stop 關閉監聽
Ø D:/> lsnrctl start 啓用監聽
Ø D:/> lsnrctl status 查看狀態
如果成功則爲The command completed successfully。如果不成功,則說明listener.ora文件配置有誤。
或在開始菜單cmd中,輸入命令services.msc,找到oracle的TNSListener,來啓用、關閉和查看監聽
或在F:\app\oracle\product\11.2.0\dbhome_1\BIN點擊LSNRCTL.EXE,通過程序啓用監聽器
測試是否可以登錄數據庫
#sqlplus
>orcl
>orcl
如果要測試sqlplus 用戶/密碼@服務名方式登錄,請參考WINDOWS客戶端配置
常見錯誤
配置不正確導致錯誤,重新配置監聽器:
ORA-12514:listener does not currently know of service requested in connect
ORA-27101: shared memory realm does not exist
ORA-12541 TNS no listener
如果曾經安裝過oracle服務端或客戶端,報錯。
請檢查環境變量是否配置正確,嘗試配置或修改環境變量TNS_ADMIN,ORACLE_HOME, PATH 中的oracle路徑爲當前的oracle路徑,具體請參照官方oracle環境變量配置。
並在註冊表中,通過查找原數據庫目錄,並替換爲當前數據庫路徑。
如果仍然不行,請刪除TNS_ADMIN,ORACLE_HOME環境變量,重新配置全局數據庫Database Configuration Assistant,並重新指定ORACLE_HOME等值。
連通ORACLE
windows客戶端配置
配置TNS本地網絡服務名稱
配置TNS本地網絡服務名稱和端口1521(端口可選),數據庫端默認安裝netca,netca是一個GUI的Oracle net service工具,需要JDK環境;輸入命令
#netca
圖表 4 本地網絡服務名
按照嚮導提示完成配置本地網絡服務名稱。
如果無netca,也可以通過新增或修改%oracle_home%/network/admin/tnsnames.ora完成同樣配置。
ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) )
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.12)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) |
配置Instant client 客戶端組件
Instant client是Oracle提供的一個簡易客戶端組件接口,它的特點是精簡、解壓後無需安裝,它沒有圖形化界面,也不提供交互式命令訪問,需要另行下載Instant client sqlplus並放入該目錄中,或者安裝PL/SQL客戶端,配置訪問其組件,有時還需要配置環境變量。
進入目錄instantclient-basic-nt-11.2.0.2.0後,創建目錄network/admin。
在network/admin/中新增文件tnsnames.ora
根據需要配置本地網絡服務名稱如下:
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.12)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) … .. |
爲了使用方便,可配置系統環境變量,打開環境變量窗口,
新建系統環境變量
oracle_home(可選)
根據具體安裝路徑,設置其值爲
D:/instantclient-basic-nt-11.2.0.2.0/instantclient_11_2
修改path環境變量(可選)
根據具體安裝路徑,新增一個值並加;
D:/instantclient-basic-nt-11.2.0.2.0/instantclient_11_2;
配置PL/SQL
打開PL/SQL,點擊取消,進入不登陸狀態,在工具欄上點擊Tools->Preference,點擊左邊列表connection,找到oracle_home,如果配置了環境變量oracle_home,則可以留空,否則配置oracle_home爲D:/instantclient-basic-nt-11.2.0.2.0/instantclient_11_2,找到OCI library,配置爲D:\instantclient-basic-nt-11.2.0.2.0\instantclient_11_2\oci.dll,點擊ok,重啓PL/SQL,在登錄窗口中選擇配置的database名稱,輸入用戶名和密碼及角色後即可成功連接。
在windows環境變量中定義了“NLS_DATE_FORMAT =YYYY/MM/DD HH24:MI:SS”後,查詢語句就可以直接寫爲:
select * from tab1 where operdate='2011/08/26'
測試配置
如果安裝splplus,
在命令行模式下輸入格式爲sqlplus 用戶/密碼@服務名,進行測試
D:> sqlplus orcl/orcl@ORCL
如果安裝pl/sql,可直接打開pl/sql登錄。
常見錯誤
Sqlplus 不是命令。
答:請將下載的instantclient-sqlplus-nt-11.2.0.2.0.zip解壓後放入instantclient-basic-nt-11.2.0.2.0.zip解壓後的目錄,並設置PATH路徑爲instantclient-basic-nt-11.2.0.2.0.zip解壓後的目錄。
Tns無法解析錯誤
答:檢查host,port,servername是否配對。
其他錯誤
答:服務端沒有啓用監聽器其端口,或者監聽器配置錯誤。