zoukankan      html  css  js  c++  java
  • Oracle 数据库启动与关闭 各种方式详解整理

    闲话:

    近来要开始学Oracle了,平时遇到些什么不懂的总是要找谷歌度娘的,不过有些时候找到的内容却不是很衷意。嗨,看来我也别懒着了,收集些书上的网上的知识点到这里来方便以后用得着的时候查查吧,也方便大家参考参考(如果你觉得还满意的话)。以下内容以oracle 11g为例抄一本书上的,书名就懒得广告了。可能抄得太详细了,没必要的话看看命令也就罢了。

     

    前言:

    首先要知道,Oracle数据库的完整启动过程是分步骤完成的,包含以下3个步骤:

    启动实例-->加载数据库-->打开数据库

    详解看这里:http://blog.csdn.net/lutinghuan/article/details/7484103

    因为Oracle数据库启动过程中不同的阶段可以对数据库进行不同的维护操作,对应我们不同的需求,所以就需不同的模式启动数据库。

    小白:在启动实例之前,需要先启动SQL*Plus,并以一个用户身份连接到Oracle。

     

    启动模式详解

    1.NoMount 模式(启动实例不加载数据库)

    命令:startup nomount

    讲解:这种启动模式只会创建实例,并不加载数据库,Oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据文件。在NoMount模式下,只能访问那些与SGA区相关的数据字典视图,包括V$PARAMETER、V$SGA、V$PROCESS 和 V$SESSION等,这些视图中的信息都是从SGA区中获取的,与数据库无关。

    模式用途:

    (1)创建新数据库;

    (2)重建控制文件。

     

    2.Mount模式(加载数据库但不打开数据库)

    命令:startup mount

    讲解:这种启动模式将为实例加载数据库,但保持数据库为关闭状态。因为加载数据库时需要打开数据库控制文件,但数据文件和重做日志文件都都无法进行读写,所以用户还无法对数据库进行操作。 在Mount模式下,只能访问那些与控制文件相关的数据字典视图,包括V$THREAD、V$CONTROLFILE、V$DATABASE、V$DATAFILE 和 V$LOGFILE等,这些视图都是从控制文件中获取的。

    模式用途:

    (1)重命名数据文件;

    (2)添加、删除或重命名重做日志文件;

    (3)执行数据库完全恢复操作;

    (4)改变数据库的归档模式。

     

    3.Open模式(正常打开数据库)

    命令:startup [open]

    讲解:正常按3个步骤启动数据库。

    模式用途:平时不对数据库做什么维护,像只做应用开发,用这个模式就好了。

     

    4.强制启动模式

    命令:startup force

    用途&讲解:在某些情况下,使用前面的各种模式都无法成功启动数据库时,可以尝试强制启动模式。

     

    使用Alter Database语句,还可以在各启动模式间切换。并且,还可以对数据库设置不同的状态用于不同的操作,如受/非受限抽状态、只读。

     

    详情参考看这里:http://blog.csdn.net/lutinghuan/article/details/7484300

     

    关闭数据库与实例

     

    与数据库启动一下,关闭数据库与实例也分为3步:关闭数据库-->实例卸载数据库--->终止实例

    1.Nomal(正常关闭方式)

    命令:shutdown nomal

    讲解:正常方式关闭数据时,Oracle执行如下操作:

    (1)阻止任何用户建立新的连接。

    (2)等待当前所有正在连接的用户主动断开连接(此方式下Oracle不会立即断掉当前用户的连接,这些用户仍然操作相关的操作)

    (3)一旦所有的用户都断开连接,则立即关闭、卸载数据库,并终止实例。(所以,一般以正常方式关闭数据库时,应该通知所有在线的用户尽快断开连接)

     

    2.Immediate(立即关闭方式)

    命令:shutdown immediate

    讲解:

    (1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。

    (2)Oracle不等待在线用户主动断开连接,强制终止用户的当前事务,将任何未提交的事务回退。(如果存在太多未提交的事务,此方式将会耗费很长时间终止和回退事务)

    (3)直接关闭、卸载数据库,并终止实例。

     

    3.Transactional(事务关闭方式)

    命令:shutdown transactional

    讲解:这种方式介于正常关闭方式跟立即关闭方式之间,响应时间会比较快,处理也将比较得当。执行过程如下:

     

    (1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。

    (2)等待所有未提交的活动事务提交完毕,然后立即断开用户的连接。

    (3)直接关闭、卸载数据库,并终止实例。

     

    4.Abort(终止关闭方式)

    命令:shutdown abort

    讲解:这是比较粗暴的一种关闭方式,当前面3种方式都无法关闭时,可以尝试使用终止方式来关闭数据库。但是以这种方式关闭数据库将会丢失一部份数据信息,当重新启动实例并打开数据库时,后台进程SMON会执行实例恢复操作。一般情况下,应当尽量避免使用这种方式来关闭数据库。执行过程如下:

     

    (1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。

    (2)立即终止当前正在执行的SQL语句。

    (3)任何未提交的事务均不被退名。

    (4)直接断开所有用户的连接,关闭、卸载数据库,并终止实例。

  • 相关阅读:
    线程的中断
    线程间的协作机制
    iOS app内打开safari完成google的OAuth2认证
    iOS ipa 重签名 resign
    iOS rebuild from bitcode对ipa大小的影响
    iOS URL Cache文章推荐 (待完成)
    iOS 推荐几篇关于Objective-c 动态语言的文章
    iOS Code Sign On Copy
    设计模式好文章汇总(不断更新中)
    Json 文件中value的基本类型
  • 原文地址:https://www.cnblogs.com/ylqmf/p/2465397.html
Copyright © 2011-2022 走看看