三、實(shí)例的啟動(dòng)與關(guān)閉(三)、啟動(dòng)實(shí)例階段() 3.打開(kāi)的文件
1) 警告日志文件
//啟動(dòng)實(shí)例前執(zhí)行,查看進(jìn)程是否打開(kāi) [oracle@oracle ~ ]$ ps -ef | grep ora_ oracle 4809 4776 0 09:10 pts/2 00:00:00 grep ora_//未打開(kāi) [oracle@oracle trace ]$ tail -f alertorcl.log//文件尾部打開(kāi),并持續(xù)輸出 SQL> STARTUP NOMOUNT; ORACLE instance started. //啟動(dòng)后分配了內(nèi)存,并顯示在輸出 Total System Global Area 636100608 bytes Fixed Size 1338392 bytes Variable Size 377488360 bytes Database Buffers 251658240 bytes Redo Buffers 5615616 bytes //啟動(dòng)實(shí)例后執(zhí)行,發(fā)現(xiàn)進(jìn)程已經(jīng)打開(kāi) [oracle@oracle ~]$ ps -ef | grep ora_ oracle 4884 1 0 09:11 ? 00:00:00 ora_pmon_orcl oracle 4886 1 0 09:11 ? 00:00:00 ora_vktm_orcl oracle 4890 1 0 09:11 ? 00:00:00 ora_gen0_orcl oracle 4892 1 0 09:11 ? 00:00:00 ora_diag_orcl oracle 4894 1 0 09:11 ? 00:00:00 ora_dbrm_orcl oracle 4896 1 0 09:11 ? 00:00:00 ora_psp0_orcl oracle 4898 1 0 09:11 ? 00:00:00 ora_dia0_orcl oracle 4900 1 1 09:11 ? 00:00:01 ora_mman_orcl oracle 4902 1 0 09:11 ? 00:00:00 ora_dbw0_orcl oracle 4904 1 0 09:11 ? 00:00:00 ora_lgwr_orcl oracle 4906 1 0 09:11 ? 00:00:00 ora_ckpt_orcl oracle 4908 1 0 09:11 ? 00:00:00 ora_smon_orcl oracle 4910 1 0 09:11 ? 00:00:00 ora_reco_orcl oracle 4912 1 0 09:11 ? 00:00:00 ora_mmon_orcl oracle 4914 1 0 09:11 ? 00:00:00 ora_mmnl_orcl oracle 4916 1 0 09:11 ? 00:00:00 ora_d000_orcl oracle 4918 1 0 09:11 ? 00:00:00 ora_s000_orcl oracle 5025 4776 0 09:13 pts/2 00:00:00 grep ora_ ------------------------------以下為警告日志文件內(nèi)容節(jié)選-------------------------- //讀取參數(shù) System parameters with non-default values: //限制進(jìn)程數(shù) processes = 150 //限制內(nèi)存大小,并進(jìn)行自動(dòng)內(nèi)存管理 memory_target = 608M //控制文件的路徑和名稱(chēng) control_files = "/u01/app/oracle/oradata/orcl/control01.ctl" control_files = "/u01/app/oracle/flash/orcl/orcl/control02.ctl" control_files = "/u01/app/oracle/oradata/orcl/control03.ctl" //數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)塊大小 db_block_size = 8192 / /Oracle 數(shù)據(jù)庫(kù)版本號(hào) compatible = "11.2.0.0.0" //UNDO 表空間的名字 undo_tablespace = "UNDOTBS1" //是否允許遠(yuǎn)程登錄的相關(guān)配置 remote_login_passwordfile= "EXCLUSIVE" / /數(shù)據(jù)庫(kù)審計(jì)信息 audit_file_dest = "/u01/app/oracle/admin/orcl/adump" //數(shù)據(jù)庫(kù)后臺(tái)進(jìn)程追蹤文件和警告日志文件 background_dump_dest = "/u01/app/oracle/admin/orcl/bdump" //核心的追蹤信息 core_dump_dest = "/u01/app/oracle/admin/orcl/cdump" //SQL 和會(huì)話(huà)的追蹤信息 user_dump_dest = "/u01/app/oracle/admin/orcl/udump" //數(shù)據(jù)庫(kù)名 db_name = "orcl" ... ... ... ... ... ... ... ... ...... ...... ...... //啟動(dòng)進(jìn)程 Fri Nov 29 09:11:07 2013 DBW0 started with pid=10, OS id=4902 Fri Nov 29 09:11:07 2013 LGWR started with pid=11, OS id=4904 Fri Nov 29 09:11:07 2013 ......
發(fā)出“ ”指令后,我們注意到警告日志文件輸出了包括一系列參數(shù)、 進(jìn)程的啟動(dòng)等內(nèi)容;同時(shí),我們注意到 終端回顯了內(nèi)存的大小設(shè)置(上述深色背景加粗)。
因此,我們首先可以確定的是,在該階段 實(shí)例分配了內(nèi)存,啟動(dòng)了進(jìn)程。那么,警告日志文件中的參數(shù)從哪來(lái)呢?下面讓我們觀察一下初始化參數(shù)文件。
2) 初始化參數(shù)文件
初始化參數(shù)分為兩種。靜態(tài)初始化參數(shù)文件和動(dòng)態(tài)初始化參數(shù)文件。
靜態(tài)初始化參數(shù)文件(Pfile):文本形式、默認(rèn)文件名:.ora
動(dòng)態(tài)初始化參數(shù)文件():二進(jìn)制形式、默認(rèn)文件名:.ora
也就是說(shuō),我們想要了解初始化參數(shù)文件的內(nèi)容,可以使用 vi 工具或者多種操作系統(tǒng) 指令來(lái)查看靜態(tài)初始化參數(shù)文件的內(nèi)容。 如果沒(méi)有靜態(tài)初始化參數(shù)文件或者動(dòng)態(tài)初始化參數(shù)文件(二缺一).
我們可以通過(guò)指令來(lái)創(chuàng)建初始化參數(shù)文件并查看靜態(tài)初始化參數(shù)文件的內(nèi)容:
//通過(guò)動(dòng)態(tài)初始化參數(shù)文件創(chuàng)建靜態(tài)初始化參數(shù)文件 SQL> create pfile from spfile; File created. //通過(guò)靜態(tài)初始化參數(shù)文件創(chuàng)建動(dòng)態(tài)初始化參數(shù)文件 SQL> create spfile from pfile; File created. [oracle@oracle dbs]$ more initorcl.ora orcl.__db_cache_size=251658240 orcl.__java_pool_size=4194304 orcl.__large_pool_size=4194304 orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment orcl.__pga_aggregate_target=255852544 orcl.__sga_target=381681664 ......//這里以_開(kāi)頭的為隱含參數(shù),為了使用 ASMM 特性而存在的 *.audit_file_dest='/u01/app/oracle/admin/orcl/adump' *.compatible='11.2.0.0.0' *.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fl ash/orcl/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl' *.db_block_size=8192 *.db_name='orcl' *.memory_target=635437056 *.open_cursors=300 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.undo_tablespace= "UNDOTBS1" ......//原來(lái)警告日志文件中的參數(shù)是從這里(初始化參數(shù)文件)來(lái)的
4.步驟
當(dāng)啟動(dòng)實(shí)例時(shí),系統(tǒng)首先要讀取初始化參數(shù)文件,如圖 P 1-2所示。
P1-2: 實(shí)例啟動(dòng)
然后根據(jù)初始化參數(shù)文件的設(shè)置分配系統(tǒng)全局區(qū)(SGA),并啟動(dòng) 后臺(tái)進(jìn)程。
另外,操作系統(tǒng)還會(huì)打開(kāi)“警告日志文件”,并且將啟動(dòng)信息存放到“警告日志文件” 中。警告日志存放在初始化參數(shù) 所對(duì)應(yīng)的目錄中,其文件名格為 .log。
注意: 默認(rèn)打開(kāi)初始化參數(shù)文件的順序是: .ora → .ora → .ora 如果三個(gè)文件都不存在,則報(bào)錯(cuò)。
5.可執(zhí)行的相關(guān)操作
● 創(chuàng)建數(shù)據(jù)庫(kù)
● 創(chuàng)建控制文件
(四)、裝載數(shù)據(jù)庫(kù)階段()
1.打開(kāi)的文件:控制文件
//連接到 ORACLE 數(shù)據(jù)庫(kù) [oracle@oracle ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 1 10:58:47 2013 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to。 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options //查看當(dāng)前數(shù)據(jù)庫(kù)的狀態(tài) SQL> select status from v$instance; STATUS ------------ STARTED //嘗試備份控制文件 SQL> alter database backup controlfile to '/disk3/orcl/backup/control.bak' alter database backup controlfile to '/disk3/orcl/backup/control.bak' * ERROR at line 1: ORA-01507: database not mounted //將數(shù)據(jù)庫(kù)置為 mount 狀態(tài) SQL> alter database mount; Database altered. //再次備份控制文件 SQL> alter database backup controlfile to '/disk3/orcl/backup/control.bak' Database altered.
狀態(tài)下無(wú)法備份控制文件,MOUNT 狀態(tài)下備份成功,說(shuō)明數(shù)據(jù)庫(kù)從 到 MOUNT 狀態(tài)讀取了控制文件。
裝載數(shù)據(jù)庫(kù)階段,系統(tǒng)會(huì)按照初始化參數(shù)文件中 參數(shù)的設(shè)置查找并打開(kāi)控 制文件。
是通過(guò)控制文件在實(shí)例和數(shù)據(jù)庫(kù)之間建立關(guān)聯(lián)的,通過(guò)控制文件可以取得數(shù)據(jù) 文件和重做日志的名稱(chēng)和所處狀態(tài)。但對(duì)數(shù)據(jù)文件和日志文件是否存在不作檢查。
(五)、打開(kāi)數(shù)據(jù)庫(kù)狀態(tài)(OPEN) 1.打開(kāi)的文件
1) 數(shù)據(jù)文件
//數(shù)據(jù)庫(kù)為 MOUNT 狀態(tài) SQL> select status from v$instance; //嘗試查詢(xún)數(shù)據(jù) SQL> select count(*)from scott.emp; select * from scott.emp* ERROR at line 1: ORA-01219: database not open: queries allowed on fixed tables/views only //打開(kāi)數(shù)據(jù)庫(kù) SQL> alter database open; Database altered. //再次嘗試查詢(xún)數(shù)據(jù) SQL> select count(*) from scott.emp; COUNT(*) ---------- 14
在 MOUNT 狀態(tài)下,我們無(wú)法讀取到數(shù)據(jù),說(shuō)明數(shù)據(jù)文件沒(méi)有被讀取。當(dāng)數(shù)據(jù)庫(kù) OPEN 后,我們可以讀取到數(shù)據(jù),說(shuō)明數(shù)據(jù)庫(kù)從 MOUNT 到 OPEN 加載了數(shù)據(jù)文件。
2) 聯(lián)機(jī)重做日志文件
//數(shù)據(jù)庫(kù)為 MOUNT 狀態(tài) SQL> select status from v$instance; //嘗試手工切換日志文件組 SQL> alter system switch logfile; alter system switch logfile * ERROR at line 1: ORA-01109: database not open //將數(shù)據(jù)庫(kù)置為 OPEN 狀態(tài) SQL> alter database open; Database altered. //再次嘗試手工切換日志文件組 SQL> alter system switch logfile; System altered.
在 MOUNT 狀態(tài)下,我們無(wú)法手工切換日志文件組,說(shuō)明聯(lián)機(jī)重做日志文件沒(méi)有被讀 取。當(dāng)數(shù)據(jù)庫(kù) OPEN 后,可以切換,說(shuō)明數(shù)據(jù)庫(kù)從 MOUNT 到 OPEN 加載了日志文件。
(六)、關(guān)閉數(shù)據(jù)庫(kù)操作
當(dāng) DBA 要執(zhí)行完全數(shù)據(jù)庫(kù)備份、修改初始化參數(shù)以及其他系統(tǒng)維護(hù)操作時(shí),需要停止 服務(wù)器。
1.?dāng)?shù)據(jù)庫(kù)關(guān)閉方式
數(shù)據(jù)庫(kù)共有 4 種關(guān)閉方式,根據(jù)不同的情況,管理員可采用不同的方式關(guān)閉數(shù)據(jù)庫(kù)。
、、 三種關(guān)閉方式,屬于一致性數(shù)據(jù)庫(kù)(或稱(chēng)干凈數(shù)據(jù)庫(kù))關(guān)閉。特點(diǎn)是無(wú)需進(jìn)行數(shù)據(jù)庫(kù)恢復(fù),關(guān)閉和啟動(dòng)過(guò)程如圖 P1-2 所示:
p1-2:一致性數(shù)據(jù)庫(kù)(干凈數(shù)據(jù)庫(kù))
ABORT 關(guān)閉方式,屬于非一致性數(shù)據(jù)庫(kù)(或稱(chēng)臟數(shù)據(jù)庫(kù))關(guān)閉。使用 ABORT 關(guān)閉、或數(shù)據(jù)庫(kù)發(fā)生實(shí)例故障(比如斷電)、或使用 FORCE 強(qiáng)制重新啟動(dòng)數(shù)據(jù)庫(kù),都需要進(jìn)行實(shí)例恢復(fù)。關(guān)閉和啟動(dòng)過(guò)程如圖 P1-3 所示:
P1-3:不一致數(shù)據(jù)庫(kù)(臟數(shù)據(jù)庫(kù))
四種關(guān)閉方式詳細(xì)描述如下:
1)
是默認(rèn)選項(xiàng)。這種方式是被動(dòng)的等待方式,在所有用戶(hù)主動(dòng)退出后,才實(shí)施關(guān)閉。該選項(xiàng)按照以下條件進(jìn)行:
該方式在關(guān)閉數(shù)據(jù)文件、重做日志和控制文件之前,系統(tǒng)首先要發(fā)出檢查點(diǎn),同步所有 數(shù)據(jù)文件、控制文件和重做日志,使得這三種文件處于同步狀態(tài)。
2)
這種方式將等待所有用戶(hù)的事務(wù)結(jié)束,在避免用戶(hù)修改丟失的前提下,盡快關(guān)閉數(shù)據(jù)庫(kù)。 該選項(xiàng)按照以下條件進(jìn)行:
假定有一個(gè)用戶(hù)正在執(zhí)行事務(wù)操作(、 等),那么當(dāng)執(zhí)行 時(shí)系統(tǒng)會(huì)處于等待狀態(tài)。而當(dāng)該用戶(hù)執(zhí)行 或 終止 事務(wù)之后,系統(tǒng)會(huì)自動(dòng)斷開(kāi)其連接,然后停止 服務(wù)器。另外,在執(zhí)行該命令關(guān)閉據(jù)庫(kù)之前,與 類(lèi)似,系統(tǒng)也會(huì)首先發(fā)出檢查點(diǎn),然后才會(huì)關(guān)閉數(shù)據(jù) 文件、控制文件和重做日志。
3)
這種方式無(wú)需等待用戶(hù)的情況下,進(jìn)行立即關(guān)閉。已經(jīng)提交的事務(wù)不會(huì)丟失,未提交的 事務(wù)被撤銷(xiāo)。該選項(xiàng)按照以下條件進(jìn)行:
假定有一個(gè)用戶(hù)正在執(zhí)行事務(wù)操作(、 等),那么當(dāng)執(zhí)行 時(shí)系統(tǒng)會(huì)自動(dòng)回退該事務(wù)操作,然后斷開(kāi)用戶(hù)連接,最后停止 服務(wù)器。 另外,在執(zhí)行該命令關(guān)閉數(shù)據(jù)庫(kù)之前,與 類(lèi)似,系統(tǒng)也會(huì)首先發(fā)出 檢查點(diǎn),然后才會(huì)關(guān)閉數(shù)據(jù)文件、控制文件和重做日志。
4) ABORT
ABORT 命令用于快速停止 服務(wù)器,屬于異常終止數(shù)據(jù)庫(kù),例如實(shí)例出現(xiàn)故障或使用其他三種方式無(wú)法停止 服務(wù)器,可以考慮采用這種方式。該選項(xiàng)按照以下條件進(jìn)行:
因?yàn)椴捎眠@種方式不會(huì)發(fā)出檢查點(diǎn),從而使得數(shù)據(jù)文件、控制文件和重做日志處于不一 致的狀態(tài),所以將來(lái)在啟動(dòng) 服務(wù)器時(shí),后臺(tái)進(jìn)程 SMON 會(huì)自動(dòng)進(jìn)行實(shí)例恢復(fù)oracle數(shù)據(jù)庫(kù)維護(hù)方案,最終 將數(shù)據(jù)文件、控制文件和重做日志恢復(fù)到一致?tīng)顟B(tài)。大家在使用 服務(wù)器時(shí)oracle數(shù)據(jù)庫(kù)維護(hù)方案,盡可能 不要使用 ABORT 命令停止 服務(wù)器。如果系統(tǒng)并發(fā)事務(wù)很多,而又執(zhí) 行了 ABORT 命令停止 服務(wù)器,那么因?yàn)樾枰M(jìn)行實(shí)例恢復(fù),所以可能會(huì)導(dǎo)致 服務(wù)器啟動(dòng)時(shí)間很長(zhǎng)。
注意:在數(shù)據(jù)庫(kù)不一致的狀態(tài)下不能進(jìn)行數(shù)據(jù)庫(kù)的備份
四種關(guān)閉方式的特點(diǎn)總結(jié)如下表(√是,×否):
2.?dāng)?shù)據(jù)庫(kù)關(guān)閉操作
停止 服務(wù)器是使用命令 來(lái)完成的,執(zhí)行該命令要求用戶(hù)必須具有 或 特權(quán)。其命令格式如下:
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]
默認(rèn)的關(guān)閉模式是 。
寫(xiě)在最后的話(huà)
感謝各位的支持與閱讀,后續(xù)會(huì)繼續(xù)推送相關(guān)知識(shí)和交流,歡迎交流和關(guān)注,感謝!
友情鏈接: 餐飲加盟
地址:北京市海淀區(qū) 電話(huà):010- 郵箱:@126.com
備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有