2017-10-11 172 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。