(2010-07-02)Oracle的启动方式

来源:互联网 发布:联想网络同传系统安装 编辑:程序博客网 时间:2024/06/05 23:39

   oracle的基础知识对于后续的学习非常重要,这句话很多DBA大牛们都这样忠告初学者。经过自己半年多的oracle学习,确实感觉要想对oracle有个更深的学习,就必须把基础打好,基础概念搞熟悉点,这样对于以后解决问题也很有帮助。

    看了些DBA面试题,发现也确实如此,很多问题都是很基础的,但容易被初学者忽略、不重视的。我不由得感慨:从现在起,把基础打牢才是王道啊。

    在此把oracle的启动过程重新的学习下,并记录下来以作为自己学习的历程见证。

    每当一个Oracle数据库启动时,它都经历一系列步骤来保证数据库一致性。当一个数据库启动时,它经历三个模式:NOMOUNT、MOUNT和OPEN。

STARTUP NOMOUNT选项:STARTUP NOMOUNT选项启动实例,但不安装数据库。当数据库以这个模式启动时,参数文件被读取;后台进程和内存结构被启动;但它们不被附加或与数据库的磁盘结构进行通信。当实例处于这个状态时,数据库是不可使用的。

STARTUP MOUNT选项:STARTUP MOUNT选项执行STARTUP NOMOUNT选项的所有工作,但另外附加数据库结构并与这些结构进行交互。这时Oracle从它用来查找和附加到主要数据库结构的控制文件中获得信息。当处于这个模式时,可以执行一些管理型任务,比如恢复。

STARTUP OPEN选项:如果STARTUP命令行上没有指定任何模式,STARTUP OPEN选项就是默认的启动模式。STARTUP OPEN选项执行STARTUP NOMOUNT和STARTUP MOUNT选项的所有步骤。这个选项把数据库变成对所有用户都时可用的。

其他情况

STARTUP FORCE选项:如果在用正常方式启动数据库时遇到了困难,可以使用STARTUP FORCE选项。STARTUP FORCE选项首先异常关闭数据库,然后重新启动它。

STARTUP RESTRICT选项:STARTUP RESTRICT选项启动数据库并把它置入OPEN模式,但只给拥有RESTRICTED SESSION权限的用户赋予访问权。alter system disable restricted session;(禁止限制会话权限)

最后,可以在多个地方启动数据库,像命令行、sqlplus和EM Database Control。

 

Oracle启动概括可以分为三个步骤:1)在内存中建立数据库实例;2)加载数据库文件建立数据库的连接; 3)打开数据库供用户使用。

这三个步骤对应数据的不同状态:

(1)       nomount

(2)       mount

(3)       open

nomount(未加载): 在内存中建立数据库实例,(SGA创建)根据参数文件启动后台进程。Oracle的参数文件有SPFILE<SID>.ORA, PFILE.ORA, INIT<SID>.ORA, Oracle按照文件顺序查找参数文件,查找到的就忽略其他文件,如果没有这三个文件,实例不能启动。Nomount状态会使用告警日志文件。

实例一旦在nomount状态,可以通过定位数据库的控制文件来进入mount(加载状态)。数据库的控制文件在参数文件中的CONTROL_FILES存在。如果控制文件损坏,可以停留在nomount状态修复这些损坏。

在OPEN状态,所有数据库文件(包括数据文件,日志文件等)都定位和打开。所有数据文件和日志文件的位置都可以再控制文件中定位。如果数据库文件损坏,可以停留在mount状态修复这些损坏。

数据库打开时:数据文件 联机重做日志文件 控制文件必须同步。所以如果防止不同步的情况,某个实例试图打开数据库的时候,SMON(系统监视进程)会检查数据文件和联机重做日志文件的状态,如果检测到无序的关闭,SMON进程会启动实例恢复进程,使之同步。

数据的关闭和启动顺序相反,有序关闭期间,数据库首先被关闭,后然卸载,最终实例被终止。所有会话被终止;活动的事物通过PMON进程回滚,已完成的事物同DBWn进程转存到磁盘数据文件,同时数据文件和日志文件关闭。卸载阶段,控制文件关闭,然后通过收回分配的SGA和后台进程,停止实例。

Oracle用startup命令启动数据库。

Oracle用shutdown名利关闭数据库。

 

oracle启动和关闭数据库过程详解

lsnrctl start

启动的三个步骤,依次为1.创建并启动实例、2.装载数据库、3.打开数据库。
可以通过命令startup来实现。


startup 命令格式
startup [ nomount | mount | open | force ] [ restrict ] [ pfile=filename ];

方法1 -- startup nomount ; alter database mount ;alter database open
方法2 -- startup mount ; alter database open
方法3 -- startup 或 startup open
在进入某种模式后,可以通过alter database来提升到更高的模式。但是无法降低至前面的模式。
书上写的真磨叽,就是说你在step2这里,你可以通过alter database到step3,但是你不能到step 1.

startup force
强制启动,可用于各种模式。正常的起不来,就试试这个。

startup restrict
restrict模式会将数据库置于open模式,此时只有restricted session权限的用户才能访问数据库。
用于维护动作。维护完成后,请禁用restricted session权限,以便普通用户的连接。如下:
alter system disable restricted session




1:创建并启动实例 stratup nomount
此模式下执行维护动作:
a:运行一个创建新数据库的脚本
b:重建控制文件

2:装载数据库 startup mount
此模式下执行维护动作:
a:重命名数据文件
b:添加、删除、重命名重做日志文件
c:执行数据库完全恢复操作
d:改变数据库的归档模式。

3:打开数据库 stratup 等同于 startup open
此模式状态下。任何具有create session权限的用户都可以连接到数据库。进行常规数据库操作。



关闭数据库,通过shutdown命令


shutdown 命令格式
shutdown [ normal | transactional | immediate | abort ];

normal:
a:阻止任何用户建立新的连接
b:等待连接的用户主动断开,正在连接的用户可以继续工作,甚至提交新的实务。
c:一旦所有的用户断开连接,才进行关闭,卸载数据库,并终止实例。
影响:等很久。

transactional:
a:阻止任何用户建立新的连接,同时阻止产生新的事务。
b:等待未提交的实务,提交完毕后,切断用户的连接。
c:一旦所有的用户断开连接,才进行关闭,卸载数据库,并终止实例。
影响:最好的关闭数据库的方式。

immediate:
a:阻止任何用户建立新的连接,同时阻止产生新的事务。
b:任何未提交的实务都会被回滚。
c:Oracle不再等待用户主动断开连接,而是直接关闭、卸载数据库,并终止实例。
影响:有些实务不会提交成功。重启之后不需要恢复动作。无伤害。

abort:
a:阻止任何用户建立新的连接,同时阻止产生新的事务。
b:立即结束当前正在执行的sql语句。
c:任何未提交的实务都不会被回滚。
d:立即断开所有用户连接,关闭、卸载数据库,并终止实例。
影响:关的是快,但是会造成数据信息丢失,下一次启动会需要恢复动作。不要使用此方法。
原创粉丝点击