一 问题描述
数据库,起不来,报错:
二 出错原因
硬件损坏
三 解决办法
① 如果有多个控制文件的话,关闭数据库,用完好的控制文件覆盖掉损坏的控制文件即可(cp 好的控制文件 损坏的控制文件),再启动数据库即可。
② 如果有控制文件的备份,则用备份进行恢复。
略
③ 若只有一个控制文件,且没对控制文件做备份,则需要重建控制文件
示例:
CREATE CONTROLFILE REUSE DATABASE "YJT" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 4672
LOGFILE
GROUP 1 (
'+DATA/yjt/onlinelog/group_1.261.996927927'
) SIZE 256M BLOCKSIZE 512,
GROUP 2 (
'+DATA/yjt/onlinelog/group_2.265.996930093'
) SIZE 256M BLOCKSIZE 512,
GROUP 3 (
'+DATA/yjt/onlinelog/group_3.262.996924769'
) SIZE 256M BLOCKSIZE 512,
GROUP 4 (
'+DATA/yjt/onlinelog/group_4.266.996931363'
) SIZE 256M BLOCKSIZE 512,
GROUP 5 (
'+DATA/yjt/onlinelog/group_5.291.996924127'
) SIZE 256M BLOCKSIZE 512,
GROUP 6 (
'+DATA/yjt/onlinelog/group_6.303.996924127'
) SIZE 256M BLOCKSIZE 512,
GROUP 7 (
'+DATA/yjt/onlinelog/group_7.304.996924129'
) SIZE 256M BLOCKSIZE 512,
GROUP 8 (
'+DATA/yjt/onlinelog/group_8.305.996924129'
) SIZE 256M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'+DATA/yjt/datafile/SYSTEM.256.994538163',
'+DATA/yjt/datafile/SYSAUX.257.994538163',
'+DATA/yjt/datafile/UNDOTBS1.258.994538163',
'+DATA/yjt/datafile/USERS.259.994538163',
'+DATA/yjt/datafile/pls.dbf',
'+DATA/yjt/datafile/lcs.dbf'
CHARACTER SET ZHS16GBK
;
--注意:这里的redo log和datafile需要根据自己环境,进行相应修改,数据文件名要能对应上。
redo log的大小也要对应上。 否则会报错:
假如报错:
第 1 行出现错误:
ORA-01503: CREATE CONTROLFILE 失败
ORA-12720: 操作要求数据库处于 EXCLUSIVE 模式下
则说明是rac环境,需要先禁用rac集群:
SQL> alter system set cluster_database=false scope=spfile;
系统已更改。
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> startup nomount;
ORACLE 例程已经启动。
然后重新执行重建控制文件的sql,执行成功后,数据库自动进入mount状态:
SQL> SELECT status from v$instance;
STATUS
------------
MOUNTED
#再启动数据库
alter database open;
--由于我上面将cluster_database设置成false了,这里再还原回去:
#改回集群模式
SQL> alter system set cluster_database=true scope=spfile;
系统已更改。
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 2.9931E+10 bytes
Fixed Size 2242912 bytes
Variable Size 7247759008 bytes
Database Buffers 2.2616E+10 bytes
Redo Buffers 64851968 bytes
数据库装载完毕。
数据库已经打开。