Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145220
  • 博文数量: 68
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-28 20:01
文章分类

全部博文(68)

文章存档

2015年(68)

我的朋友

分类: Oracle

2015-08-31 19:05:54

一、启动过程

oracle数据库的启动包含三个过程

  • nomount

  • mount

  • open 

启动和关闭数据库的所有操作必须具备sysoper或是sysdba的权限

1.1.  nomount 

在需要创建数据库或重新创建cortorl file过程中,才需要从nomount阶段启动,如果在nomount阶段就出现问题,问题通常与系统有关,比如有软件冲突、系统资源不足等。主要过程:

  1.  读取参数文件$ORACLE_HOME/dbs/spfileSID.ora,找不到则读取spfile.ora,如spfile还不存在,读取initSID.ora ;三个文件都不存在则无法启动instance

  2.  应用参数文件启动instance(分配SGA、启动后台进程)

  3.  打开alertSID.log文件和跟踪文件

 

1.2.  mount

实例已启动,加载数据库mount(但是不打开数据库),主要过程:

  1. 使DB与以前启动的实例关联

  2.  定位并打开参数文件中指定的contolfile

  3. 读取控制文件以获取数据文件和重做日志文件的名称和状态,不进行数据文件和联机重做日志文件是否存在的检查。数据文件或日志文件被删除后依然可以启动到mount阶段

 

1.3.  open 

主要过程:

  1. 检查数据文件是否在,数据库打开联机数据文件

  2. 打开联机重做日志文件,并进行检测,同时检查数据一致性,若需要,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数据库的关闭过程:

  1. close: (alter database close)只在没有连接的情况下才会成功

  2. dismount:(alter database dismount)卸载数据库

  3. 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#列的值

阅读(508) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~