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