打开 SQLPLUS, 输入用户名和密码后 , 却总是
报 ORA-01033: ORACLE initialization or shutdown in progress 的错误 . 在网上搜索解决办法和大家分享 :
1) 开始 - 运行 -cmd
2) 命令行中输入 SQLPLUS SYS/SYS AS SYSDBA
3) 输入 SHUTDOWN
4) 输入 STARTUP.
在第四步的时候留意它输出的错误。我的是:
SQL> STARTUP
ORACLE 例程已经启动。
Total System Global Area 313860096 bytes
Fixed Size 1332892 bytes
Variable Size 255854948 bytes
Database Buffers 50331648 bytes
Redo Buffers 6340608 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 1 ( 用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\ORADATA\ORCL\REDO01.LOG'
很明显的是日志组出了问题。进到 D:\ORACLE\ORADATA\ORCL\ 看看,原来是用优化大师时把日志文件给删掉了。
OK, 知道问题,那就来解决问题吧。上网找找。有篇文章是这样的:
“ ORA - 00205 错误 , 即某些控制文件出现了问题 , 解决方法 . 先到 E:\oracle\product\10.1.0 \oradata\orcl 目录下 , 可以看见有 CONTROL01.CTL, CONTROL02.CTL, CONTROL03.CTL 三个控制文件 , 如果错误报的是 CONTROL02.CTL, CONTROL03.CTL 有问题 , 那么就把这两个文件删掉 , 然后使用好的控制文件境象文件复制成删除的控制文件就可以了。”
可惜我的不是控制文件的问题,而是日志。最先冒出的想法是,我可不可以也另外的日志文件来替代呢?叫同学发个日志文件过来,放在 D:\ORACLE\ORADATA\ORCL\ 下,
“ SQL> startup
数据库装载完毕。
ORA-00305: 日志 1 ( 用于线程 1) 不一致 ; 属于另一个数据库
ORA-00312: 联机日志 1 线程 1: 'D:\ORACLE\ORADATA\ORCL\REDO01.LOG' ”
结论这是不行的 .
最后的解决方法是:
SQL> shutdown immediate;
SQL> startup mount;
SQL> select * from v$log; /*查看日志状态(见后面的资料)*/
SQL> alter database clear unarchived logfile group 2; /* 重建日志文件 */
SQL> alter database clear unarchived logfile group 3;
SQL> alter database clear unarchived logfile group 1;
SQL> startup;
Total System Global Area 313860096 bytes
Fixed Size 1332892 bytes
Variable Size 255854948 bytes
Database Buffers 50331648 bytes
Redo Buffers 6340608 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn system
输入口令 :
已连接。
SQL>
到这里,问题解决了!
后话,恢复日志文件的顺序要注意。
附加些资料:
日志文件组的状态
current: 当前正在使用的工作组
inactive: 非活动组
active : 归档还没有完成
unused : 还没有使用 , 一般新建的工组组都是这个状态
在 active,current 状态下的工作组都不能删除 , 要日志切换后才可以
SQL> shutdown immediate; (为什么不是 shutdown 呢?看下面得链接吧)
http://download.oracle.com/docs/cd/B10501_01/server.920/a96521/start.htm#6370
SQL> startup mount;
1 、 STARTUP NOMOUNT
NONOUNT 选项仅仅创建一个 Oracle 实例 , 当实例打开后,系统将显示一个 SGA 内存结构和大小的列表 ;
2 、 STARTUP MOUNT
该命令创建实例并且安装数据库,但没有打开数据库 , 在这种打开方式下 , 除了可以看到 SGA 系统列表以外,系统还会给出 " 数据库装载完毕 " 的提示 ;
3 、 STARTUP
该命令完成创建实例、安装实例和打开数据库的所有三个步骤 , 这时系统除了可以看到前面 Startup Mount 方式下的所有提示外,还会给出一个 " 数据库已经打开 " 的提示 , 此时,数据库系统处于正常工作状态,可以接受用户请求。