Oracle 数据库启动过程的三阶段、停库四种模式详解

 更新时间:2022年11月21日 11:49:50   作者:梦想家DBA  
这篇文章主要介绍了Oracle 数据库启动三阶段、停库四种模式,停库模式主要有正常停库、事务级停库、立即停库和强制停库,本文给大家介绍的非常详细需要的朋友可以参考下

数据库的启动过程(3个台阶)

1.nomount

shutdown --> nomount

startup nomount

select status from v$instance;
SQL> 
SQL> conn / as sysdba
Connected to an idle instance.
SQL> 
SQL> startup nomount
ORACLE instance started.
 
Total System Global Area  629145392 bytes
Fixed Size                  9137968 bytes
Variable Size             197132288 bytes
Database Buffers          415236096 bytes
Redo Buffers                7639040 bytes
SQL> 
SQL> 
SQL> 
SQL> 
SQL> select status from v$instance;
 
STATUS
------------
STARTED
 
SQL> 

数据库启动到nomount做了什么?

  • 分配实例(ipcs -sm, ps -ef | grep ora_)
  • 写审计文件和警报日志

数据库启动到nomount需要什么?

  • 参数文件
  • 需要审计目录和诊断目录

nomount状态可以做什么?

  • 可以修改参数
  • 可以查看内存和后台进程的信息
  • 可以创建数据库
  • 可以重建控制文件
SQL> 
SQL> select * from v$sgainfo;
 
NAME                                  BYTES RES     CON_ID
-------------------------------- ---------- --- ----------
Fixed SGA Size                      9137968 No           0
Redo Buffers                        7639040 No           0
Buffer Cache Size                 411041792 Yes          0
In-Memory Area Size                       0 No           0
Shared Pool Size                  197132288 Yes          0
Large Pool Size                     4194304 Yes          0
Java Pool Size                            0 Yes          0
Streams Pool Size                         0 Yes          0
Shared IO Pool Size                       0 Yes          0
Data Transfer Cache Size                  0 Yes          0
Granule Size                        4194304 No           0
 
NAME                                  BYTES RES     CON_ID
-------------------------------- ---------- --- ----------
Maximum SGA Size                  629145392 No           0
Startup overhead in Shared Pool   193465328 No           0
Free SGA Memory Available                 0              0
 
14 rows selected.
 
SQL> select name from v$bgprocess where paddr<>'00';
 
NAME
-----
PMON
CLMN
PSP0
VKTM
GEN0
MMAN
M000
GEN1
SCMN
DIAG
OFSD
 
NAME
-----
SCMN
DBRM
VKRM
SVCB
PMAN
DIA0
DBW0
LGWR
CKPT
LG00
SMON
 
NAME
-----
LG01
SMCO
RECO
W000
LREG
W001
PXMN
FENC
D000
MMON
MMNL
 
NAME
-----
S000
TMON
 
35 rows selected.
 
SQL> 

2.mount

shutdown --> mount

  • startup mount

nomount --> mount

  • alter database mount;
SQL> 
SQL> select status from v$instance;
 
STATUS
------------
STARTED
 
SQL> alter database mount;
 
Database altered.
 
SQL> select status from v$instance;
 
STATUS
------------
MOUNTED
 
SQL> 

数据库启动到mount做了什么?

  • 加载控制文件的信息到内存

数据库启动到mount状态需要做什么?

  • 控制文件

mount状态可以做什么?

  • 可以备份、还原、恢复
  • 可以移动数据库文件
  • 可以进行数据文件的offline
  • 可以打开和关闭归档模式
  • 可以打开和关闭闪回数据库的功能
SQL> 
SQL> select name from v$datafile;
 
NAME
--------------------------------------------------------------------------------
/u02/oradata/CDB1/system01.dbf
/u02/oradata/CDB1/sysaux01.dbf
/u02/oradata/CDB1/undotbs01.dbf
/u02/oradata/CDB1/pdbseed/system01.dbf
/u02/oradata/CDB1/pdbseed/sysaux01.dbf
/u02/oradata/CDB1/users01.dbf
/u02/oradata/CDB1/pdbseed/undotbs01.dbf
/u02/oradata/CDB1/pdb1/system01.dbf
/u02/oradata/CDB1/pdb1/sysaux01.dbf
/u02/oradata/CDB1/pdb1/undotbs01.dbf
/u02/oradata/CDB1/pdb1/users01.dbf
 
11 rows selected.
 
SQL> select name from v$tempfile;
 
NAME
--------------------------------------------------------------------------------
/u02/oradata/CDB1/temp01.dbf
/u02/oradata/CDB1/pdbseed/temp012022-11-02_15-16-24-663-PM.dbf
/u02/oradata/CDB1/pdb1/temp01.dbf
 
SQL> 
SQL> select member from v$logfile;
 
MEMBER
--------------------------------------------------------------------------------
/u02/oradata/CDB1/redo03.log
/u02/oradata/CDB1/redo02.log
/u02/oradata/CDB1/redo01.log
 
SQL>

3.open

shutdown --> open

  • startup

nomount ---->  open

  • alter database mount;
  • alter datbase open;

只读方式去打开数据库

SQL> 
SQL> startup mount
ORACLE instance started.
 
Total System Global Area  629145392 bytes
Fixed Size                  9137968 bytes
Variable Size             197132288 bytes
Database Buffers          415236096 bytes
Redo Buffers                7639040 bytes
Database mounted.
SQL> 
SQL> 
SQL> select status from v$instance;
 
STATUS
------------
MOUNTED
 
SQL> 
SQL> alter database open read only;
 
Database altered.
 
SQL> 
SQL> select status from v$instance;
 
STATUS
------------
OPEN
 
SQL> 
SQL> 
SQL> 
SQL> select open_mode from v$database;
 
OPEN_MODE
--------------------
READ ONLY
 
SQL> 
SQL> 
SQL> startup
ORACLE instance started.
 
Total System Global Area  629145392 bytes
Fixed Size                  9137968 bytes
Variable Size             197132288 bytes
Database Buffers          415236096 bytes
Redo Buffers                7639040 bytes
Database mounted.
Database opened.
SQL>

数据库启动到open做了什么?

  • 加载联机日志和数据文件

数据库启动到open需要什么?

  • 联机日志和数据文件

open状态可以做什么?

数据库的停止(四种模式)

1.正常停库: shutdown normal = shutdown

  • 普通用户的连接不允许建立
  • 等待查询结束
  • 等待事务结束
  • 产生检查点(数据同步)
  • 关闭联机日志和数据文件
  • 关闭控制文件
  • 关闭实例

2.事务级停库: shutdown transactional

  • 普通用户的连接不允许建立
  • 查询被终止
  • 等待事务结束
  • 产生检查点(数据同步)
  • 关闭联机日志和数据文件
  • 关闭控制文件
  • 关闭实例

3.立即停库 : shutdown immediate (生产库最常用的停库方式)

  • 普通用户的连接不允许建立
  • 查询被终止
  • 事务被回退
  • 产生检查点(数据同步)
  • 关闭联机日志和数据文件
  • 关闭控制文件
  • 关闭实例

4.强制停库 : shutdown abort

相当于拔电源

(停止之后的数据库是脏库)
注意:这些命令需要慎用

startup force = shutdown abort + startup
startup force nomount = shutdown abort + startup nomount
startup force mount = shutdown abort + startup mount

到此这篇关于Oracle 数据库启动三阶段、停库四种模式的文章就介绍到这了,更多相关Oracle 数据库启动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用JDBC4.0操作Oracle中BLOB类型的数据方法

    使用JDBC4.0操作Oracle中BLOB类型的数据方法

    这篇文章主要介绍了使用JDBC4.0操作Oracle中BLOB类型数据的方法,我们需要使用ojdbc6.jar包,本文介绍的非常详细,需要的朋友可以参考下
    2016-08-08
  • Oracle基础:通过sqlplus执行sql语句后的结果进行判断

    Oracle基础:通过sqlplus执行sql语句后的结果进行判断

    今天小编就为大家分享一篇关于Oracle基础:通过sqlplus执行sql语句后的结果进行判断,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 处理Oracle 监听文件listener.log问题

    处理Oracle 监听文件listener.log问题

    这篇文章主要介绍了处理Oracle 监听文件listener.log问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • oracle中文乱码的解决方法

    oracle中文乱码的解决方法

    这篇文章主要介绍了oracle中文乱码的解决方法,服务器系统是linux,支持中文显示,数据库字符集是zhs16gbk,往数据库里建表,插入中文数据,sqlplus 连接到数据库,中文显示乱码,需要的朋友可以参考下
    2014-03-03
  • Oracle 创建主键自增表示例代码

    Oracle 创建主键自增表示例代码

    我们经常在设计数据库的时候用一个系统自动分配的ID来作为我们的主键,但是在Oracle没有自增主键的设置,我们可以通过这篇文章介绍的方法实现,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-10-10
  • Oracle统计信息的导出导入测试示例详解

    Oracle统计信息的导出导入测试示例详解

    这篇文章主要给大家介绍了关于Oracle统计信息的导出导入测试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • Oracle中的触发器trigger

    Oracle中的触发器trigger

    这篇文章介绍了Oracle中的触发器trigger,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Oracle中基于hint的3种执行计划控制方法详细介绍

    Oracle中基于hint的3种执行计划控制方法详细介绍

    这篇文章主要介绍了Oracle中基于hint的3种执行计划控制方法详细介绍,它们分别是OUTLINE(大纲)、SQL PROFILE(概要文件)、SQL BASELINE(基线),文中包含大量实例,需要的朋友可以参考下
    2014-07-07
  • Oracle数据库中SQL语句的优化技巧

    Oracle数据库中SQL语句的优化技巧

    这篇文章主要介绍了Oracle数据库中SQL语句的优化技巧的相关资料,需要的朋友可以参考下
    2016-07-07
  • Oracle range时间范围自动分区的创建方式

    Oracle range时间范围自动分区的创建方式

    这篇文章主要介绍了Oracle  range时间范围自动分区的创建方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论