Oracle 數據庫啟動過程的三階段、停庫四種模式詳解

數據庫的啟動過程(3個臺階)

1.nomount

shutdown –> nomount

startup nomount

select status from v$instance;
SQL> 
SQL> conn / as sysdba
Connected to an idle instance.
SQL> 
SQL> startup nomount
ORACLE instance started.
 
Total System Global Area  629145392 bytes
Fixed Size                  9137968 bytes
Variable Size             197132288 bytes
Database Buffers          415236096 bytes
Redo Buffers                7639040 bytes
SQL> 
SQL> 
SQL> 
SQL> 
SQL> select status from v$instance;
 
STATUS
------------
STARTED
 
SQL> 

數據庫啟動到nomount做瞭什麼?

  • 分配實例(ipcs -sm, ps -ef | grep ora_)
  • 寫審計文件和警報日志

數據庫啟動到nomount需要什麼?

  • 參數文件
  • 需要審計目錄和診斷目錄

nomount狀態可以做什麼?

  • 可以修改參數
  • 可以查看內存和後臺進程的信息
  • 可以創建數據庫
  • 可以重建控制文件
SQL> 
SQL> select * from v$sgainfo;
 
NAME                                  BYTES RES     CON_ID
-------------------------------- ---------- --- ----------
Fixed SGA Size                      9137968 No           0
Redo Buffers                        7639040 No           0
Buffer Cache Size                 411041792 Yes          0
In-Memory Area Size                       0 No           0
Shared Pool Size                  197132288 Yes          0
Large Pool Size                     4194304 Yes          0
Java Pool Size                            0 Yes          0
Streams Pool Size                         0 Yes          0
Shared IO Pool Size                       0 Yes          0
Data Transfer Cache Size                  0 Yes          0
Granule Size                        4194304 No           0
 
NAME                                  BYTES RES     CON_ID
-------------------------------- ---------- --- ----------
Maximum SGA Size                  629145392 No           0
Startup overhead in Shared Pool   193465328 No           0
Free SGA Memory Available                 0              0
 
14 rows selected.
 
SQL> select name from v$bgprocess where paddr<>'00';
 
NAME
-----
PMON
CLMN
PSP0
VKTM
GEN0
MMAN
M000
GEN1
SCMN
DIAG
OFSD
 
NAME
-----
SCMN
DBRM
VKRM
SVCB
PMAN
DIA0
DBW0
LGWR
CKPT
LG00
SMON
 
NAME
-----
LG01
SMCO
RECO
W000
LREG
W001
PXMN
FENC
D000
MMON
MMNL
 
NAME
-----
S000
TMON
 
35 rows selected.
 
SQL> 

2.mount

shutdown –> mount

  • startup mount

nomount –> mount

  • alter database mount;
SQL> 
SQL> select status from v$instance;
 
STATUS
------------
STARTED
 
SQL> alter database mount;
 
Database altered.
 
SQL> select status from v$instance;
 
STATUS
------------
MOUNTED
 
SQL> 

數據庫啟動到mount做瞭什麼?

  • 加載控制文件的信息到內存

數據庫啟動到mount狀態需要做什麼?

  • 控制文件

mount狀態可以做什麼?

  • 可以備份、還原、恢復
  • 可以移動數據庫文件
  • 可以進行數據文件的offline
  • 可以打開和關閉歸檔模式
  • 可以打開和關閉閃回數據庫的功能
SQL> 
SQL> select name from v$datafile;
 
NAME
--------------------------------------------------------------------------------
/u02/oradata/CDB1/system01.dbf
/u02/oradata/CDB1/sysaux01.dbf
/u02/oradata/CDB1/undotbs01.dbf
/u02/oradata/CDB1/pdbseed/system01.dbf
/u02/oradata/CDB1/pdbseed/sysaux01.dbf
/u02/oradata/CDB1/users01.dbf
/u02/oradata/CDB1/pdbseed/undotbs01.dbf
/u02/oradata/CDB1/pdb1/system01.dbf
/u02/oradata/CDB1/pdb1/sysaux01.dbf
/u02/oradata/CDB1/pdb1/undotbs01.dbf
/u02/oradata/CDB1/pdb1/users01.dbf
 
11 rows selected.
 
SQL> select name from v$tempfile;
 
NAME
--------------------------------------------------------------------------------
/u02/oradata/CDB1/temp01.dbf
/u02/oradata/CDB1/pdbseed/temp012022-11-02_15-16-24-663-PM.dbf
/u02/oradata/CDB1/pdb1/temp01.dbf
 
SQL> 
SQL> select member from v$logfile;
 
MEMBER
--------------------------------------------------------------------------------
/u02/oradata/CDB1/redo03.log
/u02/oradata/CDB1/redo02.log
/u02/oradata/CDB1/redo01.log
 
SQL>

3.open

shutdown –> open

  • startup

nomount —->  open

  • alter database mount;
  • alter datbase open;

隻讀方式去打開數據庫

SQL> 
SQL> startup mount
ORACLE instance started.
 
Total System Global Area  629145392 bytes
Fixed Size                  9137968 bytes
Variable Size             197132288 bytes
Database Buffers          415236096 bytes
Redo Buffers                7639040 bytes
Database mounted.
SQL> 
SQL> 
SQL> select status from v$instance;
 
STATUS
------------
MOUNTED
 
SQL> 
SQL> alter database open read only;
 
Database altered.
 
SQL> 
SQL> select status from v$instance;
 
STATUS
------------
OPEN
 
SQL> 
SQL> 
SQL> 
SQL> select open_mode from v$database;
 
OPEN_MODE
--------------------
READ ONLY
 
SQL> 
SQL> 
SQL> startup
ORACLE instance started.
 
Total System Global Area  629145392 bytes
Fixed Size                  9137968 bytes
Variable Size             197132288 bytes
Database Buffers          415236096 bytes
Redo Buffers                7639040 bytes
Database mounted.
Database opened.
SQL>

數據庫啟動到open做瞭什麼?

  • 加載聯機日志和數據文件

數據庫啟動到open需要什麼?

  • 聯機日志和數據文件

open狀態可以做什麼?

數據庫的停止(四種模式)

1.正常停庫: shutdown normal = shutdown

  • 普通用戶的連接不允許建立
  • 等待查詢結束
  • 等待事務結束
  • 產生檢查點(數據同步)
  • 關閉聯機日志和數據文件
  • 關閉控制文件
  • 關閉實例

2.事務級停庫: shutdown transactional

  • 普通用戶的連接不允許建立
  • 查詢被終止
  • 等待事務結束
  • 產生檢查點(數據同步)
  • 關閉聯機日志和數據文件
  • 關閉控制文件
  • 關閉實例

3.立即停庫 : shutdown immediate (生產庫最常用的停庫方式)

  • 普通用戶的連接不允許建立
  • 查詢被終止
  • 事務被回退
  • 產生檢查點(數據同步)
  • 關閉聯機日志和數據文件
  • 關閉控制文件
  • 關閉實例

4.強制停庫 : shutdown abort

相當於拔電源

(停止之後的數據庫是臟庫)
註意:這些命令需要慎用

startup force = shutdown abort + startup
startup force nomount = shutdown abort + startup nomount
startup force mount = shutdown abort + startup mount

到此這篇關於Oracle 數據庫啟動三階段、停庫四種模式的文章就介紹到這瞭,更多相關Oracle 數據庫啟動內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: