如何保護(hù)好Oracle服務(wù)器上的監(jiān)聽器
如何保護(hù)好Oracle服務(wù)器上的監(jiān)聽器
監(jiān)聽器簡(jiǎn)介
Oracle監(jiān)聽器是Oracle服務(wù)器軟件的一個(gè)組件,它負(fù)責(zé)管理Oracle數(shù)據(jù)庫和客戶端之間的通訊,它在一個(gè)特定的網(wǎng)卡端口(默認(rèn)是TCP1521端口)上監(jiān)聽連接請(qǐng)求,并將連接轉(zhuǎn)發(fā)給數(shù)據(jù)庫,由兩個(gè)二進(jìn)制文件組成:tnslsnr和lsnrctl.其中tsnlsnr就是監(jiān)聽器本身,它運(yùn)行在數(shù)據(jù)庫服務(wù)器端,lsnrctl是監(jiān)聽器控制程序,用于在服務(wù)器上或遠(yuǎn)程管理監(jiān)聽器。與監(jiān)聽器相關(guān)的還有兩個(gè)配置文件:sqlnet.ora和listener.ora.tnslsnr啟動(dòng)時(shí)就會(huì)讀取這兩個(gè)配置文件中的信息,如端口號(hào),數(shù)據(jù)庫服務(wù)名。
Oracle監(jiān)聽器在默認(rèn)安裝和配置情況下,有許多著名的漏洞和缺陷,黑客利用這些缺陷可以制造拒絕服務(wù)攻擊,偷竊數(shù)據(jù)庫連接密碼,進(jìn)一步竊取機(jī)密數(shù)據(jù)。最大的風(fēng)險(xiǎn)來自監(jiān)聽器的配置,Oracle官方提供了一些推薦的配置,往往能夠達(dá)到保護(hù)監(jiān)聽器的目的。本文就是想仔細(xì)列出現(xiàn)有的已知保護(hù)Oracle監(jiān)聽器的方法,這些方法對(duì)于黑客而言都很熟悉,所以作為DBA也必須要清楚才行。為什么要保護(hù)監(jiān)聽器?
DBA對(duì)于為什么要保護(hù)監(jiān)聽器往往不太關(guān)心,他們認(rèn)為黑客不太可能通過控制監(jiān)聽器進(jìn)而控制整個(gè)數(shù)據(jù)庫,在Oracle10g之前的所有版本,Oracle監(jiān)聽器允許任何一個(gè)人利用lsnrctl從遠(yuǎn)程發(fā)起對(duì)監(jiān)聽器的管理,但幸運(yùn)的是,從Oracle10.1開始嚴(yán)格限制在遠(yuǎn)程對(duì)監(jiān)聽器的管理了。下面列出一些對(duì)Oracle8/9i默認(rèn)安裝配置時(shí)可能有效的攻擊手段,即使是打上最新的安全補(bǔ)丁,而沒有進(jìn)行安全配置加固,這些攻擊手段也仍然有效:
注意:本文假設(shè)監(jiān)聽器使用的是TCP/IP,并且使用的是本地命名管理(即tnsnames.ora),本文所描述的Oracle版本在8i/9i/10g上做過測(cè)試,但相信對(duì)其他低版本或更高的版本也有一定的參考價(jià)值。怎么保護(hù)監(jiān)聽器?
既然監(jiān)聽器有這么多可供黑客利用的地方,那有沒有什么方法來保護(hù)它,辦法是有的,而且還很多,總結(jié)起來,大概有下面11種方法來保護(hù)Oracle監(jiān)聽器:1、設(shè)備監(jiān)聽器密碼
通過設(shè)置監(jiān)聽器密碼可以阻止大部分的菜鳥黑客的進(jìn)攻,設(shè)置密碼有兩種方法,一種是通過lsnrctl命令來設(shè)置,另一種是直接修改listener.ora文件,第一種方法設(shè)置的密碼是經(jīng)過加密后存儲(chǔ)在listener.ora中,而第二種方法是以明文的形式放在listener.ora中的,所以推薦使用第一種方式。具體命令如下:
LSNRCTL>setcurrent_listenerLSNRCTL>change_password
oldpassword:Newpassword:5、利用防火墻阻止SQL*NET
除非的確需要,否則不應(yīng)該讓SQL*NET通訊通過防火墻,在設(shè)計(jì)防火墻規(guī)則時(shí),應(yīng)設(shè)計(jì)為只允許經(jīng)過認(rèn)證的Web服務(wù)器和應(yīng)用程序通過防火墻進(jìn)行SQL*NET通信。而且放在防火墻DMZ區(qū)域的應(yīng)用服務(wù)器使用SQL*NET通信時(shí),應(yīng)只允許它與特定的數(shù)據(jù)庫服務(wù)器進(jìn)行通信。
通常很少有應(yīng)用會(huì)從Internet直接訪問數(shù)據(jù)庫,因?yàn)檫@種方式的延遲非常明顯,通用的做法是配置應(yīng)用服務(wù)器與數(shù)據(jù)庫通信,Internet客戶端通過瀏覽器訪問應(yīng)用服務(wù)器即可,這時(shí)配置防火墻時(shí)也只需設(shè)置應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器之間的通信規(guī)則即可。6、保護(hù)$TNS_ADMIN目錄
$TNS_ADMIN目錄即我們通?吹降腛RACLE_HOME/network/admin目錄,它下面包含有l(wèi)istener.ora,tnsnames.ora,sqlnet.ora,protocol.ora等重要配置文件,前面已經(jīng)提到,監(jiān)聽器的密碼就是保存在listener.ora中的,如果不保護(hù)好,可能造成密碼泄露,或整個(gè)文件被修改,這個(gè)目錄下的listener.ora,sqlnet.ora,protocol.ora文件應(yīng)該只開放給Oracle主賬戶(通常是oracle或Administrator),而其他賬戶不能有任何權(quán)限,tnsnames.ora文件在Linux或Unix系統(tǒng)上權(quán)限可以設(shè)置為0644,在windows上可以設(shè)置其他用戶為瀏覽,讀取權(quán)限。7、保護(hù)TNSLSNR和LSNRCTL
在Linux或Unix服務(wù)器上,應(yīng)該將這兩個(gè)文件的權(quán)限設(shè)為0751,如果想更嚴(yán)格一點(diǎn),可以設(shè)為0700,這樣就只有安裝oracle時(shí)指定的宿主用戶可以執(zhí)行它們了,這兩個(gè)文件位于ORACLE_HOME/bin目錄下。保護(hù)這兩個(gè)文件的目的是為了防止黑客直接破壞它們,如果tnslsnr被破壞,監(jiān)聽器肯定不能啟動(dòng),如果lsnrctl被破壞,可能植入惡意代碼,在運(yùn)行l(wèi)snrctl時(shí)就會(huì)執(zhí)行其它黑客行為。8、移除不用的服務(wù)
默認(rèn)安裝時(shí),會(huì)安裝一個(gè)PL/SQL外部程序(ExtProc)條目在listener.ora中,它的名字通常是ExtProc或PLSExtProc,但一般不會(huì)使用它,可以直接從listener.ora中將這項(xiàng)移除,因?yàn)閷?duì)ExtProc已經(jīng)有多種攻擊手段了。有時(shí)可能會(huì)在多個(gè)實(shí)例之間拷貝listener.ora,請(qǐng)檢查拷貝來的文件中是否含有不需要的服務(wù),確保只留下的確需要的服務(wù)項(xiàng)目,減少監(jiān)聽器受攻擊的面。
9、改變默認(rèn)的TNS端口號(hào)
改變監(jiān)聽器監(jiān)聽的端口號(hào)與修改ftp服務(wù)器默認(rèn)的21端口,web服務(wù)器的80端口類似,因?yàn)镺racle默認(rèn)的監(jiān)聽端口是1521(Oracle還正式注冊(cè)了兩個(gè)新的端口號(hào)2483和2484,說不定哪個(gè)新版本發(fā)布后,可能默認(rèn)的端口號(hào)就會(huì)是這兩個(gè)了,其中2484用于SSL類型的連接),幾乎所有的掃描器都可以直接掃描這個(gè)端口是否打開,如果設(shè)置為一個(gè)不常用的端口號(hào),可能會(huì)給人一種假象,而且即使掃描到端口打開,也還要猜測(cè)該端口運(yùn)行是究竟是什
擴(kuò)展閱讀:oracle技術(shù)文檔-監(jiān)聽器專題(精)
0racle技術(shù)文檔
版本
V1.0日期201*/10/25
Oracle技術(shù)文檔系列之
Oracle監(jiān)聽器
文件編號(hào):
版本號(hào):V1.0
0racle技術(shù)文檔
版本
V1.0日期201*/10/25
版本修訂歷史
序號(hào)1版本1.0變更描述創(chuàng)建修訂人/日期審核/日期批準(zhǔn)/日期2345670racle技術(shù)文檔
版本
V1.0日期201*/10/251.引言
1.1編寫目的
針對(duì)研發(fā)中心工作中經(jīng)常遇到的oracle監(jiān)聽器發(fā)生故障的情況,特整理編寫此技術(shù)文檔,詳細(xì)介紹Oracle監(jiān)聽器的概念、工作原理、配置以及相關(guān)問題及其處理方法。以期此文檔對(duì)研發(fā)中心的開發(fā)工作有所幫助,并解決問題。
1.2背景1.3定義
1.4參考資料
-1-
0racle技術(shù)文檔
版本
V1.0日期201*/10/252.Oracle監(jiān)聽器概念
Oracle監(jiān)聽器是主要的oracle服務(wù)端網(wǎng)路構(gòu)件,扮演著至關(guān)重要的作用。它負(fù)責(zé)管
理Oracle數(shù)據(jù)庫和客戶端之間的通訊,它在一個(gè)特定的網(wǎng)卡端口(默認(rèn)是TCP1521端口)上監(jiān)聽連接請(qǐng)求,并將連接轉(zhuǎn)發(fā)給數(shù)據(jù)庫。你可以形象的把它認(rèn)為是oracle數(shù)據(jù)庫(服務(wù)端oracle實(shí)例)的大耳朵,一動(dòng)也不動(dòng)的呆在一個(gè)地方(端口號(hào),默認(rèn)是1521),來監(jiān)聽外來的客戶端發(fā)送的連接請(qǐng)求。
Oracle監(jiān)聽器是一個(gè)獨(dú)立的操作系統(tǒng)進(jìn)程。在操作系統(tǒng)的服務(wù)列表可以看見它,一
般名稱為OracleOradb11g_home1TNSListener
Oracle監(jiān)聽器獨(dú)立于oracle實(shí)例,它的啟動(dòng)和關(guān)閉獨(dú)立于oracle數(shù)據(jù)庫的啟動(dòng)和
關(guān)閉。
Orale監(jiān)聽器的默認(rèn)名稱是listener,默認(rèn)端口號(hào)為1521
-2-
0racle技術(shù)文檔
版本
V1.0日期201*/10/253.Oracle監(jiān)聽器功能
3.1監(jiān)聽客戶端請(qǐng)求
監(jiān)聽客戶端請(qǐng)求。監(jiān)聽器運(yùn)行在數(shù)據(jù)庫服務(wù)器之上,與Oracle實(shí)例(可為多個(gè))相關(guān)關(guān)聯(lián),是一個(gè)專門的進(jìn)程process,在Windows的服務(wù)項(xiàng)目或者Linux的運(yùn)行進(jìn)程列表中,都會(huì)看到對(duì)應(yīng)的運(yùn)行進(jìn)程。Windows上名為TNSLSNR,Linux/Unix平臺(tái)上是lsnrctl。監(jiān)聽器守候在服務(wù)器制定端口(默認(rèn)為:1521),監(jiān)聽客戶端的請(qǐng)求。
3.2為客戶端請(qǐng)求分配serverprocess
在Oracle模式下,客戶端進(jìn)程是不允許直接操作數(shù)據(jù)庫實(shí)例和數(shù)據(jù),而是通過一個(gè)服務(wù)進(jìn)程ServerProcess(也稱為影子進(jìn)程)。
監(jiān)聽器只負(fù)責(zé)接聽請(qǐng)求,之后將請(qǐng)求轉(zhuǎn)接給OracleServerProcess。當(dāng)監(jiān)聽器接受到請(qǐng)求之后,就向操作系統(tǒng)(或者Dispathcer組件)要求(或分配)一個(gè)ServerProcess與客戶端相連。
3.3注冊(cè)實(shí)例服務(wù)
監(jiān)聽器是建立實(shí)例和客戶端進(jìn)程之間聯(lián)系的橋梁。監(jiān)聽器和實(shí)例之家的聯(lián)系,就是通過注冊(cè)來實(shí)現(xiàn)的。
注冊(cè)就是將數(shù)據(jù)庫作為一個(gè)服務(wù)注冊(cè)到監(jiān)聽程序。客戶端不需要知道數(shù)據(jù)庫名和實(shí)例名,只需要知道該數(shù)據(jù)庫對(duì)外提供的服務(wù)名就可以申請(qǐng)連接到數(shù)據(jù)庫。這個(gè)對(duì)外的服務(wù)名可以和實(shí)例名一樣,也可以不一樣。
注冊(cè)的過程就是實(shí)例告訴監(jiān)聽器,它的數(shù)據(jù)庫實(shí)例名instance_name和服務(wù)名service_names。(對(duì)外提供的服務(wù)名)。
注冊(cè)的方式有2種:靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)。詳細(xì)內(nèi)容見后面
-3-
0racle技術(shù)文檔
版本
V1.0日期201*/10/254.Oracl監(jiān)聽器工作原理
1)監(jiān)聽器作為一個(gè)獨(dú)立的process在操作系統(tǒng)中運(yùn)行,守候在特定網(wǎng)絡(luò)端口(默認(rèn)1521),
等待客戶端的請(qǐng)求到來。2)當(dāng)一個(gè)請(qǐng)求“如期而至”,監(jiān)聽器會(huì)對(duì)比請(qǐng)求中的service名稱和已經(jīng)注冊(cè)的服務(wù)列表,
如果不匹配,就拒絕。如果匹配,就定位到對(duì)應(yīng)的oracle實(shí)例,并獲得實(shí)例的oracle_home路徑。3)oracle監(jiān)聽器會(huì)向操作系統(tǒng)或dispatcher進(jìn)程(專用連接、共享連接)分配一個(gè)server
process,也就是前面講過的影子進(jìn)程。Serverprocess將自己在OS中的進(jìn)程編連接地址信息發(fā)給監(jiān)聽器;監(jiān)聽器將客戶端信息傳遞給serverprocess.4)監(jiān)聽器獲得serverprocess的信息之后,將其返回給客戶端?蛻舳烁鶕(jù)返回的信息,
與serverprocess在指定的服務(wù)器端口進(jìn)行聯(lián)系。
5)直到這個(gè)時(shí)候客戶端才將連接用戶名、密碼等信息發(fā)給serverprocess,進(jìn)行登錄驗(yàn)
證等操作。監(jiān)聽器的工作也就到此結(jié)束。
5.Oracle監(jiān)聽器注冊(cè)機(jī)制
在上面的內(nèi)容中,我們已經(jīng)初步了解了注冊(cè)的作用,注冊(cè)就是將數(shù)據(jù)庫作為一個(gè)服務(wù)
注冊(cè)到監(jiān)聽程序?蛻舳瞬恍枰罃(shù)據(jù)庫名和實(shí)例名,只需知道該數(shù)據(jù)庫對(duì)外提供的服務(wù)名就可以申請(qǐng)連接到數(shù)據(jù)庫。相當(dāng)于這樣:在數(shù)據(jù)庫服務(wù)器和客戶端之間有一監(jiān)控程序,在監(jiān)聽程序里,會(huì)記錄相應(yīng)數(shù)據(jù)庫對(duì)應(yīng)的服務(wù)名(一個(gè)數(shù)據(jù)庫可對(duì)應(yīng)多個(gè)服務(wù)名),當(dāng)客戶端需要連接數(shù)據(jù)庫時(shí),只需要提供服務(wù)名,就可以建立客戶端與服務(wù)器之間的連接。
5.1靜態(tài)注冊(cè)
靜態(tài)注冊(cè)顧名思義,就是顯示的指定監(jiān)聽器要為哪個(gè)實(shí)例,以哪個(gè)服務(wù)名做監(jiān)聽。靜態(tài)注冊(cè)就是實(shí)例啟動(dòng)時(shí),讀取listener.ora文件配置,將實(shí)例和服務(wù)注冊(cè)到監(jiān)聽程序。Listener.ora文件中的:
GLOBAL_NAME是對(duì)外提供的服務(wù)名。SID_NAME是要注冊(cè)的實(shí)例名。
采取靜態(tài)注冊(cè)方法時(shí),listener.ora中的內(nèi)容如下:
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=
(SID_NAME=PLSExtProc)
(ORACLE_HOME=D:\\oracle\\product\\10.2.0\\db_1)
-4-
0racle技術(shù)文檔
版本
V1.0日期201*/10/25(PROGRAM=extproc))
(SID_DESC=
(GLOBAL_DBNAME=an)
(ORACLE_HOME=D:\\oracle\\product\\10.2.0\\db_1)(SID_NAME=orcl))
(SID_DESC=
(GLOBAL_DBNAME=server2)
(ORACLE_HOME=D:\\oracle\\product\\10.2.0\\db_1)(SID_NAME=oradb)))
該文件表明數(shù)據(jù)庫是單實(shí)例的,實(shí)例名為orcl,向外提供服務(wù)名為an
5.2動(dòng)態(tài)注冊(cè)
動(dòng)態(tài)注冊(cè)是instance啟動(dòng)的時(shí)候,也就是數(shù)據(jù)庫啟動(dòng)的時(shí)候,后臺(tái)進(jìn)程PMON根據(jù)init.ora中的instance_name,service_names兩個(gè)參數(shù)將實(shí)例和服務(wù)動(dòng)態(tài)注冊(cè)到監(jiān)聽中。
動(dòng)態(tài)注冊(cè)可以不需要listener.ora文件。動(dòng)態(tài)注冊(cè)默認(rèn)只注冊(cè)到默認(rèn)的監(jiān)視器上(名稱為LISTENE、端口是1521,協(xié)議是TCP),如果需要向非默認(rèn)的監(jiān)聽器注冊(cè),則需要配置local_listener參數(shù)。
注意:init.ora中的service_names和instance_name這個(gè)參數(shù),會(huì)一定程度上影響動(dòng)態(tài)注冊(cè)的效果
如果沒有顯示的設(shè)置init.ora中的service_names和instance_name值,那么僅當(dāng)數(shù)據(jù)庫在監(jiān)聽器運(yùn)行之后才啟動(dòng)時(shí),動(dòng)態(tài)注冊(cè)才會(huì)發(fā)生。
如果沒有顯示設(shè)置init.ora中的service_names和instance_name值,動(dòng)態(tài)注冊(cè)后,若重啟監(jiān)聽器,則會(huì)發(fā)生動(dòng)態(tài)注冊(cè)信息丟失的情況。
如果我們需要在數(shù)據(jù)庫運(yùn)行期間重啟監(jiān)聽器,僅當(dāng)在init.ora文件中顯示的設(shè)置了service_names和instane_name的值,這樣數(shù)據(jù)庫的PMON進(jìn)程才會(huì)周期性(1分鐘)的完成動(dòng)態(tài)注冊(cè)。
通過命令,也可以強(qiáng)迫PMON立即執(zhí)行一次注冊(cè)。命令如下:SQL>altersystemregister;Systemaltered注:經(jīng)過試驗(yàn)oracle11g版本已經(jīng)不需要在init.ora文件中顯示的設(shè)置service_names和instane_name的值,PMON進(jìn)程會(huì)周期性(1分鐘內(nèi))的自動(dòng)完成動(dòng)態(tài)注冊(cè)
不論何時(shí)數(shù)據(jù)庫實(shí)例關(guān)閉,該實(shí)例動(dòng)態(tài)注冊(cè)的數(shù)據(jù)庫服務(wù)都會(huì)動(dòng)態(tài)的出監(jiān)聽器注銷,這樣,不管數(shù)據(jù)庫是運(yùn)行還是關(guān)閉,監(jiān)聽器總是知道它的狀態(tài)。
-5-
0racle技術(shù)文檔
版本V1.0日期201*/10/25
6.Oracle監(jiān)聽器命令控制臺(tái)(Lsnrctl)
6.1進(jìn)入監(jiān)聽器命令控制臺(tái)
CMDLsnrctl
6.2開啟監(jiān)聽
啟動(dòng)默認(rèn)監(jiān)聽器Listener
LSNRCTL>Start
啟動(dòng)非默認(rèn)監(jiān)聽器,假設(shè)監(jiān)聽器名稱為Lsnrctl_omsLSNRCTL>StartLsnrctl_oms
6.3顯示監(jiān)聽狀態(tài)
LSNRCTL>Status
6.4關(guān)閉監(jiān)聽
關(guān)閉默認(rèn)監(jiān)聽器Listener
LSNRCTL>Stop
關(guān)閉非默認(rèn)監(jiān)聽器,假設(shè)監(jiān)聽器名稱為Lsnrctl_omsLSNRCTL>StopListener_oms
0racle技術(shù)文檔
版本
V1.0日期201*/10/257.Oracle監(jiān)聽配置(服務(wù)器端)
配置Oracle服務(wù)器端監(jiān)聽可以在oracle自帶的圖形化Oracle網(wǎng)絡(luò)管理器(OracleNetManager)里完成(強(qiáng)烈建議在這個(gè)圖形化的工具下完成Oracle服務(wù)端或客戶端的配置,不建議直接在listener.ora文件中配置,主要是為了減少人為輸入錯(cuò)誤)。在Windows下,點(diǎn)擊“開始/程序/Oracle-OraHome92/ConfigurationandMigrationTools/NetManager”啟動(dòng)Oracle網(wǎng)絡(luò)管理器工具,Windows下啟動(dòng)NetManager圖形窗口如下圖示:
如上圖所示,選中樹形目錄中監(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)聽位置如下圖示:
-7-
0racle技術(shù)文檔
版本
V1.0日期201*/10/25
選中窗口右側(cè)欄下拉選項(xiàng)中的“數(shù)據(jù)庫服務(wù)”,點(diǎn)擊添加數(shù)據(jù)庫按鈕。在出現(xiàn)的數(shù)據(jù)庫欄中輸入全局?jǐn)?shù)據(jù)庫名,如myoracle。注意這里的全局?jǐn)?shù)據(jù)庫名與數(shù)據(jù)庫SID有所區(qū)別,全局?jǐn)?shù)據(jù)庫名實(shí)際通過域名來控制在同一網(wǎng)段內(nèi)數(shù)據(jù)庫全局命名的唯一性,就如Windows下的域名控制器,如這里可以輸入myoracle.192.168.1.5。Oracle主目錄可以不填寫,輸入SID,如myoracle。完整的數(shù)據(jù)庫服務(wù)配置如下圖示:
保存以上配置,默認(rèn)即可在Oracle安裝目錄下找到監(jiān)聽配置文件(Windows下如
D:oracleora92networkadminlistener.ora)。至此,Oracle服務(wù)端監(jiān)聽器配置已經(jīng)完成。
-8-
0racle技術(shù)文檔
版本
V1.0日期201*/10/258.Oracle監(jiān)聽器常見問題及解決方法
8.1因服務(wù)器主機(jī)名或IP發(fā)生改變導(dǎo)致監(jiān)聽無法啟動(dòng)
解決方法一:
打開文件listener.ora文件,修改文件中的HOST的值為新的主機(jī)名或IP(見下面劃線部分),然后重新啟動(dòng)監(jiān)聽,監(jiān)聽正常工作LISTENER=
(DESCRipTION_LIST=(DESCRIPTION=(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=IBMThinkPad)(PORT=1521)))))
解決方法二:
直接刪除listener.ora文件,或者將此文件改名。
運(yùn)行Lsnrctlstart生成一個(gè)系統(tǒng)默認(rèn)的監(jiān)聽器,名稱Listener。利用后臺(tái)進(jìn)程POMN自動(dòng)完成監(jiān)聽服務(wù)動(dòng)態(tài)注冊(cè)。用動(dòng)態(tài)注冊(cè)的服務(wù)名來連接數(shù)據(jù)
-9-
0racle技術(shù)文檔
版本
V1.0日期201*/10/258.2客戶端無法連接服務(wù)器問題及排除
1、ORA-12541:TNS:沒有監(jiān)聽器
顯而易見,服務(wù)器端的監(jiān)聽器沒有啟動(dòng),另外檢查客戶端IP地址或端口填寫是否正確。啟動(dòng)監(jiān)聽器:C:lsnrctlstart
2、ORA-12500:TNS:監(jiān)聽程序無法啟動(dòng)專用服務(wù)器進(jìn)程對(duì)于Windows而言,沒有啟動(dòng)Oracle實(shí)例服務(wù)。啟動(dòng)實(shí)例服務(wù):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:oracleora92networkadmintnsnames.ora,Linux/Unix下
/network/admin/tnsnames.ora)里每項(xiàng)服務(wù)的首行服務(wù)名稱前不能有空格。5、ORA-12514:TNS:監(jiān)聽進(jìn)程不能解析在連接描述符中給出的SERVICE_NAME
打開NetManager,選中服務(wù)名稱,檢查服務(wù)標(biāo)識(shí)欄里的服務(wù)名輸入是否正確。該服務(wù)名必須與服務(wù)器端監(jiān)聽器配置的全局?jǐn)?shù)據(jù)庫名一致。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/CurrentControlSet/Services/OracleServiceMYORACLE項(xiàng),查看ImagePath字符串項(xiàng)是否存在,如果沒有,則新建,設(shè)定值為d:oracleora92binORACLE.EXEMYORACLE。
以上是Oracle客戶端連接服務(wù)器端常見的一些問題,當(dāng)然不能囊括所有的連接異常。解決問題的關(guān)鍵在于方法與思路,而不是每種問題都有固定的答案。
-10-
友情提示:本文中關(guān)于《如何保護(hù)好Oracle服務(wù)器上的監(jiān)聽器》給出的范例僅供您參考拓展思維使用,如何保護(hù)好Oracle服務(wù)器上的監(jiān)聽器:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。