使用SQLPLUS oracle创建控制文件

使用SQLPLUS oracle创建控制文件,oracle,sqlplus,oracle12c,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中创

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

create controlfile
set database orcl
logfile controlnew1   
('\oracle\oradata\orcl\controlnew1.log’,
'\oracle\oradata\orcl\controlnew1.log’)
resetlogs;
我的规范是在位置CONTROL01中创建两个名为contronew1和controlnew2的新控制文件。
我在oracle文档中找到了相关的文章,但我不理解。我将感谢任何帮助来解决这个问题

这应该放在DBA堆栈交换中,但我不确定如何实现这一点

我建议您阅读Oracle的12c文档以了解更多信息

如果您正在创建控制文件,我假定这意味着您没有要复制的现有控制文件。复制一个控制文件比创建一个新的控制文件要简单得多,这是首选。只有当控制文件的所有现有副本都已丢失或正在修改控制文件配置或数据库名称时,才应创建新的控制文件

如果要复制现有的控制文件,可以:

  • 关闭数据库
  • 使用操作系统命令将现有控制文件复制到新位置
  • 在数据库初始化参数文件中编辑CONTROL_FILES参数,以添加新的控制文件名,或更改现有的控制文件名
  • 重新启动数据库
如果您有一个现有的控制文件,您可以从sqlplus将其写入跟踪文件(应转到diagnostic_dest)。这对于创建或复制控制文件不是必需的,但可能会有所帮助

ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
如果您无法复制现有的控制文件,需要创建一个新的控制文件,这里有一些关于create controlfile命令的注释

  • logfile子句用于指定重做日志,而不是新的控制文件
  • 您在logfile controlnew1中具有相同的文件名
  • 你没有任何数据文件
下面是oracle创建控制文件的示例。创建新控制文件的第一步是列出数据库的所有数据文件和重做日志文件。重做日志文件将放在日志文件部分,数据文件将放在数据文件部分

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。

您好,我收到了错误
ORA-01565:识别文件'/u01/oracle/prod/system01.dbf'时出错,
,有什么建议吗?