使用SQLPLUS oracle创建Controlfile

时间:2017-10-11 00:35:26

标签: oracle sqlplus oracle12c

我需要帮助使用sqlplus创建控制文件。我已经使用了下一步,我修改了spfile,关闭了数据库,启动了nomount,使用了next命令创建了控制文件但是它失败了:

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

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

1 个答案:

答案 0 :(得分:2)

这可能应该在DBA堆栈交换中进行,但我不确定如何实现这一点。

我建议您阅读Creating Control Files

的Oracle 12c文档

如果您正在创建控制文件,我认为这意味着您没有要复制的现有控制文件。复制控制文件比创建新控制文件和首选更简单。如果控制文件的所有现有副本都已消失或者您正在修改控制文件配置或数据库名称,则应该只创建新的控制文件。

如果你有一个现有的控制文件来复制它,你可以:

  • 关闭数据库。
  • 使用操作系统命令将现有控制文件复制到新位置。
  • 编辑数据库初始化参数文件中的CONTROL_FILES参数以添加新的控制文件名,或更改现有的控制文件名。
  • 重新启动数据库。

如果您有现有的控制文件,可以将其写入sqlplus的跟踪文件(应该转到diagnostic_dest)。这对于创建或复制控制文件不是必需的,但可能会有所帮助。

ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

如果您无法复制现有的控制文件并需要创建一个新文件,请参阅以下有关CREATE CONTROLFILE命令的一些注意事项

  • logfile子句用于指定REDO日志,而不是新控制文件。
  • 日志文件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 init参数并打开数据库。根据数据库的状态,您可能需要在打开数据库之前进行额外的恢复,并且可能需要使用

ALTER DATABASE OPEN RESETLOGS;

如果您的控制文件使用了RESETLOGS。