我需要帮助使用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文档中找到了相关的文章,但我不明白。我很感激有任何帮助来解决这个问题。
答案 0 :(得分:2)
这可能应该在DBA堆栈交换中进行,但我不确定如何实现这一点。
我建议您阅读Creating Control Files
的Oracle 12c文档如果您正在创建控制文件,我认为这意味着您没有要复制的现有控制文件。复制控制文件比创建新控制文件和首选更简单。如果控制文件的所有现有副本都已消失或者您正在修改控制文件配置或数据库名称,则应该只创建新的控制文件。
如果你有一个现有的控制文件来复制它,你可以:
如果您有现有的控制文件,可以将其写入sqlplus的跟踪文件(应该转到diagnostic_dest)。这对于创建或复制控制文件不是必需的,但可能会有所帮助。
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
如果您无法复制现有的控制文件并需要创建一个新文件,请参阅以下有关CREATE CONTROLFILE命令的一些注意事项
以下是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。