19.1、oracle数据库实例的启动分三步:

1、启动oracle例程:

startup nomount;

#读初始化参数文件,启动实例,但不安装数据库。当数据库以这个模式启动时,参数文件被读取,

#后台进程和内存结构被启动,但它们不被附加或与数据库的磁盘结构进行通信,数据库是不可使用的,

#通常启动到这里可以做create database,create or recreate control file,mount standby database

#等动作,修改parameter也是可以的。


2、读取控制文件,加载数据库:

alter database mount;

startup mount;

#启动实例,打开控制文件,并加载了数据库,但是数据库没有打开;

#startup mount 选项执行 startup nomount 选项的所有工作,但另外附加数据库结构并与这些结构进

#行交互,这时Oracle从它用来查找和附加到主要数据库结构的控制文件中获得信息。当处于这个模式时,

#可以执行一些管理型任务,比如读取 control file、recover dtabase、backup database、

#rename db files、change archivelog mode等;


3、打开数据库:

alter database open;

startup

#是最全的,实例,数据库加载,数据库、日志文件打开都完成

#如果 STARTUP 命令行上没有指定任何模式,STARTUP OPEN 选项就是默认的启动模式。STARTUP OPEN

#选项执行 STARTUP NOMOUNT和STARTUP MOUNT选项的所有步骤,这个选项把数据库变成对所有用户

#都是可用的。


startup force:如果在用正常方式启动数据库时遇到了困难,可以使用 STARTUP FORCE 选项,STARTUP FORCE

选项首先异常关闭数据库,然后重新启动它。


STARTUP RESTRICT:选项启动数据库并把它置入OPEN模式,但只给拥有 RESTRICTED SESSION 权限的用户赋予访问权。


4、查看数据库实例状态:

select status from v$instance;

#为open状态

 

19.2、关闭数据库实例:

1、正常方式关闭数据库实例:

shutdown normal;


2、立即方式关闭数据库实例:

shutdown immediate;

#执行 shutdown immediate 数据库并不立即关闭,而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),

#当使用 shutdown 不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。

   

3、直接关闭数据库实例:

shutdown abort;

#正在访问数据库的会话会被突然终止,如果数据库中有大量操作正在执行,这时执行 shutdown abort 后,重新启动数据库

#需要很长时间,因为 shutdown abort 的时候,跟kill 进程是一样的效果,数据库立即关闭,这个时候文件状态可能不一致,

#因为正常关闭数据库会同步校验各文件,使得重新启动的时候文件时间点一致并且不用进行崩溃恢复,若检查点信息一致,则

#做崩溃恢复,若检查点信息不一致(正好在更新文件头)则需要做介质恢复。这些问题都好处理,最怕的问题是这个时候系统

#有大量IO,结果这样造成写的突然中断,碰巧造成文件块的逻辑坏块,那麻烦比较大一些,尤其是系统表空间的block损坏,

#虽然 shutdown abort 出错的几率很小,1000个人可能只有一个人碰到,但是我们还是要小心。正确的处理流程是,

#shutdown immediate,若数据库迟迟不能 down下来,在 os 上观察 IO 状况,几乎没有 io 的时候另开一窗口 shutdown abort,

#几乎不会出问题了。