3
、
連接數(shù)據(jù)庫(kù)服務(wù)器
(1)
??
啟動(dòng)服務(wù)器端監(jiān)聽器與數(shù)據(jù)庫(kù)服務(wù)
Linux/Unix
下,啟動(dòng)監(jiān)聽器
:
$ lsnrctl start????????????????????
關(guān)閉監(jiān)聽器:
$ lsnrctl stop
查看監(jiān)聽狀態(tài):
$ lsnrctl status
啟動(dòng)數(shù)據(jù)庫(kù):
$ sqlplus /nolog
?????
SQL>conn sys@myoracle as sysdba--
這里的
myoracle
是前面配置的客戶端本地服務(wù)名
或
SQL>conn / as sysdba
SQL>startup
Windows
下,啟動(dòng)監(jiān)聽器:
C:lsnrctl start
啟動(dòng)
Oracle
實(shí)例服務(wù):
C:oradim –startup –sid myoracle??
關(guān)閉
Oracle
實(shí)例服務(wù):
C:oradim –shutdown –sid myoracle
以上服務(wù)必須同時(shí)啟動(dòng),客戶端才能連接數(shù)據(jù)庫(kù)。由于默認(rèn)配置的監(jiān)聽器名稱是
Listener
,上述命令可以正常啟動(dòng)監(jiān)聽器,如果監(jiān)聽器名稱是其它名稱,如
aListener
,則需要用下列方式才能啟動(dòng):
Linux/Unix
下:
$ lsnrctl start aListener
Windows
下:
C:lsnrctl start aListener
?
(2)
??
測(cè)試連接數(shù)據(jù)庫(kù)服務(wù)器
測(cè)試的方法多種多樣,可以在上面配置本地服務(wù)名時(shí)進(jìn)行測(cè)試,也可以是第三方客戶端工具,如
PL/SQL Developer
,最方便的是用
Oracle
自帶的
sqlplus
工具,以下利用
sqlplus
進(jìn)行測(cè)試:
C:sqlplus /nolog
SQL>conn zgh@myoracle
???
(
zgh
是
oracle
的一個(gè)用戶名,如
conn
??
system@myoracle
)
已連接。
?
四、客戶端連接服務(wù)器端常見問題排除方法
要排除客戶端與服務(wù)器端的連接問題,首先檢查客戶端配置是否正確
(
客戶端配置必須與數(shù)據(jù)庫(kù)服務(wù)器端監(jiān)聽配置一致
)
,再根據(jù)錯(cuò)誤提示解決。下面列出幾種常見的連接問題:
1
、
ORA-12541: TNS:
沒有監(jiān)聽器
顯而易見,服務(wù)器端的監(jiān)聽器沒有啟動(dòng),另外檢查客戶端
IP
地址或端口填寫是否正確。啟動(dòng)監(jiān)聽器:
$ lsnrctl start
或
C:lsnrctl start
2
、
ORA-12500: TNS:
監(jiān)聽程序無法啟動(dòng)專用服務(wù)器進(jìn)程
對(duì)于
Windows
而言,沒有啟動(dòng)
Oracle
實(shí)例服務(wù)。啟動(dòng)實(shí)例服務(wù):
C:oradim –startup -sid myoracle
3
、
ORA-12535: TNS:
操作超時(shí)
出現(xiàn)這個(gè)問題的原因很多,但主要跟網(wǎng)絡(luò)有關(guān)。解決這個(gè)問題,首先檢查客戶端與服務(wù)端的網(wǎng)絡(luò)是否暢通,如果網(wǎng)絡(luò)連通,則檢查兩端的防火墻是否阻擋了連接。
4
、
ORA-12154: TNS:
無法處理服務(wù)名
檢 查輸入的服務(wù)名與配置的服務(wù)名是否一致。另外注意生成的本地服務(wù)名文件
(Windows
下如
D:oracleora92networkadmin tnsnames.ora
,
Linux/Unix
下
$ORACLE_HOME/network/admin/tnsnames.ora)
里每項(xiàng)服務(wù)的首 行服務(wù)名稱前不能有空格。
5
、
ORA-12514: TNS:
監(jiān)聽進(jìn)程不能解析在連接描述符中給出的
SERVICE_NAME
打開
Net Manager
,選中服務(wù)名稱,檢查服務(wù)標(biāo)識(shí)欄里的服務(wù)名輸入是否正確。該服務(wù)名必須與服務(wù)器端監(jiān)聽器配置的全局?jǐn)?shù)據(jù)庫(kù)名一致。
6
、
Windows
下啟動(dòng)監(jiān)聽服務(wù)提示找不到路徑
用 命令或在服務(wù)窗口中啟動(dòng)監(jiān)聽提示找不到路徑,或監(jiān)聽服務(wù)啟動(dòng)異常。打開注冊(cè)表,進(jìn)入
HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener
項(xiàng),查看
ImagePath
字符串項(xiàng)是否存在,如果沒有,設(shè)定值為
D:oracleora92BINTNSLSNR
,不同的安裝路徑設(shè)定值做相應(yīng)的更改。這種方法同樣適用于
Oracle
實(shí)例服務(wù),同 上,找到如同
HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE
項(xiàng),查看
ImagePath
字符串項(xiàng)是否存在,如果沒有,則新建,設(shè)定值為
d:oracleora92 binORACLE.EXE MYORACLE
。
以上是
Oracle
客戶端連接服務(wù)器端常見的一些問題,當(dāng)然不能囊括所有的連接異常。解決問題的關(guān)鍵在于方法與思路,而不是每種問題都有固定的答案。
?
?
五、附注部分
近段時(shí)間很多網(wǎng)友提出監(jiān)聽配置相關(guān)問題,客戶終端(Client)無法連接服務(wù)器端(Server)。本文現(xiàn)對(duì)監(jiān)聽配置作一簡(jiǎn)單介紹,并提出一些客戶終端無法連接服務(wù)器端的解決思路,愿對(duì)廣大網(wǎng)友與讀者有一些幫助。
1、
監(jiān)聽器(LISTENER)
監(jiān)聽器是Oracle基于服務(wù)器端的一種網(wǎng)絡(luò)服務(wù),主要用于監(jiān)聽客戶端向數(shù)據(jù)庫(kù)服務(wù)器端提出的連接請(qǐng)求。既然是基于服務(wù)器端的服務(wù),那么它也只存在于數(shù)據(jù)庫(kù)服務(wù)器端,進(jìn)行監(jiān)聽器的設(shè)置也是在數(shù)據(jù)庫(kù)服務(wù)器端完成的。
2、
本地服務(wù)名(Tnsname)
Oracle
客戶端與服務(wù)器端的連接是通過客戶端發(fā)出連接請(qǐng)求,由服務(wù)器端監(jiān)聽器對(duì)客戶端連接請(qǐng)求進(jìn)行合法檢查,如果連接請(qǐng)求有效,則進(jìn)行連接,否則拒絕該連接。
本地服務(wù)名是Oracle客戶端網(wǎng)絡(luò)配置的一種,另外還有Oracle名字服務(wù)器(Oracle Names Server)等。Oracle常用的客戶端配置就是采用的本地服務(wù)名,本文中介紹的也主要是基于本地服務(wù)名的配置。
3、
Oracle
網(wǎng)絡(luò)連接配置方法
配 置Oracle服務(wù)器端與客戶端都可以在其自帶的圖形化Oracle網(wǎng)絡(luò)管理器(Oracle Net Manager)里完成(強(qiáng)烈建議在這個(gè)圖形化的工具下完成Oracle服務(wù)端或客戶端的配置)。在Windows下,點(diǎn)擊“開始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”啟動(dòng)Oracle網(wǎng)絡(luò)管理器工具,在Linux/Unix下,利用netmgr命令來啟動(dòng)圖形化Oracle網(wǎng)絡(luò)管理器,如:
$ netmgr
Windows
下啟動(dòng)Net Manager圖形窗口如下圖示:
?????????????????????????????????????????????????????????????
圖(一)
(1)、
Oracle
監(jiān)聽器配置(LISTENER)
如圖(一)示,選中樹形目錄中監(jiān)聽程序項(xiàng),再點(diǎn)擊左上側(cè)“+”按鈕添加監(jiān)聽程序,點(diǎn)擊監(jiān)聽程序目錄,默認(rèn)新加的監(jiān)聽器名稱是LISTENER(該名稱也可以由任意合法字符命名)。選中該名稱,選中窗口右側(cè)欄下拉選項(xiàng)中的“監(jiān)聽位置”,點(diǎn)擊添加地址按鈕。在出現(xiàn)的網(wǎng)絡(luò)地址欄的協(xié)議下拉選項(xiàng)中選中 “TCP/IP”,主機(jī)文本框中輸入主機(jī)名稱或IP地址(如果主機(jī)即用作服務(wù)端也作為客戶端,輸入兩項(xiàng)之一均有效;如果主機(jī)作為服務(wù)端并需要通過網(wǎng)絡(luò)連接,建議輸入IP地址),端口文本框中輸入數(shù)字端口,默認(rèn)是1521,也可以自定義任意有效數(shù)字端口。配置好的監(jiān)聽位置如下圖示:
???????????????????????????????????????????????????????????????
圖(二)
選中窗口右側(cè)欄下拉選項(xiàng)中的“數(shù)據(jù)庫(kù)服務(wù)”,點(diǎn)擊添加數(shù)據(jù)庫(kù)按鈕。在出現(xiàn)的數(shù)據(jù)庫(kù)欄中輸入全局?jǐn)?shù)據(jù)庫(kù)名,如myoracle。注意這里的全局?jǐn)?shù)據(jù)庫(kù)名與數(shù)據(jù)庫(kù)SID有所區(qū)別,全局?jǐn)?shù)據(jù)庫(kù)名實(shí)際通過域名來控制在同一網(wǎng)段內(nèi)數(shù)據(jù)庫(kù)全局命名的唯一性,就如Windows下的域名控制器,如這里可以輸入 myoracle.192.168.1.5。Oracle主目錄可以不填寫,輸入SID,如myoracle。完整的數(shù)據(jù)庫(kù)服務(wù)配置如下圖示:
????????? 圖(三)
保 存以上配置,默認(rèn)即可在Oracle安裝目錄下找到監(jiān)聽配置文件 (Windows下如D:oracleora92networkadminlistener.ora,Linux/Unix下$ ORACLE_HOME/network/admin/listerer.ora)。至此,Oracle服務(wù)端監(jiān)聽器配置已經(jīng)完成。
(2)、
本地服務(wù)名配置(Tnsnames)
本 地服務(wù)名是基于Oracle客戶端的網(wǎng)絡(luò)配置,所以,如果客戶端需要連接數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行操作,則需要配置該客戶端,其依附對(duì)象可以是任意一臺(tái)欲連接數(shù)據(jù) 庫(kù)服務(wù)器進(jìn)行操作的
pc
機(jī),也可以是數(shù)據(jù)庫(kù)服務(wù)器自身。如前面所介紹,可以利用Oracle自帶的圖形化管理工具Net Manager來完成Oracle客戶端的配置。選中如圖(一)中的服務(wù)命名,再點(diǎn)擊左上側(cè)“+”按鈕,彈出如下圖示對(duì)話框:
????????????????????? 圖(四)
輸入Net服務(wù)名,如myoracle,點(diǎn)擊下一步,進(jìn)入下圖示對(duì)話框:
???????????????? 圖(五)
選中TCP/IP(Internet協(xié)議),點(diǎn)擊下一步,如下圖示:
???????????????? 圖(六)
輸入主機(jī)名與端口號(hào)。注意這里的主機(jī)名與端口號(hào)必須與數(shù)據(jù)庫(kù)服務(wù)器端監(jiān)聽器配置的主機(jī)名和端口號(hào)相同。點(diǎn)擊下一步,如下圖示:
???????????????????? 圖(七)
選中(Oracle8i或更高版本)服務(wù)名,輸入服務(wù)名。這里的服務(wù)名實(shí)際上就是數(shù)據(jù)庫(kù)服務(wù)器端監(jiān)聽器配置中的全局?jǐn)?shù)據(jù)庫(kù)名,前者與后者必須相同。連接類型通常選專用服務(wù)器,這要視數(shù)據(jù)庫(kù)服務(wù)器的配置而定,如果配置的共享數(shù)據(jù)庫(kù)服務(wù)器,這里的連接類型就要選共享服務(wù)器,否則建議選專用服務(wù)器(關(guān)于專用服務(wù)器的介紹請(qǐng)參閱相關(guān)文檔)。配置好后點(diǎn)擊下一步,如下圖示:
???????????????? 圖(八)
如果數(shù)據(jù)庫(kù)服務(wù)器端相關(guān)服務(wù)啟動(dòng)了,可以點(diǎn)擊測(cè)試按鈕進(jìn)行連接測(cè)試。Oracle默認(rèn)是通過scott/tiger用戶進(jìn)行測(cè)試連接,由于scott用戶是 Oracle自帶的示例用戶,對(duì)于正式的業(yè)務(wù)數(shù)據(jù)庫(kù)或?qū)I(yè)測(cè)試數(shù)據(jù)庫(kù)可能沒有配置這個(gè)用戶,所以需要更改成有效的用戶登錄才可能測(cè)試成功。如果這里測(cè)試連接不成功,也不要緊,先點(diǎn)完成按鈕結(jié)束配置。
回 到Oracle網(wǎng)絡(luò)管理器(Oracle Net Manager)主窗口,保存配置,默認(rèn)即可在Oracle安裝目錄下找到本地服務(wù)名配置文件 (Windows下如D:oracleora92networkadmintnsnames.ora,Linux/Unix下$ ORACLE_HOME/network/admin/ tnsnames.ora)。配置完成的本地服務(wù)名如下圖示:
????????????????? 圖(九)
樹形目錄下的服務(wù)命名可以通過編輯菜單里的重命名菜單更改成任意合法字符組成的服務(wù)名稱,注意服務(wù)名稱前不能有空格字符,否則可能無法連接數(shù)據(jù)庫(kù)服務(wù)器。