2015年(68)
分类: Oracle
2015-08-31 19:05:54
一、启动过程
oracle数据库的启动包含三个过程
nomount
mount
open
启动和关闭数据库的所有操作必须具备sysoper或是sysdba的权限
1.1. nomount
在需要创建数据库或重新创建cortorl file过程中,才需要从nomount阶段启动,如果在nomount阶段就出现问题,问题通常与系统有关,比如有软件冲突、系统资源不足等。主要过程:
读取参数文件$ORACLE_HOME/dbs/spfileSID.ora,找不到则读取spfile.ora,如spfile还不存在,读取initSID.ora ;三个文件都不存在则无法启动instance
应用参数文件启动instance(分配SGA、启动后台进程)
打开alertSID.log文件和跟踪文件
1.2. mount
实例已启动,加载数据库mount(但是不打开数据库),主要过程:
使DB与以前启动的实例关联
定位并打开参数文件中指定的contolfile
读取控制文件以获取数据文件和重做日志文件的名称和状态,不进行数据文件和联机重做日志文件是否存在的检查。数据文件或日志文件被删除后依然可以启动到mount阶段
1.3. open
主要过程:
检查数据文件是否在,数据库打开联机数据文件
打开联机重做日志文件,并进行检测,同时检查数据一致性,若需要,SMON和后台进
程将启动实例恢复操作
1.4. 启动相关命令
命令语法:SQL>STARTUP [pfile=PATH] [FORCE][RESTRICT]
[OPEN[RECOVER][DATABASE]|MOUNT|NOMOUNT]
OPEN 打开到正常状态
Nomount 创建SGA并启动后台进程,但不允许访问数据库
Pfile 指定要读取的参数文件,若找不到或是不指定则读取默认路径下的
Force 执行正常启动之前终止运行的实例
Restrict –约束,只允许具有restricted session权限的用户访问DB
Recover 在数据库启动时开始介质恢复
二、数据库的关闭
2.1数据库的关闭过程:
close: (alter database close)只在没有连接的情况下才会成功
dismount:(alter database dismount)卸载数据库
shutdown: 彻底关闭数据库实例
2.2 shutdown命令语法:SHUTDOWN[NORMAL|TRANSACTIONAL|IMMEDIATE|ABORT]
normal 正常关闭(默认设置),不接收新的连接,等到现有的连接全部断开后关闭数据库,下次启动实例时不需要恢复。在大量用户连接的数据库,等待用户断开连接时间会很长
transactional 事务处理关闭,不接收新的连接,断开所有会话,等到现有的事务完成,,脏数据全部写入磁盘,关闭数据库,下次启动实例时不需要恢复。
immediate 立即关闭,强行断开所有连接,中断正进行的事务,未提交的事务进行回滚,脏数据全部写入磁盘,关闭数据库,下次启动实例时不需要恢复。此选项在日常维据中最常用
abort 异常中断,一般在immediate等其他关闭方法不起作用时才最后使用,断开所有连接,中断所有事务,直接关闭缓冲(脏数据没有写入磁盘),下次启动时需恢复实例。在打算使用abort来关闭数据时,可先执行alter system checkpoint 来减少下次启动恢复实例的时间
三、DB状态切换
3.1 常见的切换
Alter database db_name mount; 数据库状态由nomount-〉mount
Alter database db_name open [read only|readwrite] 以只读或是读写模式打开
3.2 以授权模式打开数据库
Alter system [{enable|disable}restrictedsession]
Enable restricted session 仅允许具有restricted session权限的用户在以后登录
Disable restricted session 禁用restricted session以允许没有该权限的用户可以登录
Alter system kill session=integer1,integer2 终止会话,释放资源,Integer1 为v$session中SID的值,Integer2 为v$session中serid#列的值