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
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指令如
|
打开数据库 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后,重新启动数据库需要很长时间 |