Oracle数据库有三种启动状态:nomount、mount和open。
-
Nomount状态:
-
在nomount状态下,Oracle实例已启动,但数据库尚未挂载。这意味着Oracle进程已经启动,内存结构(SGA)已分配,但尚未加载任何数据库文件。
-
当数据库以nomount状态启动时,以下行为发生:
-
Oracle实例进程启动,并分配SGA。
-
控制文件被读取,其中包含数据库的结构信息。
-
参数文件(init.ora或spfile)被读取,其中包含数据库实例的初始化参数。
-
数据库名称和文件的物理位置被确定。
-
-
-
Mount状态:
- 在mount状态下,Oracle数据库已经成功挂载,但尚未处于可用状态。此时,数据库文件已经打开,并且可以进行诸如备份、恢复等操作。
- 当数据库以mount状态启动时,以下行为发生:
- 控制文件中的数据字典被读取,并根据其中的信息加载数据文件和重做日志文件。
- 数据库各个文件的头部信息被验证。
- 执行一些额外的检查来确保数据库完整性。
- 数据库处于已挂载但未打开状态,无法处理用户请求。
-
Open状态:
- 在open状态下,Oracle数据库已经完全启动并且可用。此时,用户可以通过客户端连接到数据库并执行查询和事务操作。
- 当数据库以open状态启动时,以下行为发生:
- 所有数据文件和重做日志文件被打开,可以进行读写操作。
- 数据库的事务处理功能完全可用。
- 用户连接可以建立,并且可以执行DDL、DML和查询等操作。
总结:nomount状态是数据库启动的初始状态,mount状态是数据库已挂载但尚未打开的状态,open状态是数据库完全启动并对用户可用的状态。每个状态都涉及一系列特定的行为,包括读取控制文件、加载数据字典、验证文件头部信息等。