oracle数据库的启动与关闭(启动和关闭不同操作介绍)

数据库启动过程

数据库的启动过程涉及三个状态,这三个状态同时涉及三个文件,每个状态数据库做不同的事情,同时这三个不同的状态适合于不同的数据库维护过程。

  • NOMOUNT 该状态只打开了数据库实例,此时读取参数文件

  • MOUNT 该状态oracle根据参数文件中的控制文件找到并打开控制文件,读取控制文件中的各种参数信息,如数据文件和日志文件的位置等,但是此时并不打开数据文件。

  • OPEN 该状态数据库将打开数据文件并进行一系列的检查工作,这些检查工作用于数据恢复

查看数据库启动状态

select status from v$instance;

数据库启动到NOMOUNT状态

startup nomount

启动数据库到NOMOUNT状态,首先会搜寻参数文件,读者只需要指导参数文件中存放的一些参数信息,例如数据库缓冲区大小重做日志缓冲区大小等。

根据这些参数分配内存即SGA(系统全局区),然后启动必须的后台进程,有五个后台进程时必须启动的,他们是:DBWR(数据库写进进程)、LGWR(日志写进进程)、SMON(系统监控进程)、PMON(进程监控进程)、CKPT(检验点进程)。

改过程不涉及到控制文件和数据文件,只需要一个参数文件就可以启动到NOMOUNT状态。启动到NOMOUNT状态的指令为:

startup nomount;

查看存储告警追踪文件的参数值:

上述例子中可以看到,因为因为笔者的SID为tiqs,所以警告名称为alert_tiqs.log

由于NOMOUNT状态不打开控制文件,所以可以做以下测试:

测试启动到NOMOUNT状态的时候控制文件是否打开

需要在数据库关闭的情况下进行

sqlplus / as sysdba
SQL> select * from v$controlfile;

未选定行

上述例子说明数据库并未打开控制文件,在nomount状态下我们可以通过v$parameter动态获取控制文件位置

SQL> show parameter control_files;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files                        string
/u01/app/oracle/oradata/tiqs/c
ontrol01.ctl, /u01/app/oracle/
fast_recovery_area/tiqs/contro
l02.ctl

上述例子输出说明了当前数据库的控制文件位置

数据库启动到MOUNT状态

startup mount

数据库启动到MOUNT状态有两种方法,1:直接启动数据库到MOUNT状态,2:把数据库启动到NOMOUNT状态然后切换到MOUNT状态如:

SQL> alter database mount;

数据库已更改。

此时数据库处于MOUNT状态,此时控制文件已加载,我们可以通过动态视图v$controlfile获得控制文件的存储目录

SQL> select * from v$controlfile;

STATUS
--------------
NAME
--------------------------------------------------------------------------------
IS_REC BLOCK_SIZE FILE_SIZE_BLKS
------ ---------- --------------

/u01/app/oracle/oradata/tiqs/control01.ctl
NO          16384            594


/u01/app/oracle/fast_recovery_area/tiqs/control02.ctl
NO          16384            594

STATUS
--------------
NAME
--------------------------------------------------------------------------------
IS_REC BLOCK_SIZE FILE_SIZE_BLKS
------ ---------- --------------

数据库启动到OPEN状态

startup
startup open

启动数据库到OPEN状态,oracle需要校验数据文件的头信息,进行点计数器检查和SCN检查来完成实例恢复。

数据库启动到OPEN状态有三种方式,1:startup,2:startup open,3:alter database open;

SQL> alter database open;

数据库已更改。

数据库关闭

数据库关闭的过程顺序与启动的顺序正好相反。基本思路是首先关闭各种数据文件,关闭打开的控制文件,然后关闭实例,与开启相对应,数据库关闭经历了CLOSE,DISMOUNT,SHUTDOWN三个阶段。

关闭数据库CLOSE

SQL> alter database close;

数据库已更改。

DISMOUNT数据库

SQL> alter database dismount;

数据库已更改。

SHUTDOWN数据库

SQL> shutdown;
ORA-01507: ??????


ORACLE 例程已经关闭

最后这个关闭的行为实际上就是关闭数据库实例的过程,应为前两步关闭步骤中已经停止了对数据文件的操作并关闭了控制文件。

数据库关闭的几个参数及其含义

在关闭数据库时候,最经常用到的是SHUTDOWN指令,选择不同的参数,满足不同的关闭数据库的要求。

  • SHUTDOWN NORMAL

这种方式是SHUTDOWN数据库的默认方式,如果用户输入SHUTDOWN则默认采用SHUTDOWN NOMAL参数。

这种方式关闭数据库时,不允许新的数据库连接,只有当所有的连接都退出时才会关闭数据库,这种是一种安全关闭数据库的方式,但是如果有大量的用户连接,则需要较长的时间关闭。

  • SHUTDOWN IMMEDIATE

这种方式也可以较快且安全地关闭数据库,是DBA常用的一种关闭数据库的方式,此时oracle会执行一些操作,终端当前事务,回滚未提交的事务,强制断开所有用户连接,执行检查将脏数据写到数据文件中。

  • SHUTDOWN TRANSACTIONAL

使用该参数关闭数据库时,数据库当前的连接继续执行,但是不允许新的连接,一旦当所有事务执行完毕时,关闭数据库。这种方式不会快速关闭数据库,如果事务一直执行则需要很多天才能关闭。

  • SHUTDOWN ABORT

这是一种很不安全的关闭数据库方式,最好不要用该参数关闭数据库。这种方式关闭数据库时,oracle会断开所有用户连接,并拒绝新的连接,断开当前执行的所有事务,立即关闭数据库。这种方式关闭数据库时,数据库重启时需要进行数据库恢复,因为它不会对未完成的事务进行回滚,也不会执行检查点操作。

发布了9 篇原创文章 · 获赞 0 · 访问量 2314

猜你喜欢

转载自blog.csdn.net/qq_38170766/article/details/105365148
今日推荐