这应该可能在DBA堆栈交换,但我不知道如何做到这一点。
我建议你阅读甲骨文12C文档Creating Control Files
如果要创建控制文件我想这意味着你没有一个现有的控制文件进行复制。复制一个控制文件比创建一个新的控制文件简单得多,也是首选。如果所有现有的控制文件副本都没有了,或者您正在修改控制文件配置或数据库名称,则只应创建新的控制文件。
如果你有一个现有的控制文件进行复制,您可以:
- 关闭数据库。
- 使用操作系统命令将现有控制文件复制到新位置。
- 编辑数据库初始化参数文件中的CONTROL_FILES参数以添加新的控制文件名称或更改现有的控制文件名称。
- 重新启动数据库。
如果你有一个现有的控制文件,你可以把它写出来从sqlplus跟踪文件(应该去diagnostic_dest)。这不是创建或复制控制文件所必需的,但可能会有所帮助。
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
如果无法复制现有控制文件,并需要在这里新建一个约你的CREATE CONTROLFILE命令几个音符
- 日志文件子句用于指定重做日志,不新的控制文件。
- 你有相同的文件名在日志文件controlnew1
- 您没有任何数据文件
下面是Oracle的CREATE CONTROLFILE例子。创建新控制文件的第一步是创建数据库的所有数据文件和重做日志文件的列表。重做日志文件将进入LOGFILE部分,数据文件将进入DATAFILE部分。
CREATE CONTROLFILE
SET DATABASE orcl
LOGFILE GROUP 1 ('/u01/oracle/prod/redo01_01.log',
'/u01/oracle/prod/redo01_02.log'),
GROUP 2 ('/u01/oracle/prod/redo02_01.log',
'/u01/oracle/prod/redo02_02.log')
RESETLOGS
DATAFILE '/u01/oracle/prod/system01.dbf' SIZE 3M,
'/u01/oracle/prod/rbs01.dbs' SIZE 5M,
'/u01/oracle/prod/users01.dbs' SIZE 5M,
'/u01/oracle/prod/temp01.dbs' SIZE 5M
MAXLOGFILES 50
MAXLOGMEMBERS 3
MAXLOGHISTORY 400
MAXDATAFILES 200
MAXINSTANCES 6
ARCHIVELOG;
文件创建后,您就需要编辑CONTROL_FILES初始化参数并打开数据库。根据数据库的状态,您可能需要打开它之前做额外的恢复,可能需要使用
ALTER DATABASE OPEN RESETLOGS;
如果你的控制文件用于RESETLOGS。
来源
2017-10-11 01:51:04
axg