oracle从入门到精通--启动与关闭数据库实例

启动数据库实例

Oracle实例的启动过程分为三个步骤,分别是启动实例、加载数据库和打开数据库。用户可以根据实际情况的需要,以不同模式启动数据库。

)

用户首先要以sysdba的身份登录才具有启动和关闭数据库实例的权限。

启动数据库需要使用STARTUP命令,语法格式如下:

sql 复制代码
STARTUP [NOMOUNT | MOUNT | OPEN | FORCE | RESTRICT] [PFILE=filename]
  • NOMOUNT:表示启动实例但不加载数据库。
  • MOUNT:表示启动实例,加载数据库,并保持数据库的关闭状态。
  • OPEN:表示启动实例,加载并打开数据库,这个是默认选项。
  • FORCE:表示终止实例并重新启动数据库。
  • RESTRICT:用于指定以受限制的会话方式启动数据库。
  • PFILE:用于指定启动实例时所用的文本参数文件·,filename就是文件名。
    Oracle数据库实例在启动时必须读取一个初始化参数文件,以便从中获得有关实例启动的参数配置信息。若在START语句中没有指定PFILE参数,则Oracle首先读取默认位置的服务器初始化参数文件spfile,若没有找到默认的服务器初始化参数文件,则将读取默认位置的文本初始化参数文件。
    以下为STARTUP语法中的几种启动模式:

NOMOUNT模式

命令:

sql 复制代码
startup nomount

NOMOUNT启动模式只会创建实例(即创建Oracle实例所需要的各种内存结构和服务进程),并不加载数据库,也不会打开任何数据文件。

  • 通常在创建新数据或者重建控制文件时,使用NUMOUNT模式启动数据库实例。

MOUNT模式

命令:

sql 复制代码
startup mount

MOUNT 模式将启动实例,加载数据库并保持数据库的关闭状态。

MOUNT模式通常在尽显数据库维护时使用,如执行数据库完全恢复操作、更改数据库的归档模式等。

OPEN模式

OPEN 模式将启动实例,加载并打开数据库。这是常规的启动方式,用户要对数据库进行多种操作,就必须使用OPEN模式启动数据库实例。

FORCE模式

FORCE 模式将终止实例并重新启动数据库,这种启动模式有一定的强制性。例如在其他启动方式失效时,可以尝试使用这种启动模式。

关闭数据库实例

与启动数据库相同,关闭数据库也氛围三个步骤,分别是关闭数据库、卸载数据库和关闭数据库实例。在SQL*Plus中,可以使用SHUTDOWN语句关闭数据库,具体语法如下:

sql 复制代码
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABOAT]
  • NORMAL:表示以正常方式关闭数据库。
  • TRANSACTIONAL:表示在当前所有的活动事务被提交完毕之后关闭数据库。
  • IMMEDIATE:表示在尽可能短的时间内关闭数据库。
  • ABORT:表示以终止方式来关闭数据库。
    以下为关闭数据库实例方式:

NORMAL方式

NORMAL方式称作正常关闭方式,如果对关闭数据的时间没有限制,通常会使用这种方式来关闭数据库。

当以正常方式关闭数据库时,Oracle将执行下面操作:

  • 阻止任何用户建立新的连接。
  • 等待当前所有正在连接的用户主动断开连接。
  • 当所有的用户都断开连接后,将立即关闭互数据库。

TRANSACTIONAL方式

transactional方式称作事务关闭方式,它的首要任务是能够保证当前的所有活动事务都可以被提交,并在尽可能短的时间内关闭数据库。

当以事务方式关闭数据库时,Oracle将执行如下操作。

  • 阻止用户建立新连接和开始新事务。
  • 等待所有活动事务提交后,再断开用户连接。
  • 当所有的活动事务提交完毕、所有的用户都断开连接后,将关闭数据库。

IMMEDIATE方式

与IMMEDIATE单词的含义一样,IMMMEDIATE方式称作立即关闭方式,这种方式将在尽可能短的时间内关闭数据库。

在这种方式下,Oracle不但会立即中断当前用户的连接,而且会强行终止用户的当前活动事务,将未完成的事务回退。以立即关闭的方式关闭互数据库时,Oracle将执行如下操作。

  • 阻止用户建立新连接和开始新事务。
  • 将未提交的活动事务回退。
  • 关闭数据库。

ABORT方式

ABORT方式称作终止关闭方式,具有一定的强制性和破坏性。使用这种方式会强制中断数据库的操作,这样可能会丢失一部分数据信息,影响数据库的完整性。除了由于使用其他三种方式无法关闭数据库而使用它之外,应该尽量避免使用这种方式。

以这种方式关闭数据库时,Oracle将执行如下操作,

  • 阻止用户建立新连接和开启新事务。
  • 取消未提交的活动事务,而不是回退。
  • 立即终止正在执行的任何SQL语句。
  • 立即关闭数据库。0.
相关推荐
2603_965148119 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
ltl9 小时前
RocksDB 经典故障排查:L0、compaction 与 write stall
数据库
xfhuangfu10 小时前
Oracle中建立到CDB和PDB的连接
数据库·oracle·rpc
小小龙学IT10 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
NineData10 小时前
DTCC 2026 预告|NineData CEO& 创始人叶正盛:面向 AI Agent 的数据库 DevOps 与数据复制实践
数据库·人工智能·数据库开发·devops·ninedata·数据库技术·dtcc
J_bean11 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
J_bean11 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
浪子明X12 小时前
从 MongoDB 文档到关系模型:构建可重跑、可对账的数据迁移流水线
数据库·mongodb·oracle
杜子不疼.12 小时前
国产数据库撑起固井软件自主化:金仓 × 中海油服「海恒 Cemsol」落地解析
数据库
隔窗听雨眠12 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle