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