Oracle的启动与停止(三个启动阶段和四种停库模式)

                                  Oracle的启动与停止(三个启动阶段和四种停库模式)

大家都知道Oracle数据库支持各种平台,比较常用的平台是windows8和Linux的centos,redhat平台以及mac平台等等各类平台都支持,因为平台的不同,那么,Oracle的运行方式也有着很大的差异,本文着重就windows平台和Linux的centos,redhat平台说明一下Oracle的启动和停止阶段Oracle所做的一些工作的细节。

windows的Oracle启动和停止

windows平台下的Oracle相对Linux来说是比较简单的,因为在安装的时候已经将Oracle数据库做成了几个服务,其中比较重要的服务是Oracle的监听服务和Oracle的实例启停服务。

启动Oracle数据库:先启动实例,上图我的实例是 OracleServerTEST这个服务,然后启动监听 TNSListener 这个服务。关闭Oracle数据库:先关闭监听服务,然后关闭实例服务。

Linux的Oracle启动和停止 :

Linux下的Oracle启动一般分为三个阶段,nomount,mount,open。在这三个阶段能做的事是不同的,因此如果数据库有问题需要调试查找,有可能需要启动数据库到不同的阶段,以迅速定位到问题产生的地方。

第一阶段,这一阶段是启动Oracle数据库实例的第一步,所做的工作是标明实例状态,分配内存,以支持后续读取配置文件,Oracle的控制文件这些后续步骤,并写审计文件和警报日志(下面表示启动实例的第一阶段,并查询实例状态),在此阶段,我们可以修改参数,查看内存和后台进程信息,或者创建新的数据库,或者重建控制文件

在这种状态下,可以查询后台进程和实例信息。如:

select * from v$bgporcess;

select * from v$instance;

v$parameter、v$sga、v$process、v$session、v$instance等等

SQL> startup nomount
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size		    2213896 bytes
Variable Size		  973080568 bytes
Database Buffers	  671088640 bytes
Redo Buffers		    7135232 bytes
SQL> select status from v$instance;

STATUS
------------
STARTED
[root@centos55 dbs]# ps -ef | grep oracle
oracle   21881     1  0 21:34 ?        00:00:00 /home/oracle/app/oracle/product/11.2.0/dbhome_1//bin/tnslsnr LISTENER -inherit
root     24768  2066  0 22:20 pts/0    00:00:00 su - oracle
oracle   24769 24768  0 22:20 pts/0    00:00:00 -bash
oracle   25987     1  0 22:35 ?        00:00:00 ora_pmon_orcl
oracle   25989     1  0 22:35 ?        00:00:00 ora_vktm_orcl
oracle   25993     1  0 22:35 ?        00:00:00 ora_gen0_orcl
oracle   25995     1  0 22:35 ?        00:00:00 ora_diag_orcl
oracle   25997     1  0 22:35 ?        00:00:00 ora_dbrm_orcl
oracle   25999     1  0 22:35 ?        00:00:00 ora_psp0_orcl
oracle   26001     1  0 22:35 ?        00:00:00 ora_dia0_orcl
oracle   26003     1  0 22:35 ?        00:00:00 ora_mman_orcl
oracle   26005     1  0 22:35 ?        00:00:00 ora_dbw0_orcl
oracle   26007     1  0 22:35 ?        00:00:00 ora_lgwr_orcl
oracle   26009     1  0 22:35 ?        00:00:00 ora_ckpt_orcl

第二阶段,进入这一阶段,我们可以 备份,还原,恢复数据库,移动数据库文件,打开或者关闭数据库闪回功能,打开或者关闭归档模式 ,删除数据库,这一阶段所做工作为 加载控制文件到内存

在此状态下:可以执行的命令有:

select * from v$tablespace;命名空间

select * from v$datafile;数据文件

select * from v$database;数据库信息

v$controlfile、v$database、v$datafile、v$logfile

SQL> alter database mount;

Database altered.

SQL> show parameter name

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert		     string
db_name 			     string	 orcl
db_unique_name			     string	 orcl
global_names			     boolean	 FALSE
instance_name			     string	 orcl
lock_name_space 		     string
log_file_name_convert		     string
service_names			     string	 orcl
SQL> select status from v$instance;

STATUS
------------
MOUNTED

第三阶段,在mount的基础上根据控制文件的记录打开所有的数据文件和重做日志。可以进行权限范围内的所有操作。

SQL> alter database open;

Database altered.

SQL> select status from v$instance;

STATUS
------------
OPEN

打开数据库还有一种是只读模式,也就是数据库只能查询不可更改,第三阶段的一种变化。物理备份库只能以这种方式打开,主库可以任意方式打开。

SQL> alter database open read only;

Database altered.

SQL> select status from v$instance;

STATUS
------------
OPEN

 三个阶段是依次启动,不可跳过任何一个阶段。 startup normal 等于 startup  ,是三个阶段全部一次完成。下面是关闭数据库后 starup一次到位,三个阶段全部完成。可以看到关闭数据库就是三个阶段的反向操作。

SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size		    2213896 bytes
Variable Size		  973080568 bytes
Database Buffers	  671088640 bytes
Redo Buffers		    7135232 bytes
Database mounted.
Database opened.



Oracle数据库的四个停库模式(四个都是在sqlplus这个工具下运行的命令):

1,shutdown normal 等于 shutdown:

不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。

2,shutdown transactional,这个模式也叫做事物停库模式:

不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。

3,shutdown immediate,最常用的停库方式。:

不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。

4,shutdown abort ,等同于主机拔电源操作,会产生脏库,这个操作一般是不使用的,除非特别紧急的情况。:

不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时自动进行实例恢复。

shutdown force =shutdown abort +startup #关闭后在启动进入的阶段

shutdown force  nomount=shutdown abort +startup nomount#关闭后在启动进入的阶段

shutdown force  mount =shutdown abort +startup mount#关闭后在启动进入的阶段

总结

所有命令都是在 sqlplus下执行。

启动数据库: 三个阶段命令 依次为: startup nomount  ,alter database mount; alter database open; 以及一个只读打开方式   alter database open read only;

正常的启动方式为 startup  等同于startup normal ,三个阶段一次完成。

关闭数据库:最为常用的关闭命令为,shutdown immediate,其次为shutdown 也就是等同于 shutdown normal,再次为shutdown transactional, 极度不推荐使用 shutdown abort,该命令为危险命令,很有可能数据库损害。特别紧急情况下可尝试使用,包括三个  shutdown force。

 

猜你喜欢

转载自blog.csdn.net/alwaysbefine/article/details/112445639