oracle几个状态,oracle启动的四个状态
1:oracle啟動文件的優先順序:
1:spfileSID.ora
2:Default SPFILE -->spfile.ora
3: initSID.ora
4: DEFAULT PFILE-->
2:如何指定啟動spfile文件
oracle只有啟動pfile文件命令,如果想手動啟動spfile文件。
可以通過以下設置:
在pfile文件中使用
spifle=$ORACLE_HOME/dbs/spfileabc.ora這個命令
ex: 有一個文件為:abc123.ora
在abc123.ora中有 有
spifle=$ORACLE_HOME/dbs/spfileabc.ora這個命令
然后我們啟動時候使用:
startup pfile=$ORACLE_HOME/dbs/abc123.ora
這樣oracle能夠正常啟動,啟動時候會讀取
pfile中的文件,因為:abc123.ora中有
spifle=$ORACLE_HOME/dbs/spfileabc.ora這個命令
所以還是啟動spfile文件 即: spfileabc.ora
question: 誰能夠啟動oracle數據庫:
如果你是操作系統的管理員,你能夠啟動和關閉數據庫。
oracle是口令認證的,如果一個認證的用戶具有了
SYSDBA,和 SYSOPER 權限 可以啟動和關閉數據庫。
3:oracle數據庫的四種狀態:
shutdown狀態: oracle數據庫沒有啟動
NOMOUNT狀態: SGA和后臺進程已經啟動
MOUNT狀態: 通過參數讀取了控制文件 ?,擁有sysdba權限的可以進行一些數據的備份和恢復操作,其他用戶還不能訪問
OPEN狀態; 其他用戶正常訪問
一:SHUTDOWN -->NOMOUNT
一個數據庫實例是開始:
首先從spfile或者pfile中讀取數據庫參數文件:
然后分配SGA和創建后臺進程。
相當于生產線和工人都到位了
但是沒有開始生產,生產線上沒有產品。
這個時候一些參數可以查到了:
show parameter db_name;
show parameter db_block_size;
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area 431038464 bytes
Fixed Size 1333676 bytes
Variable Size 276825684 bytes
Database Buffers 146800640 bytes
Redo Buffers 6078464 bytes
一些參數查詢:
SQL> show parameter db_name;
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_name string
orcl
SQL> show parameter db_block_size;
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_block_size integer
8192
二:NOMOUNT---->MOUNT
就相當于把 數據庫和實例建立關系。
首先根據初始化參數文件中的CONTROL_FILE參數找到相應的控制文件然后打開它們。
在控制文件中包含了數據庫的數據文件和redo log文件信息。
這個時候數據庫還沒有打開,仍然處于關閉狀態,這個時候普通的用戶還不能
連接到數據庫,只有數據庫管理員可以進行一些備份恢復等工作。
三: MOUNT ----> OPEN 通過控制文件信息找到 聯機數據文件和redo log 文件,
如果沒有以上兩個文件,數據庫就會報錯。如果這兩個文件壞了,
數據庫無法打開,這個時候可以通過sysdba權限進入mount掛載狀態后,對
這兩個數據文件進行恢復操作后再打開數據庫。
數據庫從nomount變成 mount狀態語句:
ALTER DATABASE db_name MOUNT
Keywords and Parameters
If you do not specify any options, then RMAN mounts and opens the database with the default server parameter file.
Syntax Element
Description
STARTUP
If you specify only?STARTUP?with no other options, then the instance starts, then mounts and open the database.
DBA
Restricts access to users with the?RESTRICTED?SESSION?privilege.
FORCE
If the database is open, then?FORCE?shuts down the database with a?SHUTDOWN?ABORT?statement before re-opening it.If the database is closed, then?FORCE?opens the database.
MOUNT
Starts the instance, then mounts the database without opening it
NOMOUNT
Starts the instance without mounting the database. If no parameter file exists, then RMAN starts the instance with a "dummy" parameter file. You can then run?RESTORE?SPFILE?to restore a backup server parameter file.
PFILE?='filename'
Specifies the filename of the?init.ora?file for the target database. If this parameter is not specified, then the default?init.ora?filename is used.
startup RESTRICT 對不同用戶權限的用戶連接到oracle上進行了限制,
ALTER SYSTEM ENABLE RESTRICTED SESSION;
這樣 沒有 RESTRICT權限的用戶就無法連接進來了。
所有登錄的session都是在V$session表中可以查詢到。
select saddr,sid,serial#,username from v$session;
可以看到連接進來的用戶。
alter system kill session ?'SID,SERIAL#';
這樣可以殺死遠程連接進來的用戶。
數據庫還有一種READ-ONLY模式:
可以使用以下命令讓數據庫變成只讀模式:
STARTUP MOUNT
ALTER DATABASE OPEN READ ONLY;
4:如何關閉數據庫
A = ABORT
I = IMMEDIATE
T = TRANSACTIONAL
N = NORMAL
如何關閉數據庫:
關閉數據庫有幾個階段:
1:close database:
首先把SGA中數據寫到磁盤數據文件中,保持數據的完整性
然后,把聯機的數據文件,一些datafiles和redo log文件都關閉掉。
但是控制文件依然是打開的,可以被管理員所使用。
2:Unmount database:
oracle把控制文件關閉掉,但是數據庫實例 instance還是存在
3:shut down an instance
把對應的資源釋放掉;
SHUTDOWN 命令有以下模式:
A = ABORT
I = IMMEDIATE
T = TRANSACTIONAL
N = NORMAL
abort的時候會有臟數據,其他三個都不會有臟數據。
shutdown immediate 是用的比較多的,因為能夠快速關閉數據庫而且沒有臟數據。
關于關閉數據庫的補充:
SHUTDOWN NORMAL SHUTDOWN TRANSACTIONAL SHUTDOWN IMMEDIATE 這三種關閉數據的操作的步驟都要做如下操作: 1:把數據庫的緩存寫到數據文件中--> data files中 2:把沒有提交的數據回滾掉 3:釋放資源 所以以上三種關閉是 clean database 干凈的關閉, 所以在下次數據庫啟動的時候,不需要數據庫instance recovery 關于數據庫的關閉可以做個實驗。 對于一些關閉不掉的數據庫的時候可以使用: SHUTDOWN ABORT ?或者 Instance Failure ?或者 START FORCE 這三種情況成為 Inconsistent 數據庫, 臟數據的數據庫: 如果出現以上三種情況 : 修改的緩存不被寫入到數據文件中 -->data files 沒有提交的改變的數據不回滾 在關閉的時候: 聯機redo log文件被用于重新改變。 Undo segments 被用于回滾沒有提交的數據的改變, 釋放資源.
總結
以上是生活随笔為你收集整理的oracle几个状态,oracle启动的四个状态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 3des 兼容java,PHP版
- 下一篇: 通过命令解锁Oracle,在命令行下进行