首頁 > 軟體

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

2022-11-23 14:01:48

資料庫的啟動過程(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 資料庫啟動內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com