oracle的启动过程共经历四个阶段:
shutdown→nomount→mount→open
1.shutdown→nomount过程:
读初始参数文件
分配物理内存
启动后台进程
定位到控制文件
打开/写alert文件
nomount过程可以访问的动态性能视图:v$parameter,v$sga,v$option,v$process,v$version,v$instance
2.nomount→mount过程:
打开控制文件
确认 database的结构信息
mount过程可以访问的动态性能视图: v$thread,v$controlfile,v$database,v$datafile,v$datafile_header,v$logfile
以下任务必须在mount状态下进行:
命名数据文件
启用和禁用重作日志归档选项
执行完全数据库恢复
3.mount→open过程:
打开数据文件
打开重做日志文件
最后阶段中,oracle服务器验证所有数据文件和重做日志文件是否可以打开,并检查数据库的一致性,如果需要,smon进程会启动例程恢复。
自上而下:
shutdown:
nomount:读取初始化参数,并且分配物理内存,通过初始化参数定位到control file,后台进程启动,写alter文件,如果alter文件不存在将创建它
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 83887460 bytes
Database Buffers 79691776 bytes
Redo Buffers 2945024 bytes
在nomount状态:
可以访问到实例
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME HOST_NAME
--------------- -------------------------------- -------------------------------
1 orcl ORACLE10G
可以访问到后台进程
select * from v$bgprocess;
可以访问到内存结构
SQL> select * from v$sga;
NAME VALUE
---------------------------------------- ----------
Fixed Size 1247900
Variable Size 83887460
Database Buffers 79691776
Redo Buffers 2945024
但不可以访问database结构
SQL> select * from v$database;
select * from v$database
*
第 1 行出现错误:
ORA-01507: ??????
mount:读并打开控制文件,并确认到database的结构信息
SQL> alter database mount
2 /
数据库已更改。
SQL> select * from v$database;
DBID NAME CREATED RESETLOGS_CHANGE# RESETLOGS_TIME PRIOR_RESETLOGS_CHANGE# PRIOR_RESE
---------- --------- -------------- ----------------- --------------
1170053590 ORCL 25-12? -07 534907 25-12? -07 1 30-8? -05 ARCHIVELOG
可以找到有什么样的表空间
SQL> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
1 UNDOTBS1 YES NO YES
2 SYSAUX YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
6 EXAMPLE YES NO YES
已选择6行。
有什么样的数据文件组成:
SQL> select * from v$datafile
2 /
FILE# CREATION_CHANGE# CREATION_TIME TS# RFILE# STATUS ENABLED CHECKPOINT_CHANGE# CHECK
------- ---------------- -------------- ---------- ---------- ------- ---------- ----------------
1 9 30-8? -05 0 1 SYSTEM READ WRITE 777989 28-12? -07
2 532340 30-8? -05 1 2 ONLINE READ WRITE 777989 28-12? -07
3 6100 30-8? -05 2 3 ONLINE READ WRITE 777989 28-12? -07
4 9769 30-8? -05 4 4 ONLINE READ WRITE 777989 28-12? -07
5 559801 25-12? -07 6 5 ONLINE READ WRITE 777989 28-12? -07
有什么样的日志文件组成:
SQL> select * from v$logfile;
行将被截断
GROUP# STATUS TYPE MEMBER
---------- ------- ------- ----------------------------------------------------------
3 ONLINE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
2 ONLINE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
1 ONLINE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
在这个状态用户表还不能打开
open:所有文件被打开,并确认database状态
SQL> alter database open;
数据库已更改。