在Oracle数据库中,控制文件是一个重要的组成部分,它记录了数据库的物理结构信息,如数据文件和日志文件的位置、大小等,当控制文件丢失或损坏时,数据库将无法正常启动,本文将介绍如何在Oracle 11g环境下,从零开始重建控制文件。
诊断控制文件丢失问题
在开始重建控制文件之前,首先需要确定控制文件是否真的丢失,可以通过以下SQL语句查询控制文件的状态:
SELECT name, status FROM v$controlfile;
如果查询结果中的status
列显示为INVALID
或DELETED
,则说明控制文件已丢失或损坏。
备份现有控制文件
在重建控制文件之前,建议先备份现有的控制文件,可以使用以下命令备份控制文件:
cp $ORACLE_HOME/dbs/spfile<数据库名>.ora $ORACLE_HOME/dbs/spfile<数据库名>.bak
创建新的控制文件
1、关闭数据库实例:
sqlplus / as sysdba shutdown immediate;
2、删除原有的控制文件:
rm f $ORACLE_HOME/dbs/controlfile<数据库名>.ct1 rm f $ORACLE_HOME/dbs/controlfile<数据库名>.ct2
3、以DBA身份登录到操作系统,创建新的控制文件:
touch $ORACLE_HOME/dbs/controlfile<数据库名>.ct1 touch $ORACLE_HOME/dbs/controlfile<数据库名>.ct2 chown oracle:dba $ORACLE_HOME/dbs/controlfile<数据库名>.ct1 chown oracle:dba $ORACLE_HOME/dbs/controlfile<数据库名>.ct2 chmod 600 $ORACLE_HOME/dbs/controlfile<数据库名>.ct1 chmod 600 $ORACLE_HOME/dbs/controlfile<数据库名>.ct2
4、编辑新的控制文件,添加以下内容(根据实际情况修改):
control file for database with dbid <数据库ID> and instance number <实例号> created by Oracle version <Oracle版本> on <创建日期> with DB_BLOCK_SIZE = <数据块大小> and SYSAUX_BLOCK_SIZE = <辅助数据块大小> automatic backup of control file enabled using the following parameters: MAXLOGFILES = <最大日志文件数>, MAXLOGMEMBERS = <最大日志成员数>, MAXLOGHISTORY = <最大日志历史记录数>, MAXBACKUPCHILDREN = <最大备份子对象数>, MAXDUPLICATE_TIME = <最大重复时间>, MAXLOGFILESPERGROUP = <每个组的最大日志文件数>, MAXLOGMEMBERSPERGROUP = <每个组的最大日志成员数>, MAXLOGHISTORYPERGROUP = <每个组的最大日志历史记录数>, MAXBACKUPCHILDRENPERGROUP = <每个组的最大备份子对象数>, FLASHBACK_ARCHIVE_TARGET = <闪回归档目标>, FLASHBACK_ARCHIVE_DEST = <闪回归档目标位置>, FLASHBACK_ARCHIVE_DUPLEX = <闪回归档副本数>, FLASHBACK_ARCHIVE_FORCE_MULTISET = <强制多集闪回归档>, FLASHBACK_ARCHIVE_AUTOBACKUP_ON = <启用自动闪回归档备份>, FLASHBACK_ARCHIVE_RECOVERY_AREA = <恢复区域位置>, FLASHBACK_ARCHIVE_DELAY = <延迟时间>, FLASHBACK_ARCHIVE_MAX_MEMBERSHIPS = <最大成员数>, FLASHBACK_ARCHIVE_OPTIMAL = <优化模式>, FLASHBACK_ARCHIVE_DESTROYED = <销毁模式>, FLASHBACK_ARCHIVE_COMPRESSION = <压缩模式>, FLASHBACK_ARCHIVE_LOGSOURCEID = <日志源ID>, FLASHBACK_ARCHIVE_ENABLED = <启用闪回归档>, FLASHBACK_ARCHIVE_CONFIGURED = <配置闪回归档>, FLASHBACK_ARCHIVE_CONNECTIONSTRING = <连接字符串>, FLASHBACK_ARCHIVE_SECURITYFILE = <安全文件位置>, FLASHBACK_ARCHIVE_COMMANDFILE = <命令文件位置>, FLASHBACK_ARCHIVE_PARALLELISM = <并行度>, FLASHBACK_ARCHIVE_LOGLIMIT = <日志限制>, FLASHBACK_ARCHIVE_EXPIRYTIME = <过期时间>, FLASHBACK_ARCHIVE_RETENTIONTOKENS = <保留令牌数>, FLASHBACK_ARCHIVE_RETENTIONTOKENSPERGROUP = <每个组的保留令牌数>, FLASHBACK_ARCHIVE_DISABLEDFILEGROUPS = <禁用的文件组列表>, FLASHBACK_ARCHIVE_DISABLEDTABLESPACES = <禁用的表空间列表>, FLASHBACK_ARCHIVE_DISABLEDOBJECTS = <禁用的对象列表>, FLASHBACK_ARCHIVE_DISABLEDDATABASES = <禁用的数据库列表>, FLASHBACK_ARCHIVE_DISABLEDCOMPONENTS = <禁用的组件列表>, FLASHBACK_ARCHIVE_DEFAULTSCOPE = <默认范围>, FLASHBACK_ARCHIVE_USERNAME = <用户名>, FLASHBACK_ARCHIVE_PASSWORD = <密码>, FLASHBACK_ARCHIVE_SECURITYMODE = <安全模式>, FLASHBACK_ARCHIVE_ASYNCCANCELJOBS = <异步取消作业>, FLASHBACK_ARCHIVE_ASYNCCANCELTIMEOUT = <异步取消超时时间>, FLASHBACK_ARCHIVE_ASYNCCANCELINTERVAL = <异步取消间隔时间>, FLASHBACK_ARCHIVE_ASYNCCANCELINTERVALFACTOR = <异步取消间隔因子>, FLASHBACK_ARCHIVE_ASYNCCANCELWAITTIME = <异步取消等待时间>, FLASHBACK_ARCHIVE_ASYNCCANCELNOWAITTIME = <异步取消不等待时间>, FLASHBACK_ARCHIVE_ASYNCCANCELNOTIFYTIMEOUT = <异步取消通知超时时间>, FLASHBACK_ARCHIVE_ASYNCCANCELNOTIFYINTERVAL = <异步取消通知间隔时间>, FLASHBACK_ARCHIVE_ASYNCCANCELNOTIFYINTERVALFACTOR = <异步取消通知间隔因子>, FLASHBACK_ARCHIVE_ASYNCCANCELNOTIFYWAITTIME = <异步取消通知等待时间>, FLASHBACK_ARCHIVE_ASYNCCANCELNOTIFYNOWAITTIME = <异步取消通知不等待时间>, FLASHBACK_ARCHIVELOGLIMITKBYTES = <日志限制字节数>, FLASHBACK ARCHIVE DEST INCLUDING DIFFERENTIAL RECORDS INTO A PHYSICAL STANDBY COPIES OF THE PRIMARY STANDBY
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/504202.html