本文内容

  • 服务器环境
  • 客户端环境
  • 概述
  • 启动数据库
  • 关闭数据库
  • 补充
  • 参考资料

本文说明 Oracle 数据库的启动和关闭,内容虽然基础,但是在数据库很多操作中都需要,因此,基础而重要,必须深入理解。比如,何种情况应该使用何种数据库加载模式,以及数据库文件打开模式。

服务器环境


  • Windows 2003 R2
  • Oracle11g 32位

 

客户端环境


  • Windows 2008R2
  • Oracle 11g 32位客户端

 

概述


若用 startup 命令启动数据库,执行的操作要经历三个不同的阶段:

  • 实例启动(instance startup)
  • 数据库加载(database mount)
  • 数据库打开(database open)

实例启动(instance startup),在这个阶段,Oracle 分析数据库参数文件,并通过设法获得实例锁来确定实例还未运行。随后,Oracle 启动多种不同的数据库进程,如 DBWn 和 LGWR 进程。Oracle 还将分配SGA所需的内存。一旦启动了实例,Oracle 会向启动实例的用户报告后台进程已经启动了实例。

数据库加载(加载启动),在加载阶段,Oracle 打开数据库控制文件。成功打开控制文件后,Oracle 从这个控制文件中析取数据库数据文件名,为打开这些数据库文件做准备。需要注意的是,这个时候,Oracle 不会检查这些数据文件是否存在,而只是从控制文件中标识数据文件的位置。完成这个步骤后,Oracle 向用户报告已经加载了数据库。

数据库打开,Oracle 将继续启动进程并设法打开数据库。在数据库打开阶段,Oracle 验证数据库文件是否存在,并打开这些文件。Oracle 打开数据文件时会检查数据文件头,并且比较这些文件头中的 SCN 信息和控制文件中存储的 SCN(SCN 是跟踪数据库状态的 Oracle 方法)。

Oracle 设法打开数据库时,会检查每个数据文件和数据库控制文件中的 SCN。如果 SCN 相同,并且位映射标记设置正确,则认为这个数据库是一致的,即可打开和使用数据库。如果 SCN 不相同,则 Oracle 会自动执行灾难或实例恢复。如果联机重做日志文件中存在生成一致的映像所需要的重做,就会发生灾难或实例恢复。如果由于数据文件损坏或由于恢复需要的重做不在联机重做日志中而不能执行灾难或实例恢复,Oracle 会要求 DBA 执行介质恢复。介质恢复需要从一个数据库备份中恢复一个或多个数据库数据文件,与实例恢复不同的是,介质恢复是一个手动执行的进程。

与启动对应是关闭 shutdown 命令,关闭卸载数据库,执行与 startup 相反的操作。

 

下面本例,启动或关闭数据库都在服务器上进行。

 

启动数据库


图 1 启动数据库

关闭数据库


图 2 关闭数据库

先关闭数据库,再启动。

Shutdown immediate 一般比较常用,而 Shutdown 往往关闭数据库很慢,还有可能关不掉~

 

补充


Startup 有几种不同的变体,这些变体包括:

  • Startup:使Oracle经历三个启动阶段。
  • Startup restrict:使Oracle经历三个启动阶段,并已限制模式打开数据库。只有具有限定权限的用户才能访问数据库。
  • Startup nomount:在成功启动数据库实例后,停止启动进程。通常在创建数据库之前,使用该命令来启动数据库实例。如果需要重新创建控制文件,使用这条命令也很方便。需要注意的是,为了在给定数据库中使用RMAN,必须能够使用startup nomount命令成功启动实例。
  • Startup mount:在成功启动数据库实例,并加载数据库后,停止启动进程。如果需要恢复system表空间,这个命令很有用。
  • Startup read only:使Oracle数据库(或备用数据库)以read only模式打开。这样,不支持DML操作,但可以查询数据库。如果正在执行时间点恢复操作,并且希望确保在使用resetlogs命令提交数据库实例之前,将数据库恢复到当前的时间点,这个命令很有用。
  • Startup force:与shutdown abort命令(接下来说明)一起关闭数据库。Startup force命令后面可以再加上数据库的打开模式。示例如下:

Startup force restrict

Startup force mount

Startup force nomount

 

换句话说,Startup 命令后面是可以加上数据库加载模式命令;加载模式命令后面,还加上数据库打开模式。

 

Shutdown命令有如下形式:

  • Shutdown(以及shutdown normal):使Oracle等待直至所有用户进程与数据库断开连接。所有进程断开连接后,数据库将完全闭关。这个命令可以避免实例恢复。执行后,任何新用户进程都不能连接到数据库。
  • Shutdown immediate:清除所有存在的用户回话,并且回滚所有未提交的事务。这个命令可以避免实例恢复。执行后,任何新用户进程都不能连接到数据库。
  • Shutdown abort:通常会使数据库奔溃。这个命令要求实例恢复(而不是介质恢复)。执行后,任何新用户进程都不能连接到数据库。
  • Shutdown transactional:使Oracle等待所有用户进程提交当前事务,再断开这些用户进程并关闭数据库。在等待完成这些事务的期间,任何新用户回话都不能连接到数据库。

 

参考资料

Oracle——数据库启动与关闭的更多相关文章

  1. Oracle数据库启动和关闭

    在介绍oracle数据库的启动和关闭前,先看一下Oracle的参数文件. oracle参数文件 1.初始化参数文件 oracle的初始化参数文件分为spfilesid.ora.spfile.ora.i ...

  2. Oracle 数据库启动与关闭 各种方式详解整理

    概述 只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库. 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库. 虽然数据库正常运行,但如果 ...

  3. Oracle 数据库启动与关闭

    只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库. 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库. 虽然数据库正常运行,但如果没有启 ...

  4. Linux 中 Oracle 数据库启动和关闭

    有时候你需要重启Linux 上的 Oracle 数据库. 注意先启动数据库,然后在启动数据库监听. a.切换为 oracle 用户身份,也可以使用 su - 将 home 和 path 都切换到 or ...

  5. oracle数据库--启动和关闭

    oracle--启动 oracle数据库的启动过程包含3个步骤:启动实例->加载数据库->打开数据库 分步骤启动过程可以对数据库进行不同的维护操作,对应我们不同的需求. 启动模式: 1.s ...

  6. oracle数据库启动和关闭方式

    Oracle数据库是重量级的,其管理非常复杂,将其在Linux平台上的启动和关闭步骤整理一下. 安装完毕oracle以后,需要创建oracle系统用户,并在/home/oracle下面的.bash_p ...

  7. Linux下oracle数据库启动和关闭操作

    第一步:登陆 root登陆之后切换到oracle用户上,输入 su oracle 第二步:连接 在oracle用户下,输入 sqlplus /nolog 第三步:使用管理员权限 输入 connect ...

  8. Oracle强制启动和关闭实例

    要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆.一般我们常用SYS用户以SYSDBA连接来启动和关闭数据库.下面介绍Oracle数据库几 ...

  9. Oracle的启动与关闭

    启动数据库的前提条件: 环境变量定义好($ORACLE_HOME,$ORACLE_SID,$PATH) 能密码文件认证或OS认证(确保能登入sys) 有正确的参数文件(启动数据库需要查找参数文件,默认 ...

随机推荐

  1. spanner-becoming-a-sql-system 2017

    https://blog.acolyer.org/2017/07/03/spanner-becoming-a-sql-system/?utm_source=tuicool&utm_medium ...

  2. [转]Twemproxy 介绍与使用

    Twemproxy是一种代理分片机制,由Twitter开源.Twemproxy作为代理,可接受来自多个程序的访问,按照路由规则,转发给后台的各个Redis服务器,再原路返回.该方案很好的解决了单个Re ...

  3. Linux驱动开发——指针和错误值

    参考: <Linux设备驱动程序>第三版 P294 许多内部的内核函数返回一个指针值给调用者,而这些函数中很多可能会失败.在大部分情况下,失败是通过返回一个NULL指针值来表示的.这种技巧 ...

  4. iOS 获取本地视频的缩略图

    +(UIImage *)getImage:(NSString *)videoURL { AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSU ...

  5. Objective-C中的一些特殊的数据类及NSLog的输出格式

    NSLog的格式如下所示: %@     对象 %d, %i 整数 %u     无符整形 %f     浮点/双字 %x, %X 二进制整数 %o     八进制整数 %zu    size_t % ...

  6. [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式

    android线程池的理解,晚上在家无事 预习了一下android异步加载的例子,也学习到了一个很重要的东东 那就是线程池+缓存  下面看他们的理解. [size=1.8em]Handler+Runn ...

  7. Web安全测试漏洞场景

    HTTP.sys 远程代码执行   测试类型: 基础结构测试   威胁分类: 操作系统命令   原因: 未安装第三方产品的最新补丁或最新修订程序   安全性风险: 可能会在 Web 服务器上运行远程命 ...

  8. .Net Core Bitmap位图处理

    截止.Net Core 2.0 目前官方类库的API中不支持Bitmap System.Drawing.Primitives 这是官方的一个Drawing库,但是没有Bitmap.Graphics等很 ...

  9. Error:Program type already present: android.arch.lifecycle.LiveData

    Apparently, this is intended behavior: com.firebaseui:firebase-ui-firestore:3.1.0 depends on android ...

  10. Java NIO ServerSocketChannel

    A Java NIO ServerSocketChannel is a channel that can listen for incoming TCP connections, just like ...