1.以MOUNT方式启动数据库:
ORACLE启动实例并打开控制文件,此时ORACLE进行如下工作:
将数据库与已启动的实例关联起来,利用初始化参数文件中说明锁定并打开控制文件,读控制文件以获取数据文件和重做日志文件的名字、状态信息,但并不检查这些文件此时是否存在。下面实验证明在ORACLE11G中在MOUNT阶段是不检查的数据文件的,盖国强深入解析ORACLE入门进阶与诊断安全这本书中说是检查,应该是老版本吧。
是否检查
SQL> conn sys/oraclesys as sysdba
已连接到空闲例程。
SQL> host move e:\sysoradata\system01.dbfe:\sysoradata\system01bak.dbf ---重命令来模拟删除一个数据文件
SQL> host dir e:\sysoradata
驱动器 E 中的卷是新加卷
卷的序列号是B849-8991
e:\sysoradata 的目录
2013-02-03 22:27 <DIR> .
2013-02-03 22:27 <DIR> ..
2013-02-03 22:21 587,210,752 sysaux01.dbf
2013-02-03 22:21 723,525,632 system01bak.dbf
2013-02-03 21:57 30,416,896 temp01.dbf
2013-02-03 22:21 94,380,032 undotbs01.dbf
2013-02-03 22:21 5,251,072 users01.dbf
5 个文件
2 个目录 693,217,280 可用字节
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 431038464 bytes
Fixed Size 1375088 bytes
Variable Size 331351184 bytes
Database Buffers 92274688 bytes
Redo Buffers 6037504 bytes
数据库装载完毕。
日志中信息也无出错:
Sun Feb 03 22:28:05 2013
ALTER DATABASE MOUNT
Successful mount of redo thread 1, with mount id 1334255605
Database mounted in Exclusive Mode
Lost write protection disabled
Completed: ALTER DATABASE MOUNT
2.MOUNT阶段的控制文件:
在数据库创建时ORACLE11G默认创建两个控制文件,通常我们会重新设置控制文件在存放位置。比如我们修改控制文件为三个,如果此时有一个或两个控制文件损坏,因为缺省的控制文件的内容完全相同,此时可以复制正常状态的控制文件,并重命令为相应的名字,就可以启动数据库,如所有控制文件丢失,则需要恢复或重建控制文件。
在NOMOUNT阶段可以通过以下命令查询控制文件信息
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ -----------------------------------------
control_files string D:\DISK1\CONTROL01.CTL, D:\DIS
K2\CONTROL02.CTL, D:\DISK3\CON
.CTL, D:\DISK5\CONTROL05.CTL
在MOUNT阶段可以通过以下命令查询控制文件信息
SQL> desc v$controlfile
名称 是否为空? 类型
------------------------------------------------- ------------------------
STATUS VARCHAR2(7)
NAME VARCHAR2(513)
IS_RECOVERY_DEST_FILE VARCHAR2(3)
BLOCK_SIZE NUMBER
FILE_SIZE_BLKS NUMBER
SQL> select name from v$controlfile;
NAME
----------------------------------------------------------------------------
D:\DISK1\CONTROL01.CTL
D:\DISK2\CONTROL02.CTL
D:\DISK3\CONTROL03.CTL
D:\DISK4\CONTROL04.CTL
D:\DISK5\CONTROL05.CTL
3.MOUNT阶段的ALERT日志文件中的信息:
SunFeb 03 21:51:46 2013
StartingORACLE instance (normal)
alterdatabase mount
SunFeb 03 21:51:59 2013
Successfulmount of redo thread 1, with mount id 1334246778
SunFeb 03 21:51:59 2013
Databasemounted in Exclusive Mode
Lostwrite protection disabled
Completed:alter database mount