之前在linux服务器上安装好了oracle10g,现在正在学习oracle的使用,一些实验笔记记录于此
oracle的实验环境是:ORACLE_SID=mispos ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
数据文件目录是/u02/oradata/mispos
实验要求是在controlfile丢失的情况下将数据库启动到open状态
1.启动数据库:sqlplus /nolog
conn / as sysdba;
startup;
2.备份控制文件:alter database backup controlfile to '/u02/oradata/mispos/controlfile.bak';(控制文件虽然丢失但有备份)
3.关闭数据库:shutdown immediate;
删除controlfile:rm -f /u02/oradata/mispos/*.ctl;
此时可以发现输入startup命令报错ORA-00205: error in identifying control file, check alert log for more info
关闭数据库:shutdown immediate;
此时数据库只能启动到nomount状态
4.将备份文件恢复到原来路径下的控制文件(可以show parameter control_f;以此来查看原来controlfile所在路径和文件数目)
cp /u02/oradata/mispos/controlfile.bak /u02/oradata/mispos/control01.ctl
cp /u02/oradata/mispos/controlfile.bak /u02/oradata/mispos/control02.ctl
cp /u02/oradata/mispos/controlfile.bak /u02/oradata/mispos/control03.ctl
原本有三个控制文件这里就复制三次
执行完该步骤数据库才可以启动到mount状态
5.启动数据库到mount状态:startup nomount;
查看是否是archive模式:archive log list;(该步骤只能在mount状态下执行),发现不是archiive模式
改变其为archive模式:alter database archivelog; 再次查看是否是archive模式发现已经是
6.现在执行alter database open;报错ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
根据错误提示执行:alter database open resetlogs;或者alter database open noresetlogs;但仍然报错
执行:recover database using backup controlfile;
根据提示,输入redolog文件,/u02/oradata/mispos/redo01.log如果不成功/u02/oradata/mispos/redo02.log,/u02/oradata/mispos/redo03.log…(我实验时第一个就成功了)如下图
执行:alter database open resetlogs;成功启动至open状态
这个小问题我搞了一个多小时,期间执行顺序错误什么的各种错误。只有按照如上步骤才能顺利执行成功。