2017-10-11 171 views
0

我需要使用sqlplus创建控制文件的帮助。我用下面的步骤,我改变SPFILE,关闭数据库,启动NOMOUNT,下次使用命令创建控制文件,但它失败:使用SQLPLUS创建控制文件oracle

create controlfile 
set database orcl 
logfile controlnew1 
('\oracle\oradata\orcl\controlnew1.log’, 
'\oracle\oradata\orcl\controlnew1.log’) 
resetlogs; 

我的规格是创建2个名为位置CONTROL01 contronew1和controlnew2新的控制文件。 我已经在oracle文档中找到相关文章,但异常地我不明白。我会很感激任何帮助来解决这个问题。

回答

1

这应该可能在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。