1. 数据库的启动
1.1 数据库启动的步骤
- 创建并启动实例:根据初始化参数文件中的设置,创建并启动实例,即分配内存空间、启动后台进程。
- 装载数据库:根据初始化参数文件中的CONTROL_FILES参数找到控制文件。从控制文件中获取数据库名称、数据文件和重做日志文件的位置、名称等数据库物理结构信息,为打开数据库做好准备。如果控制文件损坏,实例将无法装载数据库。
- 打开数据库:根据控制文件中的信息,进行数据库数据文件和重做日志文件的加载,最后打开数据库。如果任何一个数据文件或重做日志文件无法正常打开,数据库将返回错误信息,这时数据库需要恢复。
1.2 数据库启动的三种模式
启动模式 |
说明 |
NOMOUNT |
创建并启动数据库实例,对应数据库启动的第一个步骤 |
MOUNT |
启动实例并装载数据库,对应数据库启动的第二个步骤 |
OPEN |
启动实例、装载并打开数据库,对应数据库启动的第三个步骤 |
1.3 启动数据库的基本语法
SQL> STARTUP [NOMOUNT | MOUNT | OPEN | FORCE] [RESTRICT] [PFILE=filename]
其中,PFILE用于指定初始化参数文件。在执行STARTUP语句启动数据库时,系统按照如下顺序寻找初始化参数文件。
- 检查是否使用PFILE参数指定了文本初始化参数文件。
- 如果没有使用PFILE参数,则在默认位置寻找默认名称的服务器初始化参数文件。
- 如果没有找到默认的服务器初始化参数文件,则在默认位置寻找默认名称的文本初始化参数文件。
2. 数据库的关闭
2.1 数据库关闭的步骤
- 关闭数据库(关闭数据文件与重做日志文件)
- 卸载数据库(关闭控制文件)
- 关闭实例(释放内存、关闭后台进程)
2.2 关闭数据库的基本语法
SQL> SHUTDOWN [NORMAL | TRANSACTION | IMMEDIATE | ABORT]
SHUTDOWN [NORMAL]
- 阻止任何用户建立新的连接;
- 等待当前所有正在连接的用户主动断开连接;
- 一旦所有用户断开连接,则关闭数据库;
- 数据库下次启动时不需要任何实例的恢复过程。
SHUTDOWN IMMEDIATE
- 阻止任何用户建立新的连接;
- 也不允许当前连接用户启动任何新的事务;
- 回滚所有当前未提交的事务;
- 终止所有用户的连接,直接关闭数据库;
- 数据库下一次启动时不需要任何实例的恢复过程。
SHUTDOWN TRANSACTION
- 阻止所有用户建立新的连接,也不允许当前连接用户启动任何新的事务;
- 等待用户回滚或提交任何当前未提交的事务,然后立即断开用户连接;
- 关闭数据库;
- 数据库下一次启动时不需要任何实例的恢复过程。
SHUTDOWN ABORT
- 阻止任何用户建立新的连接,同时阻止当前连接用户开始任何新的事务。
- 立即结束当前正在执行的SQL语句。
- 任何未提交的事务不被回滚。
- 中断所有的用户连接,立即关闭数据库。
- 数据库实例重启后需要恢复。