1 启动数据库的三个台阶 nomount,mount,open
1.1 启动数据库到第一个台阶nomount状态做了如下的工作.
(1)读参数文件spfileSID.ora(含有进程信息、内存分配和控制文件位置等信息)
(2)分配内存
(3)启动后台进程
(4)初始化部分v$视图
  读取的参数文件为spfileSID.ora(含有进程信息、内存分配和控制文件等的位置信息)。在nomount状态下可以查询的动态性能视图例如:
select * from v$sga
select * from v$bgprocess
select * from v$instance

但是查询不到关于数据库和日志等的信息。

1.2 将数据库启动到mount状态
Alter database mount;
Mount数据库的过程是读取spfile参数文件中指定位置的控制文件,校验控制文件的正确性,将控制文件的内容读入到内存。

mount是挂接的意思,是操作系统中的概念,一旦mount之后,就是将一个没有意义的实例和一个
数据库发生了联系,因为实例是空壳,没有任何数据库和该实例发生关系,我们可以理解为实例是水泵,放到哪个水塘里就会抽取哪里的数据。实例是通用的,mount的意思是将一个通用的水泵放入到指定的水塘。
mount根据spfile文件指定的控制文件的位置,读取读控制文件,获取出控制文件中的数据文件和日志文件的信息,此状态下可以查询的动态性能试图例如:
select name from v$database;
select * from v$log;
select name from v$datafile;
select * from v$logfile;


1.3 打开数据库
Alter database open;
根据读取的控制文件中描述的数据文件等信息,验证数据文件的一致性,如果不一致,使用日志文件将数据库文件恢复到一致的状态。
数据库open后,普通用户才可以访问数据库,用户的表才为可见。
select * from skcc.emp;
注:
只读方式open数据库为Alter database open read only;
select OPEN_MODE from v$database;
默认的open方式为read write
注:想改read only为read write 必须重新启动数据库。

我们现在回想一下数据库启动的三个台阶,我们先读的是参数文件,参数文件可以有我们来编写;

读完参数文件后又读了控制文件,控制文件描述了数据文件和日志文件的信息,如果控制文件丢失可以重新建立;
最后是读数据文件,数据文件里才存放了我们的数据。

数据库将启动分为三个台阶,目的是我们可以准确的知道哪里有问题,迅速的排除。有点象老鼠拖木钎,大头在后面,由最开始的一个几k的参数文件,最后到几个t的大型数据库,当我们只打startup而不加任何参数的时候.默认是到open,等于startup open。



2 停止数据库的四种模式
Oracle有四种停止数据库的方式,并且各不相同,用于不同的情况。一般我们采用shutdown immediate方式停止数据库,下面是每种停止数据库方式的差别:
2.1 Shutdown NORMAL
新的会话不接受
等待非活动的会话结束
等待事物结束
产生检查点
停止数据库

注:在此种情况下,要求事务必须提交,同时用户必须断开连接,数据库才可以关闭。
2.2 Shutdown TRANSACTIONAL
新的会话不接受
不等待非活动的会话结束
等待事物结束
产生检查点
停止数据库

注:在此种情况下,只要事务提交后数据库便可以关闭,不要求用户必须断开连接
2.3 Shutdown  IMMEDIATE
新的会话不接受
不等待非活动的会话结束
不等待事物结束
产生检查点
停止数据库


2.4 Shutdown abort
新的会话不接受
不等待非活动的会话结束
不等待事物结束
不产生检查点

注:

1)四种关闭方式关闭数据库后均不允许用户接入;
2)一致性 shutdown,产生检测点的关闭方式有
Shutdown NORMAL
Shutdown TRANSACTIONAL
Shutdown  IMMEDIATE

数据库再次启动的时候不要恢复
3)不一致性 shutdown,不产生检测点的关闭方式有
Shutdown abort
Startup force

一般出现在Instance崩溃(停电)时,当数据库再次启动的时候需要恢复,自动的,透明的。