Oracle

Oracle 11g:使用由 SPFILE 創建的 PFILE 時,LRM-00109 後跟 ORA-01078

  • November 12, 2017

我知道這很長,但請耐心等待 - 我認為背景資訊可能很重要。

作業系統:Windows Server 2008 R2 64 位

數據庫:Oracle 11g 64 位企業版

昨天晚上,我們不得不重新啟動主機作業系統才能完成 Windows 組件的安裝。重新啟動後,我注意到當 Oracle 偵聽器重新啟動時,數據庫實例沒有 - 這很不尋常,因為它被設置為自動並且只有一個實例。

所以,我想肯定是有什麼東西干擾了這家初創公司,我去了:

C:\Users\digitalnoise>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 16 12:14:29 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
ORA-01263: Name given for file destination directory is invalid
OSD-04018: Unable to access the specified directory or device.
O/S-Error: (OS 2) The system cannot find the file specified.
SQL>

並且立即警鐘開始響起,因為db_recovery_file_dest被配置為指向作為 iSCSI 驅動器安裝在 SAN 上的 SAN F:\。所以我跳進了 Windows 資源管理器,我想我會發現驅動器失去了——它不是,但是一切都不對。 F:\現在顯示的是一組完全不同的文件 - 在我們開始將其用於 FlashRecovery 之前應該以某種格式刪除的文件 - 而不是 FlashRecovery 目錄和相關文件。

我真的開始感到胃灼熱,並向我們的伺服器 IT 人員發送了一封電子郵件,他們此時當然不在大樓內。今天早上我收到回复說他們認為該驅動器上的 MBR 已損壞,因此該驅動器現在將舊的 MBR 交給作業系統,真的把事情搞砸了。他們將不得不手動覆蓋 MBR 並慢速格式化驅動器。謝天謝地,這個數據庫還沒有投入生產,所以日誌文件的失去不是一個問題,但接下來會發生.

由於我無法在掛載模式下啟動數據庫:

SQL> startup mount
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
ORA-01263: Name given for file destination directory is invalid
OSD-04018: Unable to access the specified directory or device.
O/S-Error: (OS 2) The system cannot find the file specified.

我認為我需要從創建一個pfilespfile更改db_recovery_file_dest參數並使用pfile啟動數據庫實例,所以:

SQL> create pfile='myinit.ora' from spfile;

File created.

我去尋找pfile那個被創造出來的東西,打開它,心裡想:“自己,這看起來有點奇怪,但是……”:

atsm.__db_cache_size=7918845952
atsm.__java_pool_size=33554432
atsm.__large_pool_size=67108864
atsm.__oracle_base='E:\app\<user who installed oracle>'#ORACLE_BASE set from environment
atsm.__pga_aggregate_target=5905580032
atsm.__sga_target=9563013120
atsm.__shared_io_pool_size=0
atsm.__shared_pool_size=1409286144
atsm.__streams_pool_size=33554432
*.audit_file_dest='E:\app\<user who installed oracle>\admin\ATSM\adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='E:\oracle\oradata\ATSM\ATSM\control01.ctl','F:\FlashRecoveryArea\ATSM\control02.ctl'
*.db_block_size=8192
*.db_domain='<domain.com>'
*.db_name='ATSM'
*.db_recovery_file_dest='F:\FlashRecoveryArea'
*.db_recovery_file_dest_size=5242880000
*.diagnostic_dest='E:\app\<user who installed oracle>'
*.dispatchers='(protocol=TCP)'
*.memory_target=15457058816
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_servers=1
*.undo_tablespace='UNDOTBS1'

我從參數中刪除了該*.db_recovery_file_dest='F:\FlashRecoveryArea'行,因為它還指向失去的路徑/文件,保存我的文件,然後執行:,'F:\FlashRecoveryArea\ATSM\control02.ctl'``*.control_files

SQL> startup pfile='myinit.ora';
LRM-00109: could not open parameter file 'myinit.ora'
ORA-01078: failure in processing system parameters
SQL>

並同時獲得LRM-00109ORA-01078。所以我想也許 - 只是也許 - 我把編輯搞砸了pfile- 所以我會嘗試導出它,然後使用它 - 如果導出沒有問題,那麼我應該得到關於能夠找到的錯誤路徑,對吧?錯誤的:

SQL> create pfile from spfile;

File created.

我檢查了一下,它使用的預設文件名是INITatsm.ORA,所以:

SQL> startup pfile='INITatsm.ORA';
LRM-00109: could not open parameter file 'INITatsm.ORA'
ORA-01078: failure in processing system parameters
SQL>

所以甲骨文正在pfile從它那裡導出一個spfile無效的。

這就是我所在的地方。我確實找到了我認為是pfile安裝數據庫時創建的“預設”,我複制了它並嘗試在startup pfile=命令中使用它,但我得到了完全相同的 Oracle 錯誤。

有沒有人遇到過這個?你有什麼建議嗎?我們真的不想放棄整個安裝 - 這可能有點極端 - 因為設置它的顧問不再與我們在一起,我們目前無法獲得資金聘請另一個人。

**編輯添加:**我忘了提到我確實嘗試提供pfile我想要使用的完整路徑,但正如你所看到的,我得到了完全相同的錯誤消息:

SQL> startup pfile='E:\app\<UID_W_INST_ORCL>\product\11.2.0\dbhome_1\database\INITatsm.ORA';
LRM-00109: could not open parameter file 'E:\app\<UID_W_INST_ORCL>\product\11.2.0\dbhome_1\database\INITatsm.ORA'
ORA-01078: failure in processing system parameters

所以災難已經避免。%ORACLE_HOME%\database當您嘗試使用目錄中存在的 pfile 時,該問題是一個明顯的“錯誤” - 因為我沒有其他詞 - 對於 Oracle 。

即使您提供完整的路徑和文件名,pfileOracle 11gR2 顯然也不會正確載入與 .spfile

相反,我必須創建pfilefromspfile並提供完全不同的路徑,一旦我這樣做了,然後編輯該文件並將其提供給startup命令,我就能夠安裝實例並更改配置並成功打開數據庫.

引用自:https://dba.stackexchange.com/questions/51618