一. oracle 數據庫啟停三個階段
1.1 startup nomount : 啟動實例
(1) 讀取參數文件 (2)分配內存 (3)啟動后台進程
SQL> startup nomount
ORACLE instance started.
Total System Global Area 849530880 bytes
Fixed Size 1339824 bytes
Variable Size 528485968 bytes
Database Buffers 314572800 bytes
Redo Buffers 5132288 bytes
--startup nomount 此時實例已經啟動
SQL> select status from v$instance;
STATUS
------------------------
STARTED
--啟動至nomount 階段可以查看如下視圖,也僅僅能夠查看與實例有關的視圖
v$instance 、v$sgastat 、v$process 、v$parameter
--若查看與數據庫相關的信息則無法查看,如下查看數據文件及表空間信息
SQL> select name from v$datafile;
select name from v$datafile
*
ERROR at line 1:
ORA-01507: database not mounted
SQL> select name from v$tablespace;
select name from v$tablespace
*
ERROR at line 1:
ORA-01507: database not mounted
1.2 alter database mount:掛載數據庫
(1)讀取控制文件
(2)檢查控制文件個數是否一致(控制文件有2個),檢查控制文件內容是否一致
(3)檢查控制文件數據庫名和參數文件記錄的數據庫名是否一致
SQL> select name from v$database;
NAME
----------------------------------------
ORCL
SQL> show parameter name;
NAME TYPE VALUE
------------------------------------ ---------------------------------------- ------------------------------
db_file_name_convert string
db_name string orcl
db_unique_name string orcl
global_names boolean FALSE
instance_name string orcl
lock_name_space string
log_file_name_convert string
service_names string orcl
(4)可以查看與數據文件有關的動態視圖v$datafile
(5)可以查看與控制文件有關的動態視圖v$controlfile 、v$controlfile_record_section
(6)可以查看表空間
--此時數據庫已經啟動
SQL> alter database mount;
Database altered.
--此時查看數據庫open_mode 狀態已經掛載
SQL> select open_mode from v$database;
OPEN_MODE
----------------------------------------
MOUNTED
--此時則可以查看與數據庫有關的信息如下
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf
--於此同時我們可以通過動態性能視圖查看數據庫信息,但還不能訪問數據庫表
SQL> select * from scott.emp;
select * from scott.emp
*
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only
1.3 alter database open:打開數據庫
(1)檢查數據文件和日志文件
(2)檢查數據文件頭ckpt和控制文件ckpt和數據文件last ckpt
SQL> select a.checkpoint_change# "header_ckpt",
2 b.checkpoint_change# "ctl_ckpt",
3 b.last_change# "final_ckpt"
4 from v$datafile_header a, v$datafile b
5 where a.file# = b.file#;
header_ckpt ctl_ckpt final_ckpt
----------- ---------- ----------
890202 890202
890202 890202
890202 890202
890202 890202
890202 890202
(3)驗證控制文件和數據文件的一致性
SQL> alter database open;
Database altered.
1.4 關閉數據庫
shutdown abort :非一致性關庫
shutdown transactional
shutdown normal
shutdown immediate :關閉數據庫
采用immediate 關閉模式會出現以下情況:
(1)oracle db 正在處理的當前SQL語句不會完成;
(2)oracle 服務器不會等待當前連接到數據庫的用戶斷開連接;
(3)oracle 服務器會回退活動的事物處理,而且會斷開所有連接用戶;
(4)oracle 服務器在關閉並斷開數據庫后關閉實例,下一次啟動不需要不需進行實例恢復。