決心攻克OCP!堅持6個月每天抽時間學習Oracle DB,以博文為證!
================================================================
環境:Red Hat Linux AS 4 Nahant x86 + Oracle 10.2.0.1 x86本文記錄了Oracle 10g數據庫啟動及關閉過程使用的命令及相關的文件,參考了網友的文章,在此感謝!
http://www.52zhe.cn/read.PHP/89.htmOracle DB 10g的啟動的3個步驟,依次為:1.創建並啟動實例、2.裝載數據庫、3.打開數據庫
這些步驟使用startup來實現,如下圖所示:
startup 命令格式
startup [ nomount | mount | open | force ] [ restrict ] [ pfile=filename ];方法1 -- startup nomount ; alter database mount ;alter database open
方法2 -- startup mount ; alter database open
方法3 -- startup 或 startup open
在進入某種模式後,可以通過alter database來提升到更高的模式。但是無法降低至前面的模式。
書上寫的真磨叽,就是說你在step2這裡,你可以通過alter database到step3,但是你不能到step 1.startup force
強制啟動,可用於各種模式。正常的起不來,就試試這個。startup restrict
restrict模式會將數據庫置於open模式,此時只有restricted session權限的用戶才能訪問數據庫。
用於維護動作。維護完成後,請禁用restricted session權限,以便普通用戶的連接。如下:
alter system disable restricted session數據庫啟動步驟1:創建並啟動實例 start nomount
此模式下執行維護動作:
a:運行一個創建新數據庫的腳本
b:重建控制文件
此步驟使數據庫從shutdown狀態變為nomount狀態,使用的參數文件是spfile或者pfile(spfile和pfile的區別、使用、恢復等操作下次再講),
參數文件中保存了啟動instance的基本信息,對於啟動過程而言,最為重要的一點是指明了control file的位置。
輸出的pfile內容如下:
[Oracle@vmwork dbs]$ mor initorcl.ora
-bash: mor: command not found
[Oracle@vmwork dbs]$ more initorcl.ora
orcl.__db_cache_size=180355072
orcl.__Java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=88080384
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/Oracle/admin/orcl/adump'
*.background_dump_dest='/u01/app/Oracle/admin/orcl/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u02/oradata/orcl/control01.ctl','/u02/oradata/orcl/control02.ctl','/u02/oradata/orcl/control03.ctl'
*.core_dump_dest='/u01/app/Oracle/admin/orcl/cdump'
*.db_block_size=8192
*.db_domain=''
......................數據庫啟動步驟2:裝載數據庫 start mount
此模式下執行維護動作:
a:重命名數據文件
b:添加、刪除、重命名重做日志文件
c:執行數據庫完全恢復操作
d:改變數據庫的歸檔模式
此步驟使數據庫從nomount狀態變為mount狀態,使用的參數文件就是spfile中指定的control file(控制文件的作用及恢復操作以後在講),
控制文件中包含了數據庫實例名、重做日志文件、數據文件等信息。
因為control file是二進制文件,無法直接查看,這裡提供一種備份control file的方法,可以查看備份出來的控制文件內容;
sqlplus /nolog
conn / as sysdba
alter system backup control file to trace;
exit
cd /u01/app/Oracle/admin/orcl/udump
cat orcl_ora_3397.trc
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u02/oradata/orcl/redo01.log' SIZE 50M,
GROUP 2 '/u02/oradata/orcl/redo02.log' SIZE 50M,
GROUP 3 '/u02/oradata/orcl/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/u02/oradata/orcl/system01.dbf',
'/u02/oradata/orcl/undotbs01.dbf',
'/u02/oradata/orcl/sysaux01.dbf',
'/u02/oradata/orcl/users01.dbf',
'/u02/oradata/orcl/example01.dbf',
'/u02/oradata/orcl/odm_data01.dbf',
'/u02/oradata/orcl/sdm_data01.dbf',
'/u02/oradata/orcl/fdm_data01.dbf'
CHARACTER SET ZHS16GBK
;
-- Commands to re-create incarnation table
......................
數據庫啟動步驟3:打開數據庫 start (start open)
此模式狀態下,任何具有create session權限的用戶都可以連接到數據庫,進行常規數據庫操作。
-------------------------------------------------------------------------------
關閉數據庫,通過shutdown命令shutdown 命令格式
shutdown [ normal | transactional | immediate | abort ];normal:
a:阻止任何用戶建立新的連接
b:等待連接的用戶主動斷開,正在連接的用戶可以繼續工作,甚至提交新的實務。
c:一旦所有的用戶斷開連接,才進行關閉,卸載數據庫,並終止實例。
影響:等很久。transactional:
a:阻止任何用戶建立新的連接,同時阻止產生新的事務。
b:等待未提交的實務,提交完畢後,切斷用戶的連接。
c:一旦所有的用戶斷開連接,才進行關閉,卸載數據庫,並終止實例。
影響:最好的關閉數據庫的方式。immediate:
a:阻止任何用戶建立新的連接,同時阻止產生新的事務。
b:任何未提交的實務都會被回滾。
c:Oracle不再等待用戶主動斷開連接,而是直接關閉、卸載數據庫,並終止實例。
影響:有些實務不會提交成功。重啟之後不需要恢復動作。無傷害。
abort:
a:阻止任何用戶建立新的連接,同時阻止產生新的事務。
b:立即結束當前正在執行的sql語句。
c:任何未提交的實務都不會被回滾。
d:立即斷開所有用戶連接,關閉、卸載數據庫,並終止實例。
影響:關的是快,但是會造成數據信息丟失,下一次啟動會需要恢復動作。不要使用此方法。
-------------------------EOF---------------------------------