在任意时刻,数据库将处于以下4中状态之一:
SHUTDOWN:关闭与数据库相关的所有文件,同时实例并不存在
NOMOUNT:实例已构建在内存中(已根据参数文件中指定的参数创建了SGA并启动某些后台进程),但是并没有连接任何 数据库,这种情况在数据库不存在时确实可能出现。
MOUNT:实例定位并读取数据库控制文件。
OPEN:将定位和打开所有数据库文件,并且终端用户能够使用数据库。
执行startup命令时,Oracle会尝试按前述的命名约定,定位参数文件。
实例一旦在NOMOUNT模式中启动成功,就可以通过读取控制文件转换到MOUNT模式。它适用CONTROL_FILE参数(在NOMOUNT模式中启动实例时,读取所适用的参数文件就可以知道这个参数)定位控制文件。如果控制文件(或者控制文件的任何多路复用副本)被损坏或丢失,就不会加载数据库,因此还需要在继续启动进程之前执行适当的动作。如果数据库的加载成功,那么控制文件的所有副本都可用并且相同。
在数据库加载阶段,所有数据文件和连接重做日志文件的名称和位置都从控制文件中读取,但是Oracle仍然没有试图查找这些文件,这些文件的查找在转换至OPEN模式时进行。如果任何文件丢失或损坏,数据库就会停留在MOUNT模式,并且只有在执行适当的动作之后才能打开。
此外,即使所有文件都存在,这些文件在数据库打开之前也必须同步。如果数据库的最近一次关闭是有序的(也就是说数据库缓冲区缓存内的所有数据库缓冲区首先通过DBWn进程被转储至硬盘),那么所有数据文件和联机重做日志文件都将同步:Oracle会知道所有已提交的事务都被安全地存储在数据文件中,并且没有任何未提交的事务被挂起等待回滚。然而,如果数据库的最近一次关闭不是有序的(如断电或服务器重启),那么Oracle必须修复损坏的文件,而且,数据库会被看做处于不一致状态。
加载和代开数据库的进程为SMON。只有在成功打开数据库之后,Oracle才允许用正常的数据字典验证方式,建立用户会话。
数据库的关闭顺序应当与数据库的启动顺序相反。在有序关闭数据期间首先关闭数据库,然后卸载,最后停止实例。在数据库关闭阶段,将终止所有会话:回滚活动的事务,通过DBWn进程将已完成的事务转储至磁盘,同时关闭数据文件和重做日志文件。在数据库卸载阶段,关闭控制文件。随后,通过解除分配SGA和终止后台进程,停止实例。
3关闭:NORMAL、TRANSACTIONAL IMMEDIATE和ABORT
shutdown [ normal | transactional | immediate | abort ]
normal:这是默认选项。使用该选项时,不许可任何新的用户连接,但是允许继续当前的所有连接。只有所有用户(自愿地)退出登录时,数据库才能真正关闭。
transactional:不许可任何新的用户连接,不存在于某个事物中的现有会话将被种猪,允许当前位于某个事物中的会话在完成该事务之后终止。一旦所有会话终止,就会关闭数据库。
immediate:不许可任何新的用户连接,当前所有连接的会话都被终止。任何活动的事务都将回滚,随后数据库会关闭。
abort:就Oracle而言,使用这个选项相当于断电。实例立即终止。此时,不会讲任何数据写入磁盘,也不会采用任何有序的方式终止正在进行的事务。
查看警报日志,访问动态性能视图
警报日志
警报日志是应用于实例和数据库的关键操作的连续记录。其位置由实例参数DIAGNOSTIC_DEST确定,它默认为ORACLE_BASE目录。警报日志的位置和命名如下:
<DIAGNOSTIC_DEST>/diag/rdbms/<DBNAME>/<INSTANCE_NAME>/trace/alter_<instance_name>.log
对于数据库和实例oracl,该值通常如下;
c:\app\oracle\diag\rdbms\orcl\orcl\trace\alter_orcl.log
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/alter_orcl.log
XML格式的警报日志副本在另一个目录下维护:
<DIAGNOSTIC_DEST>/diag/rdbms/<DBNAME>/<INSTANCE_NAME>/alter
警报中记录的关键操作包括;
所有启动和关闭命令,包括中间命令,如ALTER DATABASE MOUNT。
实例的所有内部错误(如ORA-600错误,DBA只能使用My Oracle Support查看它们,如果它们是新问题,就报告给Oracle Support)。
任何检测到的数据文件块损坏情况。
任何已经发生的记录锁定死锁。
影响数据库物理结构的所有操作,如创建或重命名数据文件和联机重做日志。
调整初始化参数值的ALTER SYSTEM命令。
所有日志开关和日志归档。
启动的警报日志项显示参数文件中指定的所有初始化参数。此信息以及随后使用ALTER SYSTEM更改实例的连续记录,以及使用ALTER DATABASE更改数据库物理结构的连续记录,允许用户重新构建对数据库和实例的更改历史。
跟踪文件由各个后台进程生成,一般在遇到错误时生成。这些文件与警报日志一起放在跟踪目录中。
DDL日志
如果DBA选择启用DDL日志,就可以在日志文件中记录DDL命令。所适用的语句就记录在如下目录的文本文件ddl_<instance_name>中,并记录与XML文件log.xml相同的信息:
<DIAGNOSTIC_DEST>/diag/rdbms/<DBNAME>/<INSTANCE_NAME>/log
要启用DDL日志,实例参数ENABLE_DDL_LOGGING必须设置为TRUE(默认为FALSE)。
动态性能视图
动态性能视图有600多个,名称前缀是“V$”,事实上,它们根本不是视图,而是带有“V_$”前缀的视图上的同义词。动态性能视图填充了来自实例或控制文件的信息,前缀为DBA_、ALL_或USER_的视图则填充了来自数据字典的信息。此差异决定了可以在不同启动阶段查询哪些视图。
动态性能视图在数据库启动阶段创建,在实例的生存期内进行更新,在数据库关闭阶段被删除。这意味着动态性能视图包含了从数据库启动开始积累的值。如果数据库连续打开半年时间,那么动态性能视图具有这一段时间内建立的所有数据。