管理oracle實(shí)例第四章_第1頁(yè)
管理oracle實(shí)例第四章_第2頁(yè)
管理oracle實(shí)例第四章_第3頁(yè)
管理oracle實(shí)例第四章_第4頁(yè)
管理oracle實(shí)例第四章_第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第四章管理Oracle實(shí)例(1)實(shí)例(instance)是一組Oracle后臺(tái)進(jìn)程和內(nèi)存結(jié)構(gòu)(SGA)的集合。后臺(tái)進(jìn)程主要包括SMON、PMON、DBWR、CKPT和LGWR等;而其內(nèi)存結(jié)構(gòu)則包括數(shù)據(jù)緩沖區(qū)、重做日志緩沖區(qū)、共享池,它們合稱(chēng)為系統(tǒng)全局區(qū)(SGA)。(2)OracleServer是由實(shí)例和數(shù)據(jù)庫(kù)組成的。我們已經(jīng)知道數(shù)據(jù)庫(kù)實(shí)際上就是三種物理文件:控制文件、數(shù)據(jù)文件和聯(lián)機(jī)重做日志文件。(3)一個(gè)實(shí)例只能訪問(wèn)一個(gè)數(shù)據(jù)庫(kù),而一個(gè)數(shù)據(jù)庫(kù)可以由多個(gè)實(shí)例同時(shí)訪問(wèn)。(4)啟動(dòng)數(shù)據(jù)庫(kù)時(shí)將在內(nèi)存中創(chuàng)建與該數(shù)據(jù)庫(kù)所對(duì)應(yīng)的實(shí)例。實(shí)例是通過(guò)初始化參數(shù)control_files與數(shù)據(jù)庫(kù)建立關(guān)聯(lián)的。該參數(shù)用于指定數(shù)據(jù)庫(kù)的控制文件名,控制文件中又指出了數(shù)據(jù)文件和聯(lián)機(jī)重做日志文件的名稱(chēng)和位置。4.1Oracle用戶(hù)身份認(rèn)證

在數(shù)據(jù)庫(kù)創(chuàng)建之后,只有具有合法身份的用戶(hù)才能夠訪問(wèn)數(shù)據(jù)庫(kù)。用戶(hù)身份認(rèn)證方式有(1)操作系統(tǒng)認(rèn)證、(2)口令認(rèn)證和(3)數(shù)據(jù)庫(kù)服務(wù)器認(rèn)證三種方式。

數(shù)據(jù)庫(kù)服務(wù)器的認(rèn)證方式需要每個(gè)連接到Oracle的用戶(hù)都在數(shù)據(jù)庫(kù)中有一個(gè)賬戶(hù),但這些帳戶(hù)的信息都保存在數(shù)據(jù)庫(kù)內(nèi)部,在打開(kāi)數(shù)據(jù)庫(kù)之前,不能使用這些信息來(lái)對(duì)用戶(hù)進(jìn)行身份認(rèn)證。

因此在執(zhí)行如啟動(dòng)實(shí)例、加載和打開(kāi)數(shù)據(jù)庫(kù)等操作時(shí)(這些操作數(shù)據(jù)庫(kù)還沒(méi)打開(kāi))就不能使用數(shù)據(jù)庫(kù)服務(wù)器的認(rèn)證方式,只能使用操作系統(tǒng)和口令認(rèn)證方式。

具體選用哪種認(rèn)證方式主要取決于兩個(gè)因素:用戶(hù)的操作是在本地進(jìn)行還是通過(guò)網(wǎng)絡(luò)進(jìn)行。如果需要在本地執(zhí)行管理操作,或通過(guò)網(wǎng)絡(luò)進(jìn)行,但是有安全的網(wǎng)絡(luò)連接,可以使用操作系統(tǒng)認(rèn)證方式。

如果需要從其它計(jì)算機(jī)上遠(yuǎn)程執(zhí)行數(shù)據(jù)庫(kù)管理操作,而又沒(méi)有安全的網(wǎng)絡(luò)連接,就只能使用口令文件認(rèn)證的方式。

在口令文件認(rèn)證方式下,Oracle使用口令文件來(lái)對(duì)具有SYSDBA或SYSOPER權(quán)限的用戶(hù)進(jìn)行身份認(rèn)證。在操作系統(tǒng)認(rèn)證方式下,由操作系統(tǒng)的安全機(jī)制來(lái)對(duì)具有SYSDBA或SYSOPER權(quán)限的用戶(hù)進(jìn)行身份認(rèn)證。4.1.1特殊系統(tǒng)權(quán)限:SYSDBA和SYSOPER在Oracle中,有兩個(gè)特殊的系統(tǒng)權(quán)限:SYSDBA和SYSOPER,它們包含了一些最基本的管理操作權(quán)限。1。SYSDBA權(quán)限可執(zhí)行的操作(1)使用STARTUP或SHUTDOWN語(yǔ)句啟動(dòng)或關(guān)閉數(shù)據(jù)庫(kù)與實(shí)例(2)使用ALTERDATABASE語(yǔ)句執(zhí)行打開(kāi)、卸載、備份數(shù)據(jù)庫(kù)等操作。(3)使用CREATEDATABASE語(yǔ)句以手工方式創(chuàng)建數(shù)據(jù)庫(kù)。(4)對(duì)數(shù)據(jù)庫(kù)進(jìn)行歸檔或恢復(fù)。(5)具有RESTRICTEDSESSION權(quán)限,可以在受限狀態(tài)下連接數(shù)據(jù)庫(kù)。2。SYSOPER權(quán)限可執(zhí)行的操作(1)使用STARTUP或SHUTDOWN語(yǔ)句啟動(dòng)或關(guān)閉數(shù)據(jù)庫(kù)與實(shí)例。(2)使用CREATESPFILE語(yǔ)句創(chuàng)建服務(wù)器端初始化參數(shù)文件。(3)使用ALTERDATABASE語(yǔ)句執(zhí)行打開(kāi)、卸載、備份數(shù)據(jù)庫(kù)等操作。(4)對(duì)數(shù)據(jù)庫(kù)進(jìn)行歸檔或恢復(fù)。(5)具有RESTRICTEDSESSION權(quán)限,可以在受限狀態(tài)下連接數(shù)據(jù)庫(kù)。注意:(1)具有SYSDBA和SYSOPER系統(tǒng)權(quán)限用戶(hù),能夠在不打開(kāi)數(shù)據(jù)庫(kù)的情況下直接訪問(wèn)實(shí)例,可見(jiàn)他們的身份認(rèn)證是與數(shù)據(jù)庫(kù)完全無(wú)關(guān)的。(2)用戶(hù)在使用SYSDBA或SYSOPER權(quán)限連接實(shí)例時(shí),實(shí)際上并不是進(jìn)入到用戶(hù)所屬的模式中,而是進(jìn)入默認(rèn)的模式。對(duì)于SYSDBA來(lái)說(shuō)是SYS模式,對(duì)于SYSOPER來(lái)說(shuō)是PUBLIC模式。4.1.2操作系統(tǒng)認(rèn)證方式

(1)如果需要在本地執(zhí)行管理操作,或者可以通過(guò)安全網(wǎng)絡(luò)連接來(lái)執(zhí)行遠(yuǎn)程管理操作,則可以使用操作系統(tǒng)認(rèn)證方式。

(2)Oracle可以利用運(yùn)行數(shù)據(jù)庫(kù)的WindowsNT/2000操作系統(tǒng)來(lái)驗(yàn)證用戶(hù)身份。在操作系統(tǒng)認(rèn)證方式下,當(dāng)用戶(hù)試圖建立到Oracle服務(wù)器的連接時(shí),Oracle服務(wù)器不會(huì)向用戶(hù)要求用戶(hù)名和口令,而是從操作系統(tǒng)中獲得用戶(hù)的登錄信息。

在操作系統(tǒng)認(rèn)證方式下,Oracle在操作系統(tǒng)中創(chuàng)建一個(gè)特殊的用戶(hù)組(ORA_DBA),所有屬于這個(gè)組的用戶(hù)都將被授予SYSDBA或SYSOPER權(quán)限。如果登陸到操作系統(tǒng)中的用戶(hù)屬于這個(gè)組,他將自動(dòng)具有SYSDBA或SYSOPER權(quán)限,因此,當(dāng)他試圖建立到Oracle服務(wù)器的連接時(shí),就不必再提供用戶(hù)名和口令,也不需要在數(shù)據(jù)庫(kù)中創(chuàng)建相應(yīng)的用戶(hù)帳戶(hù)。所有的用戶(hù)認(rèn)證工作都由操作系統(tǒng)本身來(lái)完成,不需要在數(shù)據(jù)庫(kù)中保存任何相關(guān)的信息。用操作系統(tǒng)認(rèn)證方式的步驟如下:(1)在WindowsNT/2000的計(jì)算機(jī)管理中,添加一個(gè)用戶(hù)如abc,將其加入ora_dba組。(2)注銷(xiāo)系統(tǒng),以abc用戶(hù)登錄。(3)然后輸入以下命令c:\>sqlplus/nologsql>connect/assysdba或sql>connect/assysoper

這樣abc用戶(hù)就以sysdba或sysoper的角色登錄Oracle了。不過(guò)這時(shí)abc實(shí)際上是以sys模式連接到數(shù)據(jù)庫(kù)中的。

注意:(1)操作系統(tǒng)驗(yàn)證,要將初始化參數(shù)remote_login_passwordfile設(shè)置為none。

(2)如果不是ora_dba組,則使用connect/assysdba命令時(shí)會(huì)出現(xiàn)權(quán)限不足的情況,另外要把Oracle服務(wù)啟動(dòng),TNSLISTERNER可以不啟動(dòng)4.1.3用口令文件認(rèn)證

在口令文件認(rèn)證方式下,具有SYSDBA和SYSOPER權(quán)限的用戶(hù)被記錄在一個(gè)經(jīng)過(guò)加密處理的口令文件中,這個(gè)口令文件保存有SYS用戶(hù)的口令,并利用SYS用戶(hù)的口令來(lái)訪問(wèn)數(shù)據(jù)庫(kù)??诹钗募且粋€(gè)操作系統(tǒng)文件,它被存儲(chǔ)在服務(wù)器中(不是數(shù)據(jù)庫(kù)中)。當(dāng)用戶(hù)連接數(shù)據(jù)庫(kù)時(shí),Oracle使用口令文件對(duì)用戶(hù)的身份進(jìn)行認(rèn)證。Oracle數(shù)據(jù)庫(kù)在運(yùn)行過(guò)程中將參與口令文件的管理和維護(hù)工作。使用口令文件認(rèn)證方式,按照如下的步驟進(jìn)行操作:(1)在WindowsNT/2000中為DBA創(chuàng)建一個(gè)新的用戶(hù)賬戶(hù),如jxf。(2)使用口令實(shí)用程序orapwd創(chuàng)建口令文件。Oracle提供了一個(gè)口令實(shí)用程序,允許用標(biāo)準(zhǔn)的用戶(hù)名和口令連接到Oracle服務(wù)器,其語(yǔ)法如下:orapwdfile=fnamepassword=passwordentries=entries其中,fname參數(shù)是口令文件完整的路徑和文件名。file參數(shù)是必須的。password參數(shù)指定sys用戶(hù)的口令。sys用戶(hù)的默認(rèn)口令為change_on_install。如果數(shù)據(jù)庫(kù)中使用alteruser語(yǔ)句修改了sys用戶(hù)的口令,Oracle會(huì)自動(dòng)更新口令文件中sys用戶(hù)的口令。password參數(shù)是必須的。entries參數(shù)指定能夠具有SYSDBA或SYSOPER權(quán)限的最大數(shù)據(jù)庫(kù)用戶(hù)數(shù)量,在向口令文件中添加用戶(hù)時(shí),不能超過(guò)這個(gè)數(shù)目,如果需要包含更多的用戶(hù),必須重新建立口令文件。該參數(shù)是可選的。

例:用口令admin為用戶(hù)sys創(chuàng)建的口令文件,并接受10個(gè)不同口令的用戶(hù)c:\>orapwdfile=%oracle_home%/database/pwdstudentpassword=adminentries=10注意:口令文件的位置通常在oracle主目錄的database目錄下(口令文件的位置和文件名都可以隨便?。?/p>

(3)將初始化參數(shù)remote_login_passwordfile設(shè)置為exclusive或shared。如果將該參數(shù)設(shè)置為none,表示沒(méi)有口令文件被使用,使用操作系統(tǒng)認(rèn)證方式時(shí)將該參數(shù)設(shè)置為none。如果將該參數(shù)設(shè)置為exclusive,表明只有一個(gè)實(shí)例可以使用該口令文件,并且該口令文件可以包含除sys以外的用戶(hù)。如果將該參數(shù)設(shè)置為shared,表明可以由多個(gè)實(shí)例使用口令文件,但是這時(shí)不能向口令文件加入除sys用戶(hù)外的其它用戶(hù),口令文件可以識(shí)別的用戶(hù)只有sys。這種設(shè)置適用于只有一位DBA同時(shí)管理多個(gè)實(shí)例的情況。

(4)使用一個(gè)具有DBA權(quán)限的用戶(hù)(如sys)連接到數(shù)據(jù)庫(kù),如以sysdba身份用操作系統(tǒng)認(rèn)證方式來(lái)連接到數(shù)據(jù)庫(kù)服務(wù)器。sql>connect/assysdba(5)在數(shù)據(jù)庫(kù)中創(chuàng)建同名的數(shù)據(jù)庫(kù)用戶(hù),然后為該用戶(hù)授予sysdba或sysoper系統(tǒng)權(quán)限。只有以sysdba身份連接,Oracle才允許管理員給用戶(hù)授予sysdba或sysoper權(quán)限,否則不允許。即使以system賬戶(hù)連接也不行。(很重要,所以要有connectassysdba。)例:創(chuàng)建特權(quán)用戶(hù)jxfc:\>sqlplus/nologsql>connectsys/adminassysdbasql>createuserjxfidentifiedbygyr&mothersql>grantsysdbatojxf;當(dāng)授權(quán)時(shí),用戶(hù)jxf就被添加到口令文件中了,其口令為gyr&mother。如果要查看口令文件中的用戶(hù)信息,可以查詢(xún)動(dòng)態(tài)性能視圖v$pwfile_users。例如

sql>select*fromv$pwfile_users;如果已授予sysdba權(quán)限,動(dòng)態(tài)視圖v$pwfile_users有用戶(hù)名,在sysdba列有true值;如果授予sysoper權(quán)限,在sysoper列有true值。

如果想撤銷(xiāo)某用戶(hù)管理員權(quán)限可以使用命令"revokesysdbafrom用戶(hù)名"實(shí)現(xiàn)。例如:sql>revokesysdbafromjxf;(6)完成上述操作后,如果使用jxf賬戶(hù)登錄WindowsNT/2000,可以通過(guò)如下命令連接到數(shù)據(jù)庫(kù):sql>connectjxf/gyr&motherassysdba當(dāng)通過(guò)使用sysdba權(quán)限連接到數(shù)據(jù)庫(kù)時(shí),被連接到sys模式上而不是用戶(hù)名jxf所提供的方案;而當(dāng)使用sysoper權(quán)限連接時(shí),被連接到public模式。

4.1.4數(shù)據(jù)庫(kù)服務(wù)器認(rèn)證

Oracle可以通過(guò)數(shù)據(jù)庫(kù)服務(wù)器來(lái)驗(yàn)證用戶(hù)身份。在數(shù)據(jù)庫(kù)驗(yàn)證方式下,DBA需要為每個(gè)想登錄Oracle服務(wù)器的用戶(hù)創(chuàng)建用戶(hù)和口令,登錄時(shí)用戶(hù)必須提供用戶(hù)名和口令,該方式是最常用的用戶(hù)身份驗(yàn)證方式。

如果采用數(shù)據(jù)庫(kù)驗(yàn)證,那么創(chuàng)建用戶(hù)時(shí)必須為新用戶(hù)指定一個(gè)口令,口令以加密方式保存在數(shù)據(jù)庫(kù)中。當(dāng)用戶(hù)連接到數(shù)據(jù)庫(kù)時(shí),Oracle從數(shù)據(jù)庫(kù)中提取口令來(lái)對(duì)用戶(hù)的身份進(jìn)行驗(yàn)證。例如,下面的語(yǔ)句將創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)驗(yàn)證的用戶(hù)peter,同時(shí)為他指定了口令、默認(rèn)表空間、臨時(shí)表空間、空間配額和配置文件:

createuserpeteridentifiedbymylstsondefaulttablespacedatatemporarytablespacetempquota15mondataprofileaccounting_user;新創(chuàng)建的用戶(hù)peter并不能立即連接到數(shù)據(jù)庫(kù)中,因?yàn)樗€不具有CREATESESSION系統(tǒng)權(quán)限。因此,在建立新用戶(hù)之后,通常使用GRANT語(yǔ)句為他授予CREATESESSION系統(tǒng)權(quán)限,使他具有連接到數(shù)據(jù)庫(kù)中的能力。如下所示:

grantcreatesessiontopeter;

一種更為便捷的方式是直接授予新用戶(hù)Oracle中預(yù)定義的CONNECT角色,該角色包含了CREATESESSION系統(tǒng)權(quán)限。如下所示:

grantconnecttopeter;

然后peter用戶(hù)就可連接數(shù)據(jù)庫(kù)了,如下所示:

SQL>connectpeter/mylstson

4.2初始化參數(shù)文件

在每一個(gè)數(shù)據(jù)庫(kù)中都有一個(gè)初始化參數(shù)文件,該文件決定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)、內(nèi)存、數(shù)據(jù)庫(kù)的極限及系統(tǒng)大量的默認(rèn)值,是進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)與性能調(diào)節(jié)的重要文件。例如可以在初始化參數(shù)文件中定義SGA尺寸,設(shè)置數(shù)據(jù)庫(kù)名稱(chēng),定義用戶(hù)和進(jìn)程限制,定義控制文件、跟蹤文件和警告日志的位置等。4.2.1Oracle9i文本參數(shù)文件

在安裝Oracle數(shù)據(jù)庫(kù)時(shí),系統(tǒng)自動(dòng)創(chuàng)建了一個(gè)傳統(tǒng)的文本參數(shù)文件pfile,Oracle9i提供了200多個(gè)初始化參數(shù),并且每個(gè)初始化參數(shù)都有默認(rèn)值。在修改或增加初始化參數(shù)時(shí),必須要遵從特定的規(guī)則。如果違反了參數(shù)設(shè)置原則,在啟動(dòng)實(shí)例時(shí)可能會(huì)顯示錯(cuò)誤信息,或者會(huì)導(dǎo)致配置不起任何作用。修改或增加初始化參數(shù)的原則如下:

所有的初始化參數(shù)都是可選的,只有需要設(shè)置的參數(shù)才在初始化參數(shù)文件中列出,沒(méi)有列出的參數(shù),采用默認(rèn)值。

每行只能設(shè)置一個(gè)參數(shù)。

字符型參數(shù)的值如果包含空格或制表位,必須用單引號(hào)或雙引號(hào)將字符串括起來(lái),但數(shù)字型參數(shù)則不能用引號(hào)。例如:nls_territory="CZECHREPUBLIC"

如果一個(gè)初始化參數(shù)有多個(gè)值,則用逗號(hào)隔開(kāi)。例如:rollback_segments=(seg1,seg2,seg3)

初始化參數(shù)文件中只能有賦值語(yǔ)句和注釋語(yǔ)句,注釋語(yǔ)句以“#”符號(hào)開(kāi)頭,是單行注釋。初始化參數(shù)文件中列出的參數(shù)是不分次序的。初始化參數(shù)是一個(gè)可以編輯的文本文件,在WindowsNT/2000系統(tǒng)中參數(shù)文件存儲(chǔ)在:oracle_base\admin\db_name\pfile\init.ora或%oracle_home%\database\initSID.ora。啟動(dòng)實(shí)例時(shí)可以指定相應(yīng)的參數(shù)文件,如:

sql>connectsys/testassysdbasql>startuppfile=%oracle_home%\database\initstudent.ora如果不指定初始化參數(shù)文件,就采用默認(rèn)位置的參數(shù)文件啟動(dòng)實(shí)例。

在初始化參數(shù)文件中主要指定以下參數(shù):

1.指定全局?jǐn)?shù)據(jù)庫(kù)名和實(shí)例名sid

全局?jǐn)?shù)據(jù)庫(kù)名通常由本地?cái)?shù)據(jù)庫(kù)標(biāo)識(shí)和網(wǎng)絡(luò)域名組成,全局?jǐn)?shù)據(jù)庫(kù)名在網(wǎng)絡(luò)中用于惟一地標(biāo)識(shí)一個(gè)Oracle數(shù)據(jù)庫(kù)。本地?cái)?shù)據(jù)庫(kù)標(biāo)識(shí)由db_name參數(shù)指定,在只有一個(gè)實(shí)例的情況下,本地?cái)?shù)據(jù)庫(kù)標(biāo)識(shí)與實(shí)例標(biāo)識(shí)sid相同。網(wǎng)絡(luò)域名由db_domain參數(shù)指定。instance_name參數(shù)用于指定實(shí)例名,應(yīng)該與db_name保持一致。比如創(chuàng)建的新數(shù)據(jù)庫(kù)需要具有全局?jǐn)?shù)據(jù)庫(kù)名,則應(yīng)當(dāng)在初始化參數(shù)文件中設(shè)置如下參數(shù):

db_name=studentinstance_name=studentdb_domain=

2.指定控制文件control_files參數(shù)用于指定控制文件名,Oracle使用該參數(shù)在實(shí)例和數(shù)據(jù)庫(kù)之間建立關(guān)聯(lián),在控制文件中保存有關(guān)于數(shù)據(jù)庫(kù)物理結(jié)構(gòu)的基本信息。例如,使用下面的參數(shù)設(shè)置,在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)將在指定的位置建立三個(gè)控制文件:control_files=("d:\oracle\oradata\control01.ctl","e:\oracle\oradata\control02.ctl","f:\oracle\oradata\control03.ctl")

因?yàn)榭刂莆募?duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō)是至關(guān)重要的,Oracle建議至少為數(shù)據(jù)庫(kù)建立兩個(gè)控制文件,并且應(yīng)當(dāng)將它們分別存在不同的硬盤(pán)中。

3.指定數(shù)據(jù)塊的大小

數(shù)據(jù)庫(kù)塊(Block)是Oracle用來(lái)管理存儲(chǔ)空間的最小單元,一個(gè)數(shù)據(jù)庫(kù)塊可以由一個(gè)或多個(gè)操作系統(tǒng)塊組成。數(shù)據(jù)庫(kù)塊的大小在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)由初始化參數(shù)db_block_size指定,并且在數(shù)據(jù)庫(kù)建立后不能再更改.

db_block_size參數(shù)所指定的值將作為標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)塊的大小,system表空間以及其他表空間默認(rèn)地使用標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)塊大小。數(shù)據(jù)庫(kù)塊大小在數(shù)據(jù)庫(kù)創(chuàng)建后就無(wú)法改變。比如,如下設(shè)置的db_block_size參數(shù)將標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)塊指定為4KB:

db_block_size=4096

對(duì)于I/O密集的操作來(lái)說(shuō),使用雙倍大小的數(shù)據(jù)庫(kù)塊可以提高40%左右的I/O性能。需要注意的是,隨著數(shù)據(jù)庫(kù)塊大小的增加,數(shù)據(jù)庫(kù)對(duì)內(nèi)存(SGA區(qū))的需求也會(huì)隨之增加,因此數(shù)據(jù)庫(kù)塊過(guò)大也會(huì)對(duì)系統(tǒng)性能產(chǎn)生負(fù)面的影響

4.指定與SGA區(qū)相關(guān)的參數(shù)

SGA區(qū)是被所有進(jìn)程共享的內(nèi)存區(qū),是實(shí)例的組成部分。它由數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)和共享池組成。

(1)db_cache_size參數(shù)指定數(shù)據(jù)緩沖區(qū)的大小,它是一個(gè)動(dòng)態(tài)參數(shù),可以在實(shí)例運(yùn)行過(guò)程中動(dòng)態(tài)改變,它的大小對(duì)數(shù)據(jù)庫(kù)性能影響很大。使用較大的db_cache_size可以有效地減少Oracle讀寫(xiě)硬盤(pán)的次數(shù),但是同時(shí)也會(huì)占用過(guò)多的物理內(nèi)存。例如:

db_cache_size=32M

如果要在數(shù)據(jù)庫(kù)中使用非標(biāo)準(zhǔn)塊,除了使用db_cache_size參數(shù)外,至少還要指定—個(gè)db_nK_cache_size參數(shù)。db_nK_cache_size參數(shù)一共有5個(gè):db_2K_cache_size、db_4K_cache_size、db_8K_cache_size、db_16K_cache_size、db_32K_cache_size。

以上5個(gè)參數(shù)用于指定具有非標(biāo)準(zhǔn)塊大小的數(shù)據(jù)緩沖區(qū)的大小。比如:

db_block_size=4096db_cache_size=12Mdb_2K_cache_size=8Mdb_8K_cache_size=4M通過(guò)以上參數(shù)的設(shè)置,為數(shù)據(jù)庫(kù)指定標(biāo)準(zhǔn)塊大小為4k,標(biāo)準(zhǔn)塊對(duì)應(yīng)的數(shù)據(jù)緩沖區(qū)大小為12MB,此外2KB和8KB大小的非標(biāo)準(zhǔn)塊對(duì)應(yīng)的數(shù)據(jù)緩沖區(qū)的大小分別為8MB和4MB。

(2)shared_pool_size參數(shù)用于設(shè)置SGA區(qū)中共享池的大小,shared_pool_size參數(shù)也是一個(gè)動(dòng)態(tài)參數(shù)。此外,如果數(shù)據(jù)庫(kù)被設(shè)置為共享服務(wù)器操作模式,還需要設(shè)置large_pool_size參數(shù),以創(chuàng)建大池。

(3)log_buffer參數(shù)用于指定重做日志緩沖區(qū)的尺寸。例如:

log_buffer=32768通過(guò)以上參數(shù)的設(shè)置,日志緩沖區(qū)指定的大小為32768字節(jié)。

(4)sga_max_size參數(shù)用于限制SGA區(qū)所能使用的最大內(nèi)存空間。盡管SGA區(qū)中數(shù)據(jù)緩沖區(qū)、共享池等組件的大小在Oracle9i中都能動(dòng)態(tài)調(diào)整,但是它們的總和不能超過(guò)由sga_max_size參數(shù)所指定的值。如果用戶(hù)沒(méi)有指定sga_max_size參數(shù),則sga_max_size參數(shù)的默認(rèn)值為初始化參數(shù)文件中設(shè)置的SGA區(qū)各組件大小的總和。

5.指定最大并發(fā)進(jìn)程數(shù)

由process參數(shù)指定Oracle能夠并發(fā)執(zhí)行的操作系統(tǒng)進(jìn)程的最大數(shù)目。process參數(shù)的最小值是6(每個(gè)數(shù)據(jù)庫(kù)至少要啟動(dòng)5個(gè)后臺(tái)進(jìn)程,再加上1個(gè)用戶(hù)進(jìn)程)。比如,如果預(yù)測(cè)最多會(huì)有50個(gè)用戶(hù)進(jìn)程并發(fā)連接數(shù)據(jù)庫(kù),則process參數(shù)至少需要設(shè)置為55。

6.指定撤銷(xiāo)表空間的管理方式

在Oracle9i中,有兩種管理撤銷(xiāo)表空間的方法:自動(dòng)撤銷(xiāo)空間管理或手工撤銷(xiāo)空間管理。參數(shù)undo_management用于指定管理undo數(shù)據(jù)的方式,該參數(shù)是Oracle9i新增加的參數(shù)。

如果設(shè)置該參數(shù)為manual,則管理undo數(shù)據(jù)仍然使用回滾段;如果設(shè)置為auto,則使用undo表空間自動(dòng)管理undo數(shù)據(jù)。

在手工撤銷(xiāo)管理方式下,必須使用rollback_segments參數(shù)為數(shù)據(jù)庫(kù)指定回退段。rollback_segments參數(shù)通常是一個(gè)可用回退段的名稱(chēng)列表。如果沒(méi)有在初始化參數(shù)文件中設(shè)置rollback_segments參數(shù),Oracle將使用system回退段。

建議在數(shù)據(jù)庫(kù)中應(yīng)用自動(dòng)撤銷(xiāo)管理方式,使用撤銷(xiāo)表空間而不是回退段來(lái)存儲(chǔ)撤銷(xiāo)信息。例如:

undo_management=autounto_tablespace=undotbs以上參數(shù)設(shè)置撤銷(xiāo)表空間的管理方式為自動(dòng),使用撤銷(xiāo)表空間undotbs來(lái)存儲(chǔ)撤銷(xiāo)記錄。

如果參數(shù)undo_management被設(shè)置為auto,必須使用undo_tablespace參數(shù)為數(shù)據(jù)庫(kù)指定撤銷(xiāo)表空間,而且undo_tablespace所對(duì)應(yīng)的undo表空間必須存在,否則會(huì)導(dǎo)致OracleServer無(wú)法啟動(dòng)。在創(chuàng)建數(shù)據(jù)庫(kù)時(shí),默認(rèn)情況下Oracle會(huì)自動(dòng)創(chuàng)建一個(gè)名稱(chēng)為undotbs的默認(rèn)撤銷(xiāo)表空間。

7.跟蹤文件和警告文件的存放位置

background_dump_dest參數(shù)用于指定后臺(tái)進(jìn)程跟蹤文件和警告文件所在的目錄。

user_dump_dest該參數(shù)用于指定用戶(hù)進(jìn)程跟蹤文件所在的目錄。例如:

background_dump_dest=d:\oracle\admin\student\bdumpuser_dump_dest=d:\oracle\admin\student\udump以上參數(shù)設(shè)置,將后臺(tái)進(jìn)程跟蹤文件和警告文件所在的目錄設(shè)置為d:\oracle\admin\student\bdump將用戶(hù)進(jìn)程跟蹤文件所在的目錄設(shè)置為d:\oracle\admin\student\udump8.歸檔日志文件的存放位置

參數(shù)log_archive_dest_1由于存放歸檔日志文件的位置。例如:

log_archive_dest_1="location=d:\oracle\oradata\master\“9.指定特權(quán)用戶(hù)的認(rèn)證方式

如果特權(quán)用戶(hù)通過(guò)口令文件的方式認(rèn)證,要將參數(shù)remote_login_passwordfile設(shè)置為exclusive或shared。如果該參數(shù)設(shè)置為shared表示多個(gè)實(shí)例共享一個(gè)口令文件,且特權(quán)用戶(hù)只能有一個(gè)sys。如果該參數(shù)設(shè)置為exclusive表示口令文件只能由一個(gè)實(shí)例專(zhuān)用,并且可以配置多個(gè)特權(quán)用戶(hù)。如果將該參數(shù)設(shè)置為none,表示特權(quán)用戶(hù)使用操作系統(tǒng)認(rèn)證方式。例如:

remote_login_passwordfile=exclusive將特權(quán)用戶(hù)的認(rèn)證方式設(shè)置為口令文件,并且可以設(shè)置多個(gè)特權(quán)用戶(hù)。

下面為參數(shù)文件的部分內(nèi)容:

db_name=studentinstance_name=studentcontrol_files=("d:\oracle\oradata\control01.ctl","e:\oracle\oradata\control02.ctl","f:\oracle\oradata\control03.ctl")log_archive_dest_1="location=d:\oracle\oradata\student\"db_block_size=2048db_cache_size=30Mshared_pool_size=15728640log_buffer=32768background_dump_dest=d:\oracle\admin\student\bdumpremote_login_passwordfile=exclusiveundo_management=autounto_tablespace=undotbs…4.2.2服務(wù)器端參數(shù)文件1.服務(wù)器端參數(shù)文件

從Oracle8i開(kāi)始,有許多初始化參數(shù)都成為了動(dòng)態(tài)參數(shù),也就是說(shuō)可以在數(shù)據(jù)庫(kù)運(yùn)行期間利用altersystem或altersession語(yǔ)句來(lái)修改初始化參數(shù),并且不需要重新啟動(dòng)數(shù)據(jù)庫(kù),修改就可以立即生效。但是使用altersystem語(yǔ)句對(duì)初始化參數(shù)進(jìn)行的修改并不能保存在初始化參數(shù)文件中。因此,在下一次啟動(dòng)數(shù)據(jù)庫(kù)時(shí),Oracle依然會(huì)使用初始化參數(shù)文件中的參數(shù)設(shè)置對(duì)實(shí)例進(jìn)行配置。如果要永久性地修改某個(gè)初始化參數(shù),DBA必須通過(guò)手工方式對(duì)初始化參數(shù)文件進(jìn)行編輯,這就為初始化參數(shù)的管理帶來(lái)了不便。并且對(duì)于文本初始化參數(shù)文件,無(wú)論是啟動(dòng)本地?cái)?shù)據(jù)庫(kù)還是遠(yuǎn)程數(shù)據(jù)庫(kù),都會(huì)讀取本地的初始化參數(shù)文件,并使用其中的設(shè)置來(lái)配置數(shù)據(jù)庫(kù)。也就是說(shuō)如果DBA需要以遠(yuǎn)程方式啟動(dòng)數(shù)據(jù)庫(kù),必須在本地的客戶(hù)機(jī)中保存一份初始化參數(shù)文件的備份。由于文本初始化參數(shù)文件存在的這些不便,因此在Oracle9i中引入了服務(wù)器端初始化參數(shù)文件spfile。

服務(wù)器端初始化參數(shù)文件以二進(jìn)制形式保存在服務(wù)器端,用戶(hù)不能直接對(duì)它進(jìn)行修改,只能通過(guò)altersystem語(yǔ)句來(lái)修改其中的初始化參數(shù),盡管能夠打開(kāi)它查看其中的內(nèi)容,但是任何用戶(hù)都不應(yīng)當(dāng)手工對(duì)其中的內(nèi)容進(jìn)行編輯,否則實(shí)例將無(wú)法啟動(dòng)。

服務(wù)器端初始化參數(shù)文件始終存放在數(shù)據(jù)庫(kù)服務(wù)器端,默認(rèn)地保存在%oracle_home%\databases目錄中,默認(rèn)名稱(chēng)為spfile<SID>.ora。啟動(dòng)實(shí)例時(shí),默認(rèn)讀服務(wù)器端初始化參數(shù)文件。

如果DBA需要遠(yuǎn)程啟動(dòng)實(shí)例,不需要在客戶(hù)機(jī)中保留一份初始化參數(shù)文件,實(shí)例會(huì)自動(dòng)從服務(wù)器中讀取服務(wù)器端初始化參數(shù)文件的內(nèi)容。這樣做的另一個(gè)優(yōu)點(diǎn)是能夠確保同一個(gè)數(shù)據(jù)庫(kù)的多個(gè)實(shí)例都具有完全相同的初始化參數(shù)設(shè)置。

2.用初始化參數(shù)文件啟動(dòng)實(shí)例

數(shù)據(jù)庫(kù)啟動(dòng)時(shí),Oracle9i默認(rèn)讀取服務(wù)器參數(shù)。如果沒(méi)有定義服務(wù)器參數(shù),或服務(wù)器參數(shù)文件破壞,則自動(dòng)讀取文本參數(shù)文件。如果要使用文本參數(shù)啟動(dòng)數(shù)據(jù)庫(kù),則必須使用pfile指出數(shù)據(jù)庫(kù)文本文件名及路徑。在執(zhí)行startup語(yǔ)句啟動(dòng)數(shù)據(jù)庫(kù)時(shí),它將按照如下順序?qū)ふ页跏蓟瘏?shù)文件:

(1)首先檢查是否使用了pfile參數(shù)指定了文本初始化參數(shù)文件。如果有pfile參數(shù),就用pfile參數(shù)指定的文本初始化參數(shù)文件啟動(dòng)實(shí)例。

(2)如果沒(méi)有pfile參數(shù),在默認(rèn)位置檢查是否存在服務(wù)器端初始化參數(shù)文件。如果存在,就用默認(rèn)位置的服務(wù)器端參數(shù)文件啟動(dòng)實(shí)例。

(3)沒(méi)有使用pfile參數(shù),也沒(méi)有服務(wù)器端初始化參數(shù)文件,或該文件被破壞了,則在默認(rèn)位置尋找默認(rèn)名稱(chēng)的文本初始化參數(shù)文件,用該文本文件啟動(dòng)實(shí)例。使用服務(wù)器參數(shù)文件spfileSID.ora啟動(dòng)數(shù)據(jù)庫(kù)命令如下:c:\>sqlplus/nologsql>connect/assysdbasql>startup

使用文本文件pfile啟動(dòng)數(shù)據(jù)庫(kù):c:\>sqlplus/nologsql>connect/assysdbasql>startuppfile=d:\oracle\ora90\database\initstudent.ora但是,不得使用spfile參數(shù)指出服務(wù)器參數(shù)文件名及路徑。例如:

sql>startupspfile=d:\oracle\ora90\database\spfilestudent.ora結(jié)果顯示:

sp2-0714:invalidcombinationofstartupoptions3.創(chuàng)建服務(wù)器參數(shù)

Oracle9i服務(wù)器可以自動(dòng)調(diào)整數(shù)據(jù)庫(kù)參數(shù)。數(shù)據(jù)庫(kù)創(chuàng)建后,可以使用命令createspfile從文本文件轉(zhuǎn)換為數(shù)據(jù)庫(kù)創(chuàng)建服務(wù)器參數(shù),也可以從spfile創(chuàng)建文本型參數(shù)文件,實(shí)現(xiàn)參數(shù)文件的相互轉(zhuǎn)換。

在數(shù)據(jù)庫(kù)創(chuàng)建或安裝成功后,啟動(dòng)數(shù)據(jù)庫(kù),使用服務(wù)器參數(shù)文件創(chuàng)建文本文件的命令如下:

sql>createpfilefromspfile='d:\oracle\ora90\database\spfilestudent.ora'則在默認(rèn)路徑中創(chuàng)建系統(tǒng)默認(rèn)的文本參數(shù)文件init$oracle_sid.ora。

也可以使用pfile指出要?jiǎng)?chuàng)建的文本參數(shù)文件名以及路徑:

sql>createpfile="d:\oracle\ora90\database\initstudent.ora"fromspfile="d:\oracle\ora90\database\spfilestudent.ora“或

sql>createpfile="d:\oracle\ora90\database\initstudent.ora"fromspfile在上述命令執(zhí)行成功后,自動(dòng)產(chǎn)生了數(shù)據(jù)庫(kù)的文本文件。創(chuàng)建服務(wù)器參數(shù)文件有多種方法:方法1:創(chuàng)建默認(rèn)的服務(wù)器參數(shù)文件sql>createspfilefrompfile="d:\oracle\ora90\database\initstudent.ora"執(zhí)行上述命令后,在默認(rèn)路徑中創(chuàng)建了一個(gè)系統(tǒng)默認(rèn)的服務(wù)器參數(shù)文件,文件名為spfile$oracle_sid.ora。方法2:使用默認(rèn)的文本參數(shù)文件在默認(rèn)路徑中創(chuàng)建服務(wù)器參數(shù)文件。sql>createspfilefrompfile;方法3:使用spfile指出要?jiǎng)?chuàng)建的文本參數(shù)文件名及路徑。sql>createspfile="d:\oracle\ora90\database\spfilestudent.ora"frompfile="d:\oracle\ora90\database\initstudent.ora“或sql>createspfile="d:\oracle\ora90\database\spfilestudent.ora"frompfile可以使用show命令檢測(cè)數(shù)據(jù)庫(kù)中是否使用服務(wù)器參數(shù)文件,如果顯示為空值,則表示該數(shù)據(jù)庫(kù)使用文本類(lèi)型參數(shù)文件。例如:

sql>showparameterspfile如果數(shù)據(jù)庫(kù)正在使用文本類(lèi)型參數(shù)運(yùn)行,可以按下面方法,將數(shù)據(jù)庫(kù)修改為使用服務(wù)器參數(shù)方式運(yùn)行:

sql>createspfilefrompfile;sql>shutdownimmediatesql>startup4.在線修改數(shù)據(jù)庫(kù)參數(shù)

在Oracle9i中,使用服務(wù)器端參數(shù)文件后,可以像修改數(shù)據(jù)一樣對(duì)初始化參數(shù)進(jìn)行在線修改。可以執(zhí)行altersystem指令在線更改某些初始化參數(shù),而且修改后的參數(shù)可以立即生效,或者在下一個(gè)實(shí)例啟動(dòng)后生效。這可以利用在set子句中scope選項(xiàng)來(lái)進(jìn)行控制。

scope選項(xiàng)的設(shè)置有三種選擇:

(1)當(dāng)scope=spfile時(shí),對(duì)參數(shù)的修改僅記錄在服務(wù)器端初始化參數(shù)文件中。該選擇同時(shí)適用于動(dòng)態(tài)初始化參數(shù)與靜態(tài)初始化參數(shù)。修改后的參數(shù)只有在下一次啟動(dòng)數(shù)據(jù)庫(kù)時(shí)更改的參數(shù)才會(huì)生效。在修改靜態(tài)初始化參數(shù)時(shí),只能將scope選項(xiàng)設(shè)置為spfile。

(2)當(dāng)scope=memory時(shí),對(duì)參數(shù)的修改僅記錄在內(nèi)存中,不會(huì)寫(xiě)入spfile。對(duì)于動(dòng)態(tài)初始化參數(shù),更改將立即生效,并且由于修改并不會(huì)被記錄在服務(wù)器端初始化參數(shù)文件中,在下一次啟動(dòng)數(shù)據(jù)庫(kù)時(shí)仍然會(huì)使用修改前的參數(shù)設(shè)置。對(duì)于靜態(tài)初始化參數(shù),不能使用這個(gè)選項(xiàng)值。

(3)當(dāng)scope=both時(shí),對(duì)參數(shù)的修改將同時(shí)記錄在內(nèi)存和服務(wù)器端初始化參數(shù)文件中。對(duì)于動(dòng)態(tài)初始化參數(shù),更改將立即生效,并且在下一次啟動(dòng)數(shù)據(jù)庫(kù)時(shí)將使用修改后的參數(shù)設(shè)置。對(duì)于靜態(tài)初始化參數(shù),不能使用這個(gè)選項(xiàng)值。如果數(shù)據(jù)庫(kù)使用了服務(wù)器端初始化參數(shù)文件,在執(zhí)行altersystem語(yǔ)句時(shí),Oracle默認(rèn)地將scope選項(xiàng)設(shè)置為both。

注意:(1)在修改動(dòng)態(tài)初始化參數(shù)時(shí),還可以指定deferred關(guān)鍵字,這樣對(duì)參數(shù)所做的修改將延遲到新的會(huì)話產(chǎn)生時(shí)才生效。(2)如果數(shù)據(jù)庫(kù)沒(méi)有使用服務(wù)器端初始化參數(shù)文件,在altersystem語(yǔ)句中將scope選項(xiàng)設(shè)置為spfile或both將會(huì)產(chǎn)生錯(cuò)誤。

(3)還可以在運(yùn)行實(shí)例時(shí)使用altersession命令對(duì)動(dòng)態(tài)初始化參數(shù)進(jìn)行修改。使用altersession命令修改的參數(shù)只對(duì)當(dāng)前會(huì)話有效,altersystem命令修改的參數(shù)一直到實(shí)例關(guān)閉都有效,altersystemdeferred命令對(duì)將來(lái)連接的會(huì)話有效,當(dāng)前會(huì)話無(wú)效。

例如,利用下面的語(yǔ)句對(duì)動(dòng)態(tài)初始化參數(shù)log_checkpoint_interval進(jìn)行修改,修改結(jié)果不僅在當(dāng)前實(shí)例中有效,而且還將記錄在服務(wù)器端初始化參數(shù)文件中:sql>altersystemsetlog_checkpoint_interval=50comment="SpecifiesthefrequencyOfcheckpoints";如果要修改靜態(tài)初始化參數(shù)db_files,必須將scope選項(xiàng)設(shè)置為spfile:

sql>altersystemsetdb_files=100scope=spfile;

查看初始化參數(shù)的設(shè)置(1)在SQL*PLUS中使用SHOWPARAMETERS命令(2)查詢(xún)V$PARAMETER或V$PARAMETER2動(dòng)態(tài)性能視圖,V$PARAMETER2視圖的格式更加簡(jiǎn)潔。(3)使用CREATEPFILE語(yǔ)句將服務(wù)器端初始化參數(shù)文件導(dǎo)出為可讀的文本初始化參數(shù)文件。(4)查詢(xún)v$SPPARAMETER動(dòng)態(tài)性能視圖,其中包括在服務(wù)器端初始化參數(shù)文件中的初始化參數(shù)設(shè)置。4.3啟動(dòng)和關(guān)閉Oracle服務(wù)器

啟動(dòng)和關(guān)閉Oracle服務(wù)器的方法有多種,可以使用OEM、Sql*plus、命令行或操作系統(tǒng)的服務(wù)。啟動(dòng)或停止一個(gè)Oracle服務(wù)器的用戶(hù)必須具有sysdba或sysoper權(quán)限。

4.3.1啟動(dòng)Oracle服務(wù)器的步驟

Oracle服務(wù)器的啟動(dòng)是分步驟進(jìn)行的,包括實(shí)例的啟動(dòng)、數(shù)據(jù)庫(kù)的加載和數(shù)據(jù)庫(kù)打開(kāi)3個(gè)步驟。因此Oracle服務(wù)器可能處于三種狀態(tài):實(shí)例已啟動(dòng)、數(shù)據(jù)庫(kù)已加載、數(shù)據(jù)庫(kù)已打開(kāi)。

1.啟動(dòng)實(shí)例啟動(dòng)實(shí)例包括下列任務(wù):(1)讀取參數(shù)文件init<sid>.ora或spfile<sid>.ora(2)分配sga(3)啟動(dòng)后臺(tái)進(jìn)程(4)打開(kāi)alert文件以及跟蹤文件在實(shí)例的啟動(dòng)過(guò)程中只會(huì)使用到初始化參數(shù)文件,數(shù)據(jù)庫(kù)是否存在對(duì)實(shí)例的啟動(dòng)并沒(méi)有影響。如果初始化參數(shù)設(shè)置有誤,實(shí)例將無(wú)法啟動(dòng)。2.為實(shí)例裝載數(shù)據(jù)庫(kù)裝載數(shù)據(jù)庫(kù)包括以下任務(wù):(1)使數(shù)據(jù)庫(kù)與以前啟動(dòng)的例程關(guān)聯(lián)(2)定位并打開(kāi)參數(shù)文件中指定的控制文件(3)讀取控制文件以獲取數(shù)據(jù)文件和重做日志文件的名稱(chēng)和狀態(tài),為打開(kāi)數(shù)據(jù)庫(kù)做好準(zhǔn)備。加載數(shù)據(jù)庫(kù)時(shí),實(shí)例將打開(kāi)控制文件,從控制文件中獲取數(shù)據(jù)庫(kù)的名稱(chēng)、數(shù)據(jù)文件的位置和名稱(chēng)等關(guān)于數(shù)據(jù)庫(kù)物理結(jié)構(gòu)的信息,為打開(kāi)數(shù)據(jù)庫(kù)做好準(zhǔn)備。如果控制文件損壞,實(shí)例將無(wú)法加載數(shù)據(jù)庫(kù)。在加載階段,實(shí)例并不會(huì)打開(kāi)數(shù)據(jù)庫(kù)的物理文件——數(shù)據(jù)文件和重做日志文件。3.打開(kāi)數(shù)據(jù)庫(kù)正常數(shù)據(jù)庫(kù)操作是指啟動(dòng)例程、裝載并打開(kāi)數(shù)據(jù)庫(kù),它允許任何有效用戶(hù)連接數(shù)據(jù)庫(kù)并執(zhí)行一般的數(shù)據(jù)訪問(wèn)操作。打開(kāi)數(shù)據(jù)庫(kù)包括以下任務(wù):(1)打開(kāi)聯(lián)機(jī)數(shù)據(jù)文件(2)打開(kāi)聯(lián)機(jī)重做日志文件如果在控制文件中列出的任何一個(gè)數(shù)據(jù)文件或重做日志文件無(wú)法正常打開(kāi),數(shù)據(jù)庫(kù)將返回錯(cuò)誤信息,這是需要進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)。只有將數(shù)據(jù)庫(kù)設(shè)為打開(kāi)狀態(tài)后,數(shù)據(jù)庫(kù)才處于正常運(yùn)行狀態(tài),這時(shí)普通用戶(hù)才能夠訪問(wèn)數(shù)據(jù)庫(kù)。由于管理方面的要求,DBA要根據(jù)不同的情況決定以不同的方式啟動(dòng)數(shù)據(jù)庫(kù):(1)啟動(dòng)實(shí)例不加載數(shù)據(jù)庫(kù)(NOMOUNT模式)使用的命令:SQL>startupnomount如果要執(zhí)行下列維護(hù)工作:A:創(chuàng)建數(shù)據(jù)庫(kù)B:重建控制文件則必須在該模式下進(jìn)行(2)啟動(dòng)實(shí)例加載數(shù)據(jù)庫(kù)但不打開(kāi)數(shù)據(jù)庫(kù)(MOUNT模式)若要執(zhí)行特定的維護(hù)任務(wù),可啟動(dòng)例程并裝載數(shù)據(jù)庫(kù),但不要打開(kāi)數(shù)據(jù)庫(kù)。例如:(1)命名數(shù)據(jù)文件(2)改變數(shù)據(jù)庫(kù)的歸檔模式(3)執(zhí)行完全數(shù)據(jù)庫(kù)恢復(fù)(4)添加、刪除或重命名重做日志文件Sql>startupmount3.啟動(dòng)實(shí)例加載數(shù)據(jù)庫(kù)并打開(kāi)數(shù)據(jù)庫(kù)(OPEN模式)這是正常的啟動(dòng)模式。普通用戶(hù)要對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,數(shù)據(jù)庫(kù)必須處于OPEN啟動(dòng)模式。Sql>startup(1)實(shí)例在nomount階段啟動(dòng)時(shí),就可以從內(nèi)存訪問(wèn)讀取動(dòng)態(tài)性能視圖(與SGA有關(guān)的視圖),例如:v$parameter、v$sga、v$option、v$process、v$session、v$version和v$instance。

(2)當(dāng)實(shí)例在mount階段啟動(dòng)時(shí),就可以從控制文件讀取動(dòng)態(tài)性能視圖,例如:v$thread、v$controlfile、v$database、v$datafile、v$datafile_header、v$logfile。(3)當(dāng)實(shí)例在open階段啟動(dòng)時(shí),就可以從數(shù)據(jù)字典讀取動(dòng)態(tài)性能視圖。

動(dòng)態(tài)性能視圖說(shuō)明v$parameter包含關(guān)于初始化參數(shù)的信息v$sga包含關(guān)于SGA的摘要信息v$option列出Oracle服務(wù)器安裝的選項(xiàng)v$process包含有關(guān)當(dāng)前活動(dòng)進(jìn)程的信息v$session列出當(dāng)前會(huì)話信息v$version 列出版本號(hào)及組件v$instance列出當(dāng)前實(shí)例的狀態(tài)v$thread包含線程信息v$controlfile列出控制文件名稱(chēng)v$database包含數(shù)據(jù)庫(kù)信息v$datafile 包含來(lái)自控制文件的數(shù)據(jù)文件信息v$datafile_header包含來(lái)自控制文件的數(shù)據(jù)文件標(biāo)題的信息v$logfile包含關(guān)于聯(lián)機(jī)重做日志文件的信息轉(zhuǎn)換啟動(dòng)模式在數(shù)據(jù)庫(kù)的各種啟動(dòng)模式之間切換需要使用ALTERDATABASE語(yǔ)句,執(zhí)行該語(yǔ)句的用戶(hù)必須具有ALTERDATABASE系統(tǒng)權(quán)限。1、為實(shí)例加載數(shù)據(jù)庫(kù)在執(zhí)行一些特殊的管理或維護(hù)操作時(shí),需要進(jìn)入NOMOUNT啟動(dòng)模式。切換到MOUNT模式:ALTERDATABASEMOUNT2、從加載狀態(tài)進(jìn)入打開(kāi)狀態(tài)為實(shí)例加載數(shù)據(jù)庫(kù)后,數(shù)據(jù)庫(kù)可能仍然處于關(guān)閉狀態(tài)。為了使用戶(hù)能夠訪問(wèn)數(shù)據(jù)庫(kù),可以使用如下語(yǔ)句切換到OPEN啟動(dòng)模式:ALTERDATABASEOPEN;切換到受限和只讀狀態(tài)1、受限狀態(tài)在正常啟動(dòng)模式(OPEN)下,可以選擇將數(shù)據(jù)庫(kù)設(shè)置為非受限狀態(tài)或受限狀態(tài)。在受限狀態(tài)下,只有具有管理權(quán)限的用戶(hù)(DBA)才能訪問(wèn)數(shù)據(jù)庫(kù)。當(dāng)執(zhí)行下列維護(hù)操作時(shí),必須將數(shù)據(jù)庫(kù)置于受限狀態(tài):(1)執(zhí)行數(shù)據(jù)導(dǎo)入或?qū)С霾僮鳎?)使用SQL*Loader提取外部數(shù)據(jù)(3)需要暫時(shí)拒絕普通用戶(hù)訪問(wèn)數(shù)據(jù)庫(kù)(4)進(jìn)行數(shù)據(jù)庫(kù)移植或者升級(jí)操作在默認(rèn)情況下,普通數(shù)據(jù)庫(kù)用戶(hù)只具有CREATESESSION系統(tǒng)權(quán)限。只有具有CREATESESSION權(quán)限的用戶(hù)才能夠連接到一個(gè)打開(kāi)的數(shù)據(jù)庫(kù)中,并且連接的數(shù)據(jù)庫(kù)必須處于非受限狀態(tài)。當(dāng)打開(kāi)的數(shù)據(jù)庫(kù)被設(shè)置為受限狀態(tài)時(shí),僅具有CREATESESSION權(quán)限的用戶(hù)在訪問(wèn)數(shù)據(jù)庫(kù)時(shí)將被拒絕。只有同時(shí)具有CREATESESSION和RESTRICTEDSESSION系統(tǒng)權(quán)限的用戶(hù)才能夠訪問(wèn)受限狀態(tài)的數(shù)據(jù)庫(kù)。通常只將RESTRICTEDSESSION系統(tǒng)權(quán)限授予DBA用戶(hù)。A:使用下面的語(yǔ)句,數(shù)據(jù)庫(kù)將進(jìn)入受限狀態(tài):STARTUPRESTRICTB:如果需要將數(shù)據(jù)庫(kù)恢復(fù)為非受限狀態(tài)ALTERSYSTEMDISABLERESTRICTEDSESSIONC:由非受限狀態(tài)切換到受限狀態(tài)ALTERSYSTEMENABLERESTRICTEDSESSION2、只讀狀態(tài)可以使用ALTERDATABASE語(yǔ)句在數(shù)據(jù)庫(kù)運(yùn)行過(guò)程中切換為只讀模式:ALTERDATABASEOPENREADONLY使用下面語(yǔ)句將數(shù)據(jù)庫(kù)設(shè)置為讀寫(xiě)模式:ALTERDATABASEOPENREADWRITE3、強(qiáng)行啟動(dòng)數(shù)據(jù)庫(kù)在各種啟動(dòng)模式都無(wú)法成功啟動(dòng)數(shù)據(jù)庫(kù)時(shí),需要強(qiáng)行啟動(dòng)數(shù)據(jù)庫(kù),在如下幾種情況下需要強(qiáng)行啟動(dòng)數(shù)據(jù)庫(kù):

無(wú)法使用shutdownnormal、shutdownimmediate或者shutdowntransactional語(yǔ)句關(guān)閉數(shù)據(jù)庫(kù)實(shí)例。

在啟動(dòng)實(shí)例時(shí)出現(xiàn)無(wú)法恢復(fù)的錯(cuò)誤

STARTUPFORCE

如果在強(qiáng)行啟動(dòng)時(shí),數(shù)據(jù)庫(kù)已經(jīng)有一個(gè)實(shí)例正在運(yùn)行,Oracle將首先關(guān)閉該實(shí)例,然后再重新為這個(gè)數(shù)據(jù)庫(kù)啟動(dòng)一個(gè)新的實(shí)例

關(guān)閉數(shù)據(jù)庫(kù)按階段關(guān)閉數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)的啟動(dòng)相對(duì)應(yīng),關(guān)閉數(shù)據(jù)庫(kù)也是分步驟進(jìn)行的1.關(guān)閉數(shù)據(jù)庫(kù)Oracle服務(wù)器將緩沖區(qū)高速緩存中的更改及操作日志緩沖區(qū)高速緩存中的條目寫(xiě)入數(shù)據(jù)文件和聯(lián)機(jī)重做日志文件。此后,關(guān)閉所有聯(lián)機(jī)數(shù)據(jù)文件和聯(lián)機(jī)重做日志文件。在數(shù)據(jù)庫(kù)關(guān)閉但仍裝載時(shí),控制文件一直打開(kāi)。2.卸載數(shù)據(jù)庫(kù)關(guān)閉控制文件,但例程仍保留3.關(guān)閉實(shí)例Alert文件和跟蹤文件將關(guān)閉,sga被回收并且后臺(tái)進(jìn)程被終止。關(guān)閉Oracle服務(wù)器的四種方式

1.執(zhí)行normal模式關(guān)閉禁止新的用戶(hù)連接,當(dāng)所有的用戶(hù)自愿斷開(kāi)時(shí),oracle才關(guān)閉數(shù)據(jù)庫(kù)。sql>shutdownnormal這是一種最有耐心的關(guān)閉方式,這種方式不許新的用戶(hù)連接,但是要等已有的所有用戶(hù)連接自愿斷開(kāi)時(shí),Oracle才能夠關(guān)閉數(shù)據(jù)庫(kù)。一旦所有的用戶(hù)都斷開(kāi)連接,立刻關(guān)閉數(shù)據(jù)庫(kù)、卸載數(shù)據(jù)庫(kù),并終止實(shí)例。

2.執(zhí)行immediate模式關(guān)閉這種方式不允許新的用戶(hù)連接,任何未提交的事務(wù)均被回退;不在等待用戶(hù)主動(dòng)斷開(kāi)連接,直接關(guān)閉、卸載數(shù)據(jù)庫(kù),并終止實(shí)例。在正常關(guān)閉失效的情況下,最常使用的一種。sql>shutdownimmediate3.執(zhí)行abort模式關(guān)閉數(shù)據(jù)庫(kù)立即關(guān)閉,對(duì)數(shù)據(jù)庫(kù)的服務(wù)被突然終止;所有的用戶(hù)被斷開(kāi)連接,所有的過(guò)程被終止,所有的資源被釋放。為一種最后的手段使用。當(dāng)數(shù)據(jù)庫(kù)實(shí)例被破壞時(shí),可用此方式關(guān)閉數(shù)據(jù)庫(kù)sql>shutdownabort由于當(dāng)前未完成的事務(wù)并不會(huì)被回退,需要進(jìn)行實(shí)例恢復(fù)。4.執(zhí)行transactional模式關(guān)閉等待當(dāng)前所有活動(dòng)事務(wù)都提交后再關(guān)閉數(shù)據(jù)庫(kù)。時(shí)間介于正常方式與立即方式之間。sql>shutdowntransactional啟動(dòng)和關(guān)閉Oracle服務(wù)

在WindowsNT/2000平臺(tái)中,只有在啟動(dòng)了Oracle的OracleOraHome90TNSListener和OracleServicemath服務(wù)(假如數(shù)據(jù)庫(kù)名為math)后,才能連接到實(shí)例。如果沒(méi)有啟動(dòng)監(jiān)聽(tīng)器服務(wù)OracleOraHome90TNSListener就連接到Oracle會(huì)出現(xiàn)Ora-12541:TNS:沒(méi)有監(jiān)聽(tīng)器錯(cuò)誤。如果沒(méi)有啟動(dòng)OracleServicemath服務(wù)就連接到Oracle會(huì)出現(xiàn)ORA-12560:TNS:協(xié)議適配器錯(cuò)誤。

服務(wù)的啟動(dòng)方式有多種,(1)可以使用oradim命令啟動(dòng)服務(wù),(2)也可以使用netstart命令啟動(dòng)服務(wù),(3)還可以使用Windows的操作系統(tǒng)服務(wù)來(lái)啟動(dòng)服務(wù)。A:如果用oradim命令可以決定是只啟動(dòng)服務(wù),還是服務(wù)和實(shí)例一起啟動(dòng)。B:如果用netstart命令只啟動(dòng)服務(wù)。C:如果用操作系統(tǒng)啟動(dòng)服務(wù),實(shí)例也隨著啟動(dòng)了。如果實(shí)例已經(jīng)啟動(dòng),再用startup命令去啟動(dòng)實(shí)例,會(huì)發(fā)生“ORA-01081:無(wú)法啟動(dòng)已在運(yùn)行的Oracle-請(qǐng)先關(guān)閉”的錯(cuò)誤。

同樣,服務(wù)的關(guān)閉方式也有多種,(1)可以使用oradim命令關(guān)閉服務(wù),(2)也可以使用netstart命令關(guān)閉服務(wù),(3)還可以使用Windows的操作系統(tǒng)服務(wù)來(lái)關(guān)閉服務(wù)。A:如果用oradim命令可以決定是只關(guān)閉服務(wù),還是服務(wù)和實(shí)例一起關(guān)閉。B:如果用netstart命令只關(guān)閉服務(wù)。C:如果用操作系統(tǒng)關(guān)閉服務(wù),實(shí)例也隨著關(guān)閉了

設(shè)置oracle_sid(1)一個(gè)實(shí)例只能與一個(gè)數(shù)據(jù)庫(kù)關(guān)聯(lián),一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)實(shí)例。在操作系統(tǒng)中,實(shí)例是用環(huán)境變量oracle_sid來(lái)唯一標(biāo)識(shí)的。(2)在注冊(cè)表中打開(kāi)項(xiàng)hkey_local_machine\software\oracle\home0之后,查看字串oracle_sid可以取得默認(rèn)實(shí)例的名稱(chēng)。(3)如果你的平臺(tái)上包含了多個(gè)實(shí)例,并且你要管理自己的實(shí)例,那么可以在命令行設(shè)置環(huán)境變量oracle_sid或者在注冊(cè)表中修改oracle_sid。在windows環(huán)境下,提供設(shè)置oracle_sid環(huán)境變量來(lái)指定啟動(dòng)或終止的是哪一個(gè)數(shù)據(jù)庫(kù)實(shí)例。例:設(shè)置當(dāng)前實(shí)例變量并查看當(dāng)前實(shí)例變量值c:\>setoracle_sid(顯示當(dāng)前的實(shí)例)c:\>setoracle_sid=math(設(shè)置當(dāng)前實(shí)例為math)

2.使用命令行netstart啟動(dòng)和關(guān)閉Oracle服務(wù)c:\>lsnrctlstart(啟動(dòng)OracleOraHome90TNSListener服務(wù))c:\>netstartOracleServicemath(啟動(dòng)OracleServicemath服務(wù))當(dāng)執(zhí)行了以上命令后會(huì)將實(shí)例服務(wù)math啟動(dòng)。

c:\>lsnrctlstop(關(guān)閉OracleOraHome90TNSListener服務(wù))c:\>netstopOracleServicemath(關(guān)閉OracleServicemath服務(wù))當(dāng)執(zhí)行了以上命令后會(huì)將實(shí)例服務(wù)math關(guān)閉。

3.用命令行oradim啟動(dòng)和關(guān)閉服務(wù)(1)c:\>oradim–startup–sidmath–starttypesrvc 當(dāng)執(zhí)行了以上命令后只啟動(dòng)服務(wù)math。(2)c:\>oradim–startup–sidmath–starttypesrvc,inst或c:\>oradim–startup–sidmath當(dāng)執(zhí)行了以上的命令以后會(huì)將實(shí)例和服務(wù)一起啟動(dòng)。(3)c:\>oradim–startup–sidmath–starttypeinst執(zhí)行以上命令表示在服務(wù)已經(jīng)啟動(dòng)的條件下,只啟動(dòng)實(shí)例。

(4)c:\>oradim–shutdown–sidmath–shuttypesrvc 當(dāng)執(zhí)行了以上命令后只關(guān)閉服務(wù)math。

(5)c:\>oradim–shutdown–sidmath–shuttypesrvc,inst或c:\>oradim–shutdown–sidmath當(dāng)執(zhí)行了以上的命令以后會(huì)將實(shí)例和服務(wù)一起關(guān)閉。

4.用命令行oradmin刪除實(shí)例

當(dāng)在WindowsNT/2000平臺(tái)上要?jiǎng)h除Oracle數(shù)據(jù)庫(kù)時(shí),應(yīng)該首先刪除實(shí)例服務(wù),然后再刪除數(shù)據(jù)庫(kù)所有物理文件。假如我們?cè)诜?wù)器上安裝了兩個(gè)數(shù)據(jù)庫(kù)一個(gè)是math,另一個(gè)是study,現(xiàn)在不想要study數(shù)據(jù)庫(kù)了,應(yīng)該先刪除study實(shí)例,然后手工刪除study的物理文件。刪除實(shí)例服務(wù)的具體命令如下:

oradmin–delete–SIDstudy當(dāng)執(zhí)行了上述命令之后,會(huì)刪除實(shí)例服務(wù)OracleServicestudy。

5.使用操作系統(tǒng)服務(wù)啟動(dòng)和關(guān)閉Oracle服務(wù)

在WindowsNT/2000中,一個(gè)數(shù)據(jù)庫(kù)實(shí)例以一個(gè)系統(tǒng)服務(wù)形式實(shí)現(xiàn)。通過(guò)對(duì)系統(tǒng)服務(wù)進(jìn)行操作,可以便捷地實(shí)現(xiàn)數(shù)據(jù)庫(kù)的啟動(dòng)和關(guān)閉。

以操作系統(tǒng)管理員身份登錄到WindowsNT/2000中,打開(kāi)“服務(wù)”對(duì)話框。

4.4數(shù)據(jù)庫(kù)的創(chuàng)建

在Windows下可以使用DBCA向?qū)?chuàng)建數(shù)據(jù)庫(kù),也可以使用手工創(chuàng)建數(shù)據(jù)庫(kù)。手工創(chuàng)建數(shù)據(jù)庫(kù)必須先確定實(shí)例名、初始化參數(shù)文件、創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例,啟動(dòng)實(shí)例,然后使用CREATEDATABASE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)、運(yùn)行腳本以創(chuàng)建數(shù)據(jù)字典視圖。

4.4.1確定數(shù)據(jù)庫(kù)名、實(shí)例名、服務(wù)名和DBA認(rèn)證方式db_name、instance_name、service_name和db_domain分別表示數(shù)據(jù)庫(kù)名、實(shí)例名、服務(wù)名和域名。DBA認(rèn)證方式可以使用操作系統(tǒng)認(rèn)證方式或口令文件認(rèn)證方式。例如:db_name=exleinstance_name=exle

4.4.2創(chuàng)建初始化參數(shù)文件在安裝完畢Oracle服務(wù)器軟件后,可以在oracle_home\admin\sle\pfile目錄中找到一個(gè)名為initsle.ora的文件,該文件是Oracle所提供的一個(gè)初始化參數(shù)樣本文件。首先拷貝一個(gè)參數(shù)文件到d:\oracle\admin\exle\pfile目錄,并且文件名為init.ora。然后修改其中的參數(shù)。有些必要的參數(shù)必須在創(chuàng)建數(shù)據(jù)庫(kù)之前確定,因?yàn)檫@些參數(shù)在數(shù)據(jù)庫(kù)創(chuàng)建之后將不能修改。需要修改的參數(shù)有:db_name、instance_name、db_domain、service_name、control_files、db_block_size、user_dump_dest和background_dump_dest。按下面的方法修改參數(shù),創(chuàng)建exle數(shù)據(jù)庫(kù)。其他的參數(shù)可以在創(chuàng)建完數(shù)據(jù)庫(kù)后再修改。db_name=exleinstance_name=exlecontrol_files=("c:\oracle\oradata\exle\control01.ctl","d:\oracle\oradata\exle\control02.ctl","e:\oracle\oradata\exle\control03.ctl")db_block_size=4096user_dump_dest=d:\oracle\admin\exle\udumpbackground_dump_dest=d:\oracle\admin\exle\bdump4.4.3創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例在Windows下,用oradim命令創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例exle,啟動(dòng)方式為手工。c:\>oradim-new-sidexle-startmodemanual-pfiled:\oracle\admin\exle\pfile\init.ora4.4.4啟動(dòng)實(shí)例、創(chuàng)建數(shù)據(jù)庫(kù)使用oradim啟動(dòng)服務(wù)c:\>oradim-startup-sid

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論