趙雪琴,楊艷(.鄭州大學(xué)西亞斯國(guó)際學(xué)院,鄭州 4550;.中原工學(xué)院,鄭州 450007)
Oracle 10g數(shù)據(jù)庫(kù)遠(yuǎn)程啟動(dòng)的研究與實(shí)現(xiàn)
趙雪琴1,楊艷2
(1.鄭州大學(xué)西亞斯國(guó)際學(xué)院,鄭州451150;2.中原工學(xué)院,鄭州450007)
Oracle 10g數(shù)據(jù)庫(kù)允許遠(yuǎn)程SYSDBA對(duì)數(shù)據(jù)庫(kù)進(jìn)行管理,如果數(shù)據(jù)庫(kù)關(guān)閉,SYSDBA可以通過(guò)網(wǎng)絡(luò)遠(yuǎn)程將數(shù)據(jù)庫(kù)進(jìn)行啟動(dòng)。為了實(shí)現(xiàn)該過(guò)程,需要深入了解遠(yuǎn)程登錄的原理,進(jìn)行初始化參數(shù)文件中參數(shù)的設(shè)置及服務(wù)器端監(jiān)聽(tīng)器的配置,如果管理員對(duì)這些原理及配置過(guò)程缺乏了解,往往造成遠(yuǎn)程啟動(dòng)的失敗。本文通過(guò)遠(yuǎn)程O(píng)racle啟動(dòng)的實(shí)現(xiàn),深入研究Oracle遠(yuǎn)程啟動(dòng)所涉及的相關(guān)技術(shù),結(jié)合實(shí)際解決了工作中的問(wèn)題。
當(dāng)SYSDBA在一臺(tái)客戶機(jī)上,數(shù)據(jù)庫(kù)駐留在遠(yuǎn)端的另一臺(tái)服務(wù)器上,為了實(shí)現(xiàn)遠(yuǎn)程啟動(dòng),這兩臺(tái)機(jī)器必須要建立一個(gè)TCP/IP的網(wǎng)絡(luò)連接,前提條件是客戶端安裝了Oracle客戶端軟件,SYSDBA通過(guò)該軟件向數(shù)據(jù)庫(kù)服務(wù)器發(fā)出請(qǐng)求,力圖連接數(shù)據(jù)庫(kù)服務(wù)器。例如,SYSDBA發(fā)出以下的請(qǐng)求:
SQL>Sqlplus sys/sias@orcl as sysdba
我們使用的客戶端軟件是SQL*PLUS,sys/sias為用戶名/密碼,啟動(dòng)數(shù)據(jù)庫(kù)的用戶必須具有DBA的身份或操作員的身份,因此要驗(yàn)證sys的身份及密碼是否符合條件,但連接的服務(wù)器上數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉了,如何來(lái)驗(yàn)證用戶的身份呢?如何判斷SYSDBA權(quán)限呢?如何查找要連接的數(shù)據(jù)庫(kù)是否正確呢?這就需要在數(shù)據(jù)庫(kù)服務(wù)器端和客戶端都做好相關(guān)參數(shù)配置。
在遠(yuǎn)程啟動(dòng)數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)服務(wù)器端有三個(gè)前置參數(shù)或文件需要重點(diǎn)關(guān)注:Password file密碼文件、Remote_login_passwordfile參數(shù)和 Listener.ora監(jiān)聽(tīng)文件。Password file密碼文件是檢測(cè)遠(yuǎn)程啟動(dòng)用戶是否有權(quán)限進(jìn)行操作,Remote_login_passwordfile參數(shù)是數(shù)據(jù)庫(kù)允許遠(yuǎn)程登錄或者操作的開(kāi)關(guān),Listener.ora監(jiān)聽(tīng)文件是保證遠(yuǎn)程操作用戶能夠正確地連接到遠(yuǎn)程數(shù)據(jù)庫(kù)實(shí)例。下面對(duì)三個(gè)參數(shù)或文件進(jìn)行具體分析。
2.1Password file密碼文件
在數(shù)據(jù)庫(kù)關(guān)閉情況下,服務(wù)器本地的SYSDBA可以通過(guò)Oracle本地的操作系統(tǒng)認(rèn)證方式來(lái)檢測(cè)啟動(dòng)者的身份。在Oracle安裝過(guò)程中,會(huì)在操作系統(tǒng)中指定Oracle管理員的組,該組中的成員都可以作為SYSDBA的身份連接Oracle,不需要指定用戶名或密碼。但對(duì)網(wǎng)絡(luò)上的SYSDBA,操作系統(tǒng)認(rèn)證不再起作用了。在數(shù)據(jù)庫(kù)關(guān)閉情況下,客戶連接的另一端好像還 “沒(méi)有數(shù)據(jù)庫(kù)”,因此不能從數(shù)據(jù)庫(kù)中進(jìn)行身份的驗(yàn)證,在該情況下,另一種機(jī)制產(chǎn)生了,這就是使用密碼文件Password-file。在密碼文件中保存了一定數(shù)量的用戶名和密碼,這些用戶名可以通過(guò)遠(yuǎn)程來(lái)管理數(shù)據(jù)庫(kù)[1]。
密碼文件的默認(rèn)位置為[ORACLE_HOME]database目錄下,默認(rèn)的名字為PWDora_sid.ora。如果該文件中有sys且密碼為sias,那么該用戶就得到驗(yàn)證,符合啟動(dòng)條件。
如果密碼文件丟失或破壞,我們可以使用命令行工具 Orapwd重新創(chuàng)建密碼文件,該工具在[ORACLE_HOME]in目錄下:
Orapwd file=<fname>password=<password>entries=<users>force=<y/n>
命令中的參數(shù)file為密碼文件名稱,password為用戶sys的密碼,entries為可選參數(shù),設(shè)置DBA和操作員的最大數(shù)目,force為可選參數(shù),該參數(shù)值決定是否重寫(xiě)現(xiàn)有的密碼文件。
C:>orapwd file='e:oracleproduct10.1.0DB_1database pwdorcl.ora'password=sias entries=20
命令結(jié)束后,創(chuàng)建一個(gè)位于默認(rèn)位置的密碼文件,剛創(chuàng)建的文件中只有一個(gè)用戶,就是SYS,利用該用戶SYS作為SYSDBA,通過(guò)網(wǎng)絡(luò)來(lái)連接Oracle數(shù)據(jù)庫(kù)。
但有密碼文件還不行,服務(wù)器端必須允許使用密碼文件來(lái)驗(yàn)證遠(yuǎn)程SYSDBA的身份,初始化參數(shù)文件中的remote_login_passwordfile參數(shù)來(lái)控制是否允許使用密碼文件[2]。
2.2Remote_login_passwordfile
Oracle初始化參數(shù)文件中的參數(shù)分為兩種類型:靜態(tài)參數(shù)和動(dòng)態(tài)參數(shù)。靜態(tài)參數(shù)的特點(diǎn)是參數(shù)修改后不能夠立即生效,必須重新啟動(dòng)數(shù)據(jù)庫(kù)后才能生效。動(dòng)態(tài)參數(shù)是參數(shù)修改后立即生效,數(shù)據(jù)庫(kù)重新啟動(dòng)后依然有效。
Remote_login_passwordfile為靜態(tài)參數(shù),默認(rèn)值為NONE,該設(shè)置意味著不能使用密碼文件,因此不存在遠(yuǎn)程的SYSDBA的登錄。該參數(shù)還有另外兩個(gè)設(shè)置:shared和exclusive。shared值的含義為多個(gè)數(shù)據(jù)庫(kù)可以同時(shí)使用同樣的密碼文件,exclusive值的含義是只有一個(gè)數(shù)據(jù)庫(kù)使用一個(gè)給定的密碼文件。一般用法:一個(gè)數(shù)據(jù)庫(kù)只使用一個(gè)密碼文件,我們可以將該參數(shù)設(shè)置為exclusive:
SQL>alter system set remote_login_passwordfile=exclusive scope=spfile;
該參數(shù)重新啟動(dòng)實(shí)例后生效,sys/sias的身份就可以通過(guò)密碼文件進(jìn)行驗(yàn)證了。
2.3Listener.ora
Listener.ora位于服務(wù)器[ORACLE_HOME] etwork admin目錄。該文件的內(nèi)容提供監(jiān)聽(tīng)進(jìn)程能夠監(jiān)聽(tīng)到的實(shí)例、實(shí)例對(duì)應(yīng)的服務(wù)及實(shí)例對(duì)應(yīng)的服務(wù)器監(jiān)聽(tīng)端口。數(shù)據(jù)庫(kù)服務(wù)必須注冊(cè)到監(jiān)聽(tīng)器,客戶請(qǐng)求連接該數(shù)據(jù)庫(kù)時(shí),監(jiān)聽(tīng)器能夠監(jiān)聽(tīng)到,才能做出響應(yīng)。注冊(cè)的過(guò)程就是將數(shù)據(jù)庫(kù)作為一個(gè)服務(wù)注冊(cè)到監(jiān)聽(tīng)進(jìn)程中。數(shù)據(jù)庫(kù)的注冊(cè)分為兩種類型,靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)。
靜態(tài)注冊(cè)就是監(jiān)聽(tīng)進(jìn)程啟動(dòng)時(shí)讀取Listener.ora文件,將文件中記錄的實(shí)例和服務(wù)注冊(cè)到監(jiān)聽(tīng)程序,而無(wú)論該數(shù)據(jù)庫(kù)實(shí)例是否啟動(dòng)[3]。
動(dòng)態(tài)注冊(cè)是數(shù)據(jù)庫(kù)實(shí)例及服務(wù)沒(méi)有記錄到Listener.ora文件中,當(dāng)實(shí)例啟動(dòng)時(shí),PMON進(jìn)程根據(jù)初始化參數(shù)文件中的參數(shù)instance_name,service_name兩個(gè)參數(shù)將實(shí)例和服務(wù)動(dòng)態(tài)注冊(cè)到監(jiān)聽(tīng)程序,當(dāng)數(shù)據(jù)庫(kù)關(guān)閉時(shí),監(jiān)聽(tīng)程序中不再有該數(shù)據(jù)庫(kù)實(shí)例及服務(wù)的信息。
當(dāng)數(shù)據(jù)庫(kù)安裝后,Listener.ora配置如下:
Oracle數(shù)據(jù)庫(kù)實(shí)例及服務(wù)并沒(méi)有記錄在該文件中,所以當(dāng)我們想啟動(dòng)遠(yuǎn)程已關(guān)閉的數(shù)據(jù)庫(kù)時(shí),監(jiān)聽(tīng)程序由于數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉,不再有數(shù)據(jù)庫(kù)實(shí)例及服務(wù)的信息,因此遠(yuǎn)程連接失敗。解決方法:重新配置listener. ora文件,可以通過(guò)net manager進(jìn)行配置,將數(shù)據(jù)庫(kù)實(shí)例及服務(wù)的信息記錄到文件中,信息如下:
文件中已經(jīng)存在orcl實(shí)例及服務(wù)的信息,關(guān)閉監(jiān)聽(tīng)服務(wù),然后重新啟動(dòng)監(jiān)聽(tīng)服務(wù),啟動(dòng)過(guò)程中,監(jiān)聽(tīng)進(jìn)程讀取Listener.ora中的服務(wù)信息。因?yàn)長(zhǎng)istener.ora中已經(jīng)存在了orcl的信息,所以盡管數(shù)據(jù)庫(kù)已經(jīng)關(guān)閉,但監(jiān)聽(tīng)器中仍然有該服務(wù)的信息,所以客戶端連接成功,然后可以通過(guò)startup啟動(dòng)數(shù)據(jù)庫(kù)。
當(dāng)數(shù)據(jù)庫(kù)服務(wù)器端參數(shù)或者文件進(jìn)行正確配置后,我們?cè)诳蛻舳溯斎耄?/p>
SQL>Sqlplus sys/sias@orcl as sysdba
@后面的orcl為 TNS串。TNS的全稱為 Transparent Network Substrate,代表透明的網(wǎng)絡(luò)底層。TNS是客戶端與服務(wù)器端遠(yuǎn)程連接的基礎(chǔ)軟件。通過(guò)TNS連接串來(lái)告訴Oracle軟件如何與遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行連接。當(dāng)客戶端發(fā)出該命令,往往會(huì)讀取存在于客戶端上的一個(gè)tnsnames.ora的純文本配置文件,該文件存放在[ORACLE_HOME] etworkadmin目錄下。
根據(jù)以上配置信息,我們看到orcl對(duì)應(yīng)一系列的信息。Oracle客戶端軟件將TNS連接串映射為一些連接的重要信息,即連接的服務(wù)器主機(jī)名為HTTP-55C2042D62,數(shù)據(jù)庫(kù)監(jiān)聽(tīng)器的端口為1521,數(shù)據(jù)庫(kù)的服務(wù)名為orcl。通過(guò)以上信息,客戶端軟件確定要連接的目的地,它會(huì)與主機(jī)名為HTTP-55C2042D62的數(shù)據(jù)庫(kù)服務(wù)器在端口1521上打開(kāi)一條TCP/IP連接,隨后會(huì)校驗(yàn)輸入的用戶名、密碼和數(shù)據(jù)庫(kù)實(shí)例,以及數(shù)據(jù)庫(kù)實(shí)例是否允許遠(yuǎn)程登錄,等等,從而達(dá)到遠(yuǎn)程啟動(dòng)數(shù)據(jù)庫(kù)的目的[4]。
在配置完遠(yuǎn)程啟動(dòng)Oracle 10g數(shù)據(jù)庫(kù)相關(guān)參數(shù)后,可進(jìn)一步集成,將遠(yuǎn)程啟動(dòng)功能捆綁在數(shù)據(jù)庫(kù)信息系統(tǒng)的管理客戶端,通過(guò)自動(dòng)執(zhí)行遠(yuǎn)程數(shù)據(jù)庫(kù)啟動(dòng)的批處理文件,定期遠(yuǎn)程啟動(dòng)數(shù)據(jù)庫(kù),執(zhí)行定期抓取數(shù)據(jù)進(jìn)行分析的功能。管理客戶端的批處理文件在實(shí)現(xiàn)遠(yuǎn)程啟動(dòng)功能外,可增加判斷遠(yuǎn)程數(shù)據(jù)庫(kù)監(jiān)聽(tīng)狀態(tài)、判斷遠(yuǎn)程數(shù)據(jù)庫(kù)狀態(tài)和自動(dòng)連接數(shù)據(jù)庫(kù)提示,以提高批處理文件的處理能力,提升遠(yuǎn)程啟動(dòng)數(shù)據(jù)庫(kù)功能的效果[5]。具體實(shí)例如下:
批處理文件執(zhí)行后正常連接到遠(yuǎn)程數(shù)據(jù)庫(kù),執(zhí)行startup命令即可啟動(dòng)遠(yuǎn)程數(shù)據(jù)庫(kù)ORCL[6]。
遠(yuǎn)程啟動(dòng)Oracle數(shù)據(jù)庫(kù)必須對(duì)該技術(shù)所涉及的原理及配置充分了解。在該處理過(guò)程中,涉及到了服務(wù)器端的密碼文件、參數(shù)文件的設(shè)置、TNS連接串、客戶端的Tnsname.ora、服務(wù)器端的Listener.ora及數(shù)據(jù)庫(kù)服務(wù)的靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)諸多內(nèi)容,將該功能應(yīng)用到實(shí)際工作,能夠解決很多具體問(wèn)題。
[1]Thomas kyte.Oracle 9i&10g編程藝術(shù)——深入數(shù)據(jù)庫(kù)體系結(jié)構(gòu)[M].北京:人民郵電出版社,2006.10
[2]王嵐,張國(guó)寧.Oracle程訪問(wèn)技術(shù)研究及其應(yīng)用[J].計(jì)算機(jī)與網(wǎng)絡(luò),2009(24)
[3]張春玉.Oracle數(shù)據(jù)庫(kù)啟動(dòng)過(guò)程分析[J].福建電腦,2010(08)
[4]蓋國(guó)強(qiáng).DBA入門(mén)、進(jìn)階與診斷案例[M].北京:人民郵電出版社,2006.7
[5]CSDN論壇[EB/OL].http://bbs.csdn.net
[6]楊艷,秦森.Oracle數(shù)據(jù)庫(kù)自動(dòng)備份程序的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù)(學(xué)術(shù)交流),2007(22)
Oracle 10g;Remote Boot;Parameters;Registration
Research and Implementation of Remote Boot of Oracle 10g Database
ZHAO Xue Qin1,YANG Yan2
(1.Sias International Institute,Zhengzhou University,Xinzheng 451100;
2.Zhongyuan University of Technology,Zhengzhou 450007)
1007-1423(2015)10-0049-04
10.3969/j.issn.1007-1423.2015.10.014
趙雪琴(1972-),女,河北藁城人,碩士,講師,研究方向?yàn)閿?shù)據(jù)庫(kù)
2015-02-05
2015-03-06
Oracle 10g數(shù)據(jù)庫(kù)允許SYSDBA對(duì)數(shù)據(jù)庫(kù)進(jìn)行遠(yuǎn)程管理,如果數(shù)據(jù)庫(kù)關(guān)閉,SYSDBA可以通過(guò)網(wǎng)絡(luò)遠(yuǎn)程將數(shù)據(jù)庫(kù)進(jìn)行啟動(dòng)。詳細(xì)分析、研究和實(shí)例化整個(gè)啟動(dòng)過(guò)程,涉及服務(wù)器端和客戶端的啟動(dòng)原理、工作流程,包括服務(wù)端的密碼文件、初始化參數(shù)文件和客戶端的服務(wù)名文件。并結(jié)合實(shí)際工作,設(shè)計(jì)和實(shí)現(xiàn)監(jiān)聽(tīng)、啟動(dòng)遠(yuǎn)程數(shù)據(jù)庫(kù)的過(guò)程。
Oracle 10g;遠(yuǎn)程啟動(dòng);參數(shù);注冊(cè)
楊艷(1981-),女,河南濟(jì)源人,碩士,講師,研究方向?yàn)閿?shù)據(jù)庫(kù)和系統(tǒng)仿真
Oracle 10g database allows SYSDBA to perform remote database management.If the database is closed,SYSDBA can boot it remotely through network.Analyzes,researches and exemplifies the entire boot process involves starting the server and client,and workflow,including server password file,initialization parameter file and client service name file.Based on the practical work,designs and implements the process of monitoring and starting remote database.