Oracle 数据库的启动过程详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Oracle 数据库的启动过程详解

1、Oracle 数据库的启动分为三个阶段

shutdown —> nomount —> mount —> open


2、启动数据库到 nomount 阶段

数据库启动到 nomount 阶段时,将启动数据库实例, 读取参数文件,写审计文件和警报日志,不加载数据库。因此,数据库启动到 nomount 阶段需要有正确的参数文件,需要正确的审计目录(由参数 audit_file_dest 指定)和跟踪文件目录(由 BACKGROUND_DUMP_DEST 参数指定)。


2.1 数据库从关闭状态启动到 nomount 状态会执行如下操作:

(1)按如下顺序读取初始化参数文件:spfile.ora —> spfile.ora —> init.ora


(2)分配SGA、启动后台进程;


(3)启动警报日志文件(alert_.log)和跟踪文件。


2.2 在 nomount 阶段可以进行如下操作

(1)可以修改参数;


(2)可以查看内存和后台进程的信息;


(3)可以创建数据库;


(4)可以重建控制文件。


2.3 启动数据库到 nomount 阶段的方法如下

shutdown --> nomount

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup nomount

ORACLE instance started.

Total System Global Area 9395237080 bytes

Fixed Size   12685528 bytes

Variable Size 1543503872 bytes

Database Buffers 7818182656 bytes

Redo Buffers   20865024 bytes

SQL> select status from v$instance;

STATUS

------------------------------------

STARTED


2.4 查看警告日志关于 startup nomount 的信息

SQL> SELECT * FROM v$diag_info a WHERE a.name = 'Diag Trace';

  INST_ID NAME                                                             VALUE                                                                                CON_ID

---------- ---------------------------------------------------------------- -------------------------------------------------------------------------------- ----------

        1 Diag Trace                                                       /app/oracle/diag/rdbms/orcl/orcl/trace                                                    0

[oracle@node1 ~]$ cd /app/oracle/diag/rdbms/orcl/orcl/trace

[oracle@node1 trace]$ cat alert_orcl.log

由于 nomount 状态下数据库没有加载,因此无法访问数据字典。nomount 状态下参数文件已经加载,可以查看参数。


SQL> select name from v$datafile;

select name from v$datafile

*

ERROR at line 1:

ORA-01507: database not mounted

数据库参数已经加载

SQL> show parameter open_cursor

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

open_cursors                         integer     300


3、启动数据库到 mount 阶段

数据库启动到 mount 阶段时,将启动数据库实例,加载控制文件的信息到内存,加载数据库并保持数据库关闭状态。数据库启动到 mount4 阶段需要有正确的控制文件。


3.1 数据库从nomount状态启动到mount状态会执行如下操作:

(1)将先前启动的实例与数据库相关联;


(2)根据参数文件中保存的控制文件的位置找到控制文件并打开;


(3)从控制文件中读取数据文件及联机日志文件的位置与名称。(此时并不检查数据文件与联机日志文件是否存在)。


3.2 数据库启动到mount状态,数据库可以进行如下操作:

(1)可以备份、还原、恢复;


(2)可以查看所有的动态视图;


(3)可以移动数据库文件;


(4)可以进行数据库文件的offline;


(5)可以打开和关闭归档模式;


(6)可以打开和关闭闪回数据库的功能。


3.3 启动数据库到mount阶段的方法如下

3.3.1 数据库处于关闭状态(shutdown --> mount)

startup mount;

SQL> shutdown

ORA-01507: database not mounted

ORACLE instance shut down.

SQL> sas

SP2-0042: unknown command "sas" - rest of line ignored.

SQL> select status from v$instance;

select status from v$instance

*

ERROR at line 1:

ORA-01034: ORACLE not available

Process ID: 0

Session ID: 0 Serial number: 0

SQL> startup mount

ORACLE instance started.

Total System Global Area 8002730448 bytes

Fixed Size    8915408 bytes

Variable Size 1308622848 bytes

Database Buffers 6677331968 bytes

Redo Buffers    7860224 bytes

Database mounted.

SQL> select status from v$instance;

STATUS

------------------------------------

MOUNTED


3.3.2 数据库处于 nomount 状态(nomount --> mount)

alter database mount


SQL> select status from v$instance;

STATUS

------------------------------------

STARTED

SQL> alter database mount;

Database altered.

SQL> select status from v$instance;

STATUS

------------------------------------

MOUNTED


数据库启动到 mount 阶段可以访问所有的动态视图:


SQL> select name from v$datafile;

NAME

/app/oracle/oradata/ORCL/system01.dbf

/app/oracle/oradata/ORCL/test01.DBF

/app/oracle/oradata/ORCL/sysaux01.dbf

/app/oracle/oradata/ORCL/undotbs01.dbf

/app/oracle/oradata/ORCL/wms01.DBF

/app/oracle/oradata/ORCL/users01.dbf

6 rows selected.

4、启动数据库到 open 阶段

数据库启动到 open 阶段时,将启动数据库实例,加载联机日志和数据文件并打开数据库。数据库启动到 open 阶段需要有正确的数据文件和联机日志文件。数据库处于 open 状态时可以对数据库进行所有正常的操作。


4.1 数据库从 mount 状态启动到 open 状态会执行如下操作:

(1)打开数据文件;


(2)打开联机日志文件(打开数据库时如果数据文件或联机日志文件中的任何一个不存在,会出现错误);


(3)Oracle 数据库验证数据文件和联机日志文件是否能够打开,并检验数据库的一致性。如果不一致,SMON 后台进程将启动实例恢复。


4.2 启动数据库到 open 阶段的方法如下:

4.2.1 数据库处于关闭状态(shutdown --> open)

startup

SQL> startup

ORACLE instance started.

Total System Global Area 8002730448 bytes

Fixed Size    8915408 bytes

Variable Size 1308622848 bytes

Database Buffers 6677331968 bytes

Redo Buffers    7860224 bytes

Database mounted.

Database opened.

SQL> select status from v$instance;

STATUS

------------------------------------

OPEN


4.2.2 数据库处于 nomount 状态(nomount --> mount)

alter database mount;

alter database open;

SQL> select status from v$instance;

STATUS

------------------------------------

STARTED

SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

SQL> select status from v$instance;

STATUS

------------------------------------

OPEN

4.2.3 数据库处于 mount 状态(mount --> mount)

alter database open;

SQL> select status from v$instance;

STATUS

------------------------------------

MOUNTED

SQL> alter database open;

Database altered.

SQL> select status from v$instance;

STATUS

------------------------------------

OPEN

5、数据库的停止

5.1停库与启动数据库顺序相反,也分三个步骤:

(1)关闭数据库(关闭数据文件);


(2)卸载数据库(关闭控制文件, DISMOUNT);


(3)关闭 Oracle 实例(SHUTDOWN)。


5.2 关闭的方式有四种

5.2.1 正常停库

数据库正常的关闭方式,以正常停库方式关闭数据库,Oracle 将执行如下操作:


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


(2)等待查询结束;


(3)等待事务结束;


(4)产生检查点(数据同步);


(5)关闭联机日志和数据文件;


(6)关闭控制文件;


(7)关闭数据库实例。


5.2.1.1 正常停库语法

shutdown normal

shutdown


5.2.1.2 正常停库操作

SQL> shutdown

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> shutdown normal

Database closed.

Database dismounted.

ORACLE instance shut down.

5.2.2 事务级停库

以事务级停库方式关闭数据库,Oracle 将执行如下操作:


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


(2)查询直接终止;(正常停库等待查询结束)


(3)等待事务结束;


(4)产生检查点(数据同步);


(5)关闭联机日志和数据文件;


(6)关闭控制文件;


(7)关闭数据库实例。


5.2.2.1 事务级停库的语法如下:

shutdown transactional


5.2.2.2 事务级停库的操作

SQL> shutdown transactional

Database closed.

Database dismounted.

ORACLE instance shut down.

5.2.3 立即停库

以立即停库方式关闭数据库,Oracle 将执行如下操作:


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


(2)查询直接终止;


(3)中断当前事务,回滚未提交事务;


(4)产生检查点(数据同步);


(5)关闭联机日志和数据文件;


(6)关闭控制文件;


(7)关闭数据库实例。


5.2.3.1 立即停库的语法如下:

生产库最常用的停库方式


shutdown immediate


5.2.3.2 立即停库的操作

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

5.2.4 强制停库

当数据库出现故障时,如果以上三种方式都无法正常关闭数据库,则使用强制停库。以这种方法停库,Oracle 将执行如下操作:


(1)强制结束当前正在执行的SQL语句;


(2)任何未递交的事务都不被回退!


以强制停库方式停止数据库之后,数据库可能存在脏数据。重启数据库实例时会自动做实例恢复。


5.2.4.1 立即停库的语法如下(生产库不建议操作)

shutdown abort

startup force = shutdown abort + startup

startup force nomount = shutdown abort + startup nomount

startup force mount = shutdown abort + startup mount

5.2.4.1 立即停库的操作

SQL> startup force nomount

ORACLE instance started.

Total System Global Area 8002730448 bytes

Fixed Size    8915408 bytes

Variable Size 1308622848 bytes

Database Buffers 6677331968 bytes

Redo Buffers    7860224 bytes

SQL> select status from v$instance;

STATUS

------------------------------------

STARTED

SQL> alter database mount;

Database altered.

SQL> alter database open;

Database altered.

SQL> shutdown abort

ORACLE instance shut down.


文章知识点与官方知识档案匹配,可进一步学习相关知识


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
2月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
|
5月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1126 28
|
3月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
|
5月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
159 9
|
6月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
229 10
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
665 1
|
4月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
258 62

推荐镜像

更多