關於在spfile檔案上修改control_files引數的問題
我在為控制檔案修改路徑的時候遇見一個這樣的問題。
本來三個控制檔案的位置是:
E:ORACLEORADATAORA10CONTROL01.CTL,
E:ORACLEORADATAORA10CONTROL02.CTL,
E:ORACLEORADATAORA10CONTROL03.CTL'
我現在將控制檔案的路徑修改為:
E:CONTROL01.CTL,
E:ORACLEORADATAORA10CONTROL02.CTL,
E:ORACLEORADATAORA10CONTROL03.CTL'
我開始做的時候是這樣的
SQL> alter system set control_files='E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL' scope=spfile; 系統已更改。 |
修改spfile檔案中的control_files引數,然後重啟資料塊。問題出現了。
SQL> startup mount ORACLE 例程已經啟動。 Total System Global Area 159383552 bytes Fixed Size 1247876 bytes Variable Size 79693180 bytes Database Buffers 75497472 bytes Redo Buffers 2945024 bytes ORA-00205: ?????????, ??????, ??????? |
alert檔案的錯誤是:
ALTER DATABASE MOUNT
Wed May 09 08:07:44 2007
ORA-00202: control file: 'E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL'
ORA-27041: unable to open file
OSD-04002: 無法開啟檔案
O/S-Error: (OS 123) 檔名、目錄名或卷標語法不正確。
無法找到控制檔案,這時候,我的控制檔案已經在自己的目錄上。spfile不行,我就使用pfile檔案。
SQL> create pfile from spfile; 檔案已建立。 |
看看pfile檔案中的control_files的內容:
*.control_files=’E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL’ |
正確的,啟動資料庫:
SQL> shutdown immediate ORA-01109: 資料庫未開啟 已經解除安裝資料庫。 ORACLE 例程已經關閉。 SQL> startup mount pfile=e:oracleora10databaseinitora10.ora ORACLE 例程已經啟動。 Total System Global Area 159383552 bytes Fixed Size 1247876 bytes Variable Size 79693180 bytes Database Buffers 75497472 bytes Redo Buffers 2945024 bytes ORA-00205: ?????????, ??????, ??????? |
還是有問題。
檢視一下Oracle的文件,文件上說:
To Multiplex or Move Additional Copies of the Current Control Files 1) Shut down the database. 2) Copy an existing control file to a different location, using operating system commands. 3) Edit the CONTROL_FILES parameter in the database's initialization parameter file to add the new control file's name, or to change the existing control filename. 4) Restart the database. |
文件上說是修改修改引數檔案中的CONTROL_FILES引數,我就是這樣做的啊?問題出在哪裡啊?很是鬱悶。後來看到文件上有這樣的格式。
CONTROL_FILES = (/u01/oracle/prod/control01.ctl, /u02/oracle/prod/control02.ctl, /u03/oracle/prod/control03.ctl) |
我抱著試試看的態度,將pfile檔案上的control_files修改為:
*.control_files=(E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL) |
重新啟動一下:更鬱悶的事情發生了,資料庫居然起來了。
SQL> startup mount pfile=e:oracleora10databaseinitora10.ora ORACLE 例程已經啟動。 Total System Global Area 159383552 bytes Fixed Size 1247876 bytes Variable Size 79693180 bytes Database Buffers 75497472 bytes Redo Buffers 2945024 bytes 資料庫裝載完畢。 SQL> SQL> show parameter control NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7 control_files string E:CONTROL01.CTL, E:ORACLEOR ADATAORA10CONTROL02.CTL, E: ORACLEORADATAORA10CONTROL03 .CTL SQL> |
那麼從pfile生成spfile看看:
SQL> create spfile from pfile; 檔案已建立。 SQL> shutdown immediate ORA-01109: 資料庫未開啟 已經解除安裝資料庫。 ORACLE 例程已經關閉。 SQL> startup mount ORACLE 例程已經啟動。 Total System Global Area 159383552 bytes Fixed Size 1247876 bytes Variable Size 79693180 bytes Database Buffers 75497472 bytes Redo Buffers 2945024 bytes 資料庫裝載完畢。 SQL> |
鬱悶,居然沒有問題。
總結一下:
為了更改控制檔案的目錄,使用alter system修改引數control_files到spfile中。然後將spfile生成pfile檔案,關閉資料庫,這時候無論使用spfile還是pfile都無法啟動資料庫,錯誤是指定的控制檔案的路徑不正確。這時候pfile檔案的寫法是:
*.control_files=’E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL’
修改這個引數的寫法:
*.control_files=(E:CONTROL01.CTL, E:ORACLEORADATAORA10CONTROL02.CTL, E:ORACLEORADATAORA10CONTROL03.CTL)
這樣就沒有問題了。
問題出來了,我這個引數使用的是oracle的命令修改的spfile檔案,而且使用的是oracle命令生成的pfile檔案。為什麼oracle自己生成的東西會有問題那?還需要手工修改他的格式?
在深入一下:
我將正常執行的資料庫的引數檔案spfile生成為pfile。這時候pfile檔案中的control_files引數的格式還是為:
*.control_files='E:ORACLEORADATAORA10CONTROL01.CTL','E:ORACLEORADATAORA10CONTROL02.CTL','E:ORACLEORADATAORA10CONTROL03.CTL' |
但是這時候,使用這個檔案還是能夠正常啟動:
SQL> shutdown immediate ORA-01109: 資料庫未開啟 已經解除安裝資料庫。 ORACLE 例程已經關閉。 SQL> startup mount pfile=e:oracleora10databaseinitora10.ora ORACLE 例程已經啟動。 Total System Global Area 159383552 bytes Fixed Size 1247876 bytes Variable Size 79693180 bytes Database Buffers 75497472 bytes Redo Buffers 2945024 bytes 資料庫裝載完畢。 SQL> |
大家說說這是為什麼,難道我有什麼做錯的地方嗎?
我的資料庫版本是:
SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod PL/SQL Release 10.2.0.1.0 - Production CORE 10.2.0.1.0 Production TNS for 32-bit Windows: Version 10.2.0.1.0 - Production NLSRTL Version 10.2.0.1.0 - Production |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-914125/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 修改二進位制引數檔案(SPFILE)的方法之一
- oracle引數檔案pfile,spfileOracle
- Oracle 引數檔案(spfile和pfile)Oracle
- 關於檔案上傳的問題smartUpload
- oracle 關於--引數檔案Oracle
- oracle 11G引數檔案之伺服器引數檔案(spfile)與例項啟動的關係Oracle伺服器
- Oracle基礎 07 引數檔案 pfile/spfileOracle
- 關於檔案上傳下載的編碼問題
- oracle控制檔案及引數檔案問題Oracle
- 2.7.9 備份伺服器引數檔案(SPFILE)伺服器
- 2.7.8 匯出伺服器引數檔案(SPFILE)伺服器
- 2.7.2 遷移到伺服器引數檔案(spfile)伺服器
- 水煮Oracle——《Oracle pfile/spfile引數檔案詳解Oracle
- (轉)Oracle中的啟動引數檔案:spfile和pfileOracle
- SPFILE引數修改錯誤的解決辦法
- 請教一個問題,關於上傳檔案和圖片的問題
- 關於在request請求時,處理請求引數的問題
- Oracle RAC修改引數檔案位置Oracle
- 關於SAX解析xml檔案的問題XML
- 關於解壓zip檔案的問題
- mysql的日誌引數修改的問題.MySql
- 關於C++中在模板引數中使用Lambda表示式的問題C++
- oracle 11.2 版本 asmcmd 針對 spfile 引數檔案增加的命令OracleASM
- 關於修改資料庫引數的測試資料庫
- 關於ubuntu修改hosts檔案的方法Ubuntu
- 關於oracle檔案許可權的問題Oracle
- RAC 11G ASM下修改spfile檔案ASM
- 關於ubuntu下hosts修改的問題Ubuntu
- 修改pfile引數檔案過程的異常
- 工具類,關於手工讀取 properties檔案引數
- 有關swoole+laravel 上傳檔案的問題Laravel
- 關於vue-cli構建的專案在github上的預覽問題VueGithub
- 關於“引數”的幾個問題,也許面試會問到哦~面試
- 關於Android檔案數過大,分包問題的解決辦法Android
- oracle 學習總結篇二: 伺服器引數檔案spfile的使用Oracle伺服器
- 關於jdon儲存,修改問題
- 重新建立控制檔案,修改MAXDATAFILES引數
- mybatis中mapper.xml檔案引數問題MyBatisAPPXML