Oracle的启动与关闭

启动数据库的前提条件:

  • 环境变量定义好($ORACLE_HOME,$ORACLE_SID,$PATH
  • 能密码文件认证或OS认证(确保能登入sys)
  • 有正确的参数文件(启动数据库需要查找参数文件,默认找spfile实例名.ora,如果没有再找spfile.ora,如果没有再找initSID.ora
  • 有足够内存
  • 参数文件中路径要存在,且有操作权限
  • 产品安装正确

 

告警日志的存储位置由background_dump_dest这个参数决定.

SQL> show parameter back             

NAME                                 TYPE        VALUE

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

background_core_dump                 string      partial

background_dump_dest                 string      /u01/app/oracle/diag/rdbms/gaga01/gaga01/trace

 

数据库启动或关闭的时间

所有非缺省初始化参数的列表

后台进程的启动

例程使用的线程

正在向其中写入信息的日志序列号LGWR

有关日志切换的信息

表空间的创建和回滚段的创建

已发出的警报声明

有关ORA-600等错误消息和区错误的信息

 

Oracle 启动关闭命令(启动与关闭数据库通用方式:sqlplus命令或dbstart/dbshut

一、使用sqlplus指令

启动

关闭

Startup

Shutdow

Startup nomount

Shutsown transactional

Alter database mount

Shutdown immediate

Alter database open

Shutdown abort

二:dbstar/dbshut

[oracle@WHOST Desktop]$ which dbstart

/u01/app/oracle/product/11.2.4/dbhome_1/bin/dbstart

[oracle@WHOST Desktop]$ which dbshut

/u01/app/oracle/product/11.2.4/dbhome_1/bin/dbshut

需要配置/etc/oratab文件,Y为能被启动,N为不能被启动

[oracle@WHOST Desktop]$ vi /etc/oratab

gaga01:/u01/oracle/11g:Y

ORACLE启动时是否要把监听自动启动?

需要修改ORACLE_HOME_LISTENER=$ORACLE_HOME$1修改为$ORACLE_HOME

[oracle@WHOST Desktop]$ vi /u01/app/oracle/product/11.2.4/dbhome_1/bin/dbstart

 

 

启动数据库 分三个阶段:

  • 阶段一:启动实例:nomount阶段
  • 阶段二:装载数据库:mount阶段
  • 阶段三:打开数据库:open阶段

启动实例

nomount阶段

 

Startup nomount

 

 

      • 实例启动
      • 读取参数文件并判断定义是否有错误

参数文件查找原则:spfilesid.ora spfile.ora initsif.ora

      • 内存分配:根据参数定义分配相关内存
      • 打开alert文件,跟踪文件并记录信息
      • 启动相关的后台进程

tail -f /u01/oracle/admin/wendy/bdump/alter_wendy.log

 

本阶段用的文件是参数文件,instance启动完毕,处理nomount阶段

 

查看参数文件位置:

Show parameter spfile

Select name,value from v$parameter where name='spfile';

 

启动数据库与参数文件:

Startup nomount

Ho rm /u01/oracle/11g/dbs/spfilewendy.ora

Startup pfile='/u01/oracle/initwendy.ora' nomount

Create spfile from pfile='/u01/oracle/initwendy.ora';

 

此时,不可对数据做操作,可以

修改参数create pfile/spfile,

alter system set

alter session

装载数据库

mount阶段

 

Alter database mount

使数据库与以前启动的实例关联

定位并打开参数文件中执行的控制文件

读取控制文件获取数据文件和重做日志文件的名称和状态

读取控制文件,控制文件在参数文件中定义

Show parameter control_file

 

但此时不进行数据文件和联机重做日志文件是否存在的检查

可以对日志文件和数据文件进行删除,创建,但不能对日志文件,数据文件进行打开操作.

不能获取逻辑结构(表,表空间),只能对数据问及那进行添加,删除的物理操作.

 

本阶段用的文件是控制文件,数据库处于mount阶段

在mount阶段,你可以对数据库的物理结构进行操

Alter database指令

  • 命名数据文件
  • 启用和禁用重做日志归档选项
  • 闪回功能打开与关闭
  • 执行完全数据库恢复
  • Create database指令
  • Drop database指令

打开数据库

open阶段

 

Alter database open

打开联机数据文件

打开联机重做日志文件

 

这个阶段会去检查数据文件和重做日志文件是否正常.

首先判断文件是否存在

然后验证所有数据文件和联机重做日志文件是否可以打开,并检查数据库的一致性.

如果需要,系统监视器后台进程SMON启动实例恢复

前滚以恢复尚未记录在数据文件中但已记录在联机重做日志中的数据

打开数据库而不是等待回退全部事务后才使数据库可用

未恢复事务锁定的数据处于open阶段,数据库启动完毕,数据库的逻辑结构与物理结构可以正常工作了.

这个时候不能进行复制备份.因为当前数据文件和日志文件处于活动状态了.

查看数据库当前状态

desc v$database

OPEN_MODE

 

SQL> select OPEN_MODE FROM V$DATABASE;

OPEN_MODE

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

READ WRITE-----OPEN阶段

 

1、如果得到错误ORACLE not available

Oracle没有启动

2、如果得到错误DATABASE not mounted

ORACLE处于nomount阶段

3、如果得到结果是MOUNTED

ORACLE处于mount阶段

4、如果得到结果是READ WRITE

ORACLE处于OPEN阶段

 

ORACLE启动的指令

 

Startup[FORCE][RESTRICT][PFILE=finename][OPEN][RECOVER][database][MOUNT][NOMOUNT]

 

OPEN:

使用户得以访问数据库

MOUNT

为某些DBA活动装载数据库但不允许用户访问数据库

NOMOUNT

创建SGA并启动后台进程但不允许访问数据库

PFILE=parfile

允许使用非缺省参数文件配置实例

FORCE

在执行正常启动之前终止运行的实例

这个指令是强制将数据库关闭后再启动.最好不好使用.

RESTRICT

只允许具有RESTRICTED SESSION权限的用户访问数据库

修改字符集时可以使用这方式启动.

RECOVER

在启动数据库时开始介质恢复

 

几种启动方式:

启动方式

 

 

1、startup nomount

非安装启动

重建控制文件、重建数据库

启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件

2、startup mount dbname

安装启动

数据库日志归档、数据库恢复、重新命名一些数据库文件

如:系统表空间或日志文件

执行“nomount”,然后打开控制文件

3、startup open dbname

 

先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,

这种方式下可访问数据库中的数据。

4、startup

 

等于以下三个命令

startup nomount

alter database mount

alter database open

5、startup restrict

约束方式启动

这种方式能够启动数据库,但只允许具有一定特权的用户访问

非特权用户访问时,会出现以下提示:

ERROR:

ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用

6、startup force

强制启动方式

强制启动方式

当不能关闭数据库时,可以用startup force来完成数据库的关闭

先关闭数据库,再执行正常启动数据库命令

7、startup pfile=参数文件名

带初始化参数文件的启动方式

先读取参数文件,再按参数文件中的设置启动数据库

例:startup pfile=E:/Oracle/admin/oradb/pfile/init.ora

8、startup EXCLUSIVE

 

 

Alter database mount

 

nomount启动到mount

Alter database open

 

由mount启动到open

 

Oracle 启动过程


 

 

关闭数据库

将缓冲区高速缓存中的更改及重做日志缓冲区高速缓存中的条目写入数据文件和联机重做日志文件

关闭所有联机数据文件和联机重做日志文件

卸装数据库

关闭其控制文件

关闭实例

ALTER文件和跟踪文件将关闭

SGA被回收并且后台进程被终止

 

SHUTDOWN[NORMAL][TRANSACTIONAL][IMMEDIATE][ABORT]

 

关闭模式:

A=ABORT

I=IMMEDIATE

T=TRANSACTIONAL

N=NORMAL0

关闭模式

A

I

T

N

允许建立新连接

等待到当前会话结束

等待到当前事务处理结束

强制执行检查点操作并关闭文件

 

I T N这三种模式关闭数据库,在数据库关闭前,都会将buffer cache中的脏数据刷新到磁盘文件,这个操作被成为完全检查.因为所有的脏数据都被写进磁盘,因此不会丢失用户所做的修改.下次启动时也不需要利用日志进行恢复.我们称这种方式关闭的数据库是一致的数据库,也叫干净的数据库.

 

A这种模式关闭数据库,ORACLE会立即退出,并不刷新脏数据的磁盘.

 

sql>shutdown 其参数 :shutdown有四个参数,四个参数的含义如下:

Normal 需要等待所有的用户断开连接

normal需要在所有连接用户断开后才执行关闭数据库任务,所以有的时候看起来好象命令没有运行一样!在执行这个命令后不允许新的连接

正常关闭数据库,normal关闭数据库时,除了不允许建立新连接外,允许当前正在进行的会话继续进行,当前正在进行的事务,也可以正常运行知道终止.

Immediate 等待用户完成当前的语句

immediate在用户执行完正在执行的语句后就断开用户连接,并不允许新用户连接。

oracle会自动回退没有提交的事务,断开所有连接,关闭所有没有结束的会话,立即关闭数据库

Transactional 等待用户完成当前的事务

transactional 在拥护执行完当前事物后断开连接,并不允许新的用户连接数据库。

会等待所有事务结束后,就关闭数据库,无论会话是否退出.

在transactional完成关闭操作期间,不允许有的事务,更不允许连接,但可以使用select查询

Abort 不做任何等待,直接关闭数据库

abort 执行强行断开连接并直接关闭数据库。

 

Oracle 关闭过程

 


 

几种关闭方式:

关闭方式

 

 

1、shutdown normal

正常方式关闭数据库

 

2、shutdown immediate

立即方式关闭数据库

在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,

而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),

当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。

 

3、shutdown abort

直接关闭数据库,正在访问数据库的会话会被突然终止

如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间

原文地址:https://www.cnblogs.com/thescentedpath/p/startupadndshutdown.html