Oracle 数据库的启动过程详解

简介: 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.


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


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
7月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
581 93
|
6月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
330 0
|
9月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
7月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
462 8
|
9月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
417 11
|
9月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
9月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
251 0
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
1268 2
|
存储 缓存 Oracle
Oracle数据库可扩展性和性能
【7月更文挑战第6天】
515 7

热门文章

最新文章

推荐镜像

更多