数据库的启动
数据库启动步骤
- 启动ORACLE数据库实例(nomount)
读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA) - 装配数据库(mount)
Oracle系统读取控制文件中关于数据文件和重作日志文件的内容,但并不打开该文件(数据库文件维护时使用) - 打开数据库(open)
数据库使数据文件和重作日志文件在线,通常还会请求一个或者是多个回滚段
启动模式
- 启动没有装载数据库的实例.不允许访问数据库,适用于数据库创建或控制文件的重新创建
- 启动实例并装载数据库.但数据库关闭.适用于某些DBA的动作,不允许对数据库的一般的访问操作
- 启动实例,装载并打开数据库.这种模式可以在不受限制的方式下使用.允许有用户访问,或者在受限制的方式下使用.只允许
数据库管理员访问
数据库的启动命令
- 启动数据库
SQL> startup; - 分过程启动数据库
- 启动实例,但不安装数据库
SQL> startup nomount [pfile='d:\oracle\admin\stock\pfile\init.ora']; - 启动实例并装配数据库信息
SQL> alter database [db_name] mount; - 打开数据库
SQL> alter database [db_name] open; - 以只读方式打开数据库
SQL> alter database [db_name] open read only; - 取消只读状态
SQL> alter database [db_name] open read write;
- 启动实例,但不安装数据库
- 强制重启
SQL> startup force; - 只允许DBA权限连接数据库
SQL> startup restrict;
启动数据库实例的方法
- 使用SQL*PLUS
- 使用Recovery Manager
- 使用Oracle Enterprise Manager(OEM)
启动数据库实例
- Startup
启动实例,装载并打开数据库.允许任何一个有效的用户连接到数据库并执行典型的数据库访问操作 - startup nomount
启动实例不装载数据库,当数据库以这个模式启动时,参数文件被读取;后台进程和内存结构被启动;但它们不被附加或与数据库的磁盘结构进行通信。当实例处于这个状态时,数据库是不可使用的,通常启动到这里可以做create database , create or recreate control file 或者是mount standby database等动作,修改parameter也是可以的。 - Startup mount
启动实例并装载数据库,读取控制文件,允许某些特定的操作,重命名,数据文件,添加,取消或重命名重做日志文件,允许和禁止,重做日志存档选项,执行完整的数据库恢复操作等。 - Startup restrict
在启动过程中限制访问数据库执行数据库的导出和导入操作执行数据库的装载操作(SQL*LOADER)暂时阻止普通用户使用数据在某个移植过程和升级操作过程中 - startup force
强制实例启动 - startup open recover
启动实例,装载数据库并启动完整的介质恢复过程 - 启动远程实例
数据库的关闭
数据库的关闭过程正好与开启过程相反,关闭数据库–>实例卸载数据库—>终止实例
- 关闭数据库
oracle将重做日志高速缓存中的内容写入重做日志文件,并且将数据库高速缓存中被改动过的数据写入数据文件,然后再关闭所有的数据文件和重做日志文件,这时数据库的控制文件仍然处于打开状态,但是由于数据库处于关闭状态,所以用户无法访问数据库。 - 实例卸载数据库
关闭数据库后,例程才能被卸载,控制文件在这个时候被关闭,但例程仍然存在 。 - 终止实例
进程终止,分配给例程的内存sga区被回收。
数据库的关闭命令
- SQL> shutdown nomal;
正常关闭方式时,Oracle执行如下操作:- 阻止任何用户建立新的连接
- 等待当前所有正在连接的用户主动断开连接(此方式下Oracle不会立即断掉当前用户的连接,这些用户仍然操作相关的操作),即等待会话结束,等待事务结束
- 一旦所有的用户都断开连接,则立即关闭、卸载数据库,并终止实例。(所以,一般以正常方式关闭数据库时,应该通知所有在线的用户尽快断开连接)
- 做一个检查点并关闭数据文件
- 启动时不需要恢复实例
- SQL> shutdown transactional;
事务关闭方式介于正常关闭方式跟立即关闭方式之间,响应时间会比较快,处理也将比较得当。执行过程如下:- 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务
- 不等待会话结束
- 等待所有未提交的活动事务提交完毕,然后立即断开用户的连接
- 直接关闭、卸载数据库,并终止实例
- 做一个检查点并关闭数据文件
- 启动时不需要恢复实例
- SQL> shutdown immediate;
立即关闭方式执行过程如下:- 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
- Oracle不等待在线用户主动断开连接,强制终止用户的当前事务,将任何未提交的事务回退。(如果存在太多未提交的事务,此方式将会耗费很长时间终止和回退事务)
- 直接关闭、卸载数据库,并终止实例
- 做一个检查点并关闭数据文件
- 启动时不需要恢复实例
- SQL> shutdown abort;
强制终止关闭方式这是比较粗暴的一种关闭方式,当前面3种方式都无法关闭时,可以尝试使用终止方式来关闭数据库。但是以这种方式关闭数据库将会丢失一部份数据信息,当重新启动实例并打开数据库时,后台进程SMON会执行实例恢复操作。一般情况下,应当尽量避免使用这种方式来关闭数据库。执行过程如下:- 阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。
- 立即终止当前正在执行的SQL语句
- 任何未提交的事务均不回滚
- 直接断开所有用户的连接,关闭、卸载数据库,并终止实例
- 不做检查点且没有关闭数据文件
- 启动时自动进行实例恢复