Oracle11g數(shù)據(jù)庫(kù)參數(shù)文件誤刪除恢復(fù)
本文測(cè)試了誤刪除spfile,pfile,init.ora等文件后的恢復(fù)方法,考慮多種場(chǎng)景,在不同場(chǎng)景下進(jìn)行參數(shù)文件恢復(fù)。
第一步:連上數(shù)據(jù)庫(kù),查看spfile文件所在路徑
-
[oracle@ora11g ~]$ sqlplus / as sysdba
-
-
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 2 11:37:08 2017
-
-
Copyright (c) 1982, 2013, Oracle. All rights reserved.
-
-
Connected to an idle instance.
-
-
SYS@cams>startup;
-
ORACLE instance started.
-
-
Total System Global Area 776646656 bytes
-
Fixed Size 2257272 bytes
-
Variable Size 478154376 bytes
-
Database Buffers 289406976 bytes
-
Redo Buffers 6828032 bytes
-
Database mounted.
-
Database opened.
-
SYS@cams>show parameter pfile;
-
-
NAME TYPE VALUE
-
------------------------------------ ----------- ------------------------------
-
spfile string /u01/app/oracle/product/11.2.0
-
/db_1/dbs/spfilecams.ora
第二步:查看參數(shù)文件路徑下文件信息
-
[oracle@ora11g ~]$ cd $ORACLE_HOME/dbs
-
[oracle@ora11g dbs]$ ls
-
hc_cams.dat init.ora lkCAMS orapwcams spfilecams.ora
第三步:為了便于測(cè)試,這里創(chuàng)建一個(gè)pfile文件
-
SYS@cams>create pfile from spfile;
-
-
File created.
查看新創(chuàng)建的pfile文件
-
[oracle@ora11g dbs]$ ls
-
hc_cams.dat initcams.ora init.ora lkCAMS orapwcams spfilecams.ora
查看每個(gè)參數(shù)文件的內(nèi)容
第四步:模擬參數(shù)文件被誤刪除
-
[oracle@ora11g dbs]$ mkdir backup
-
[oracle@ora11g dbs]$ mv initcams.ora init.ora spfilecams.ora backup/
-
[oracle@ora11g dbs]$ ls
-
backup hc_cams.dat lkCAMS orapwcams
-
[oracle@ora11g dbs]$ ls backup/
-
initcams.ora init.ora spfilecams.ora
第五步:檢查數(shù)據(jù)庫(kù)是否還能正常工作
-
SYS@cams>select name,open_mode from v$database;
-
-
NAME OPEN_MODE
-
--------- --------------------
-
CAMS READ WRITE
顯然,現(xiàn)在數(shù)據(jù)庫(kù)是可以正常工作的,因?yàn)閿?shù)據(jù)庫(kù)啟動(dòng)過(guò)程中已經(jīng)將spfile參數(shù)文件的信息讀到內(nèi)存中。
第六步:這里模擬在數(shù)據(jù)庫(kù)運(yùn)行時(shí),及時(shí)發(fā)現(xiàn)參數(shù)文件被誤刪除,進(jìn)行恢復(fù)。
這里需要用到Oracle11gR2的新特性,對(duì)于Oracle官方文檔的路徑為:
Home / Database / Oracle Database Online Documentation 11g?Release 2 (11.2) / Database Administration/SQL Language Reference/What's New in the SQL Language Reference?
可以找到
CREATE PFILE has new syntax that lets you create a parameter file from current system-wide parameter settings.
CREATE SPFILE has new syntax that lets you create a system parameter file from current system-wide parameter settings.
點(diǎn)擊create pfile或者create spfile進(jìn)入鏈接頁(yè)面,可以找到SQL命令:
CREATE PFILE [= 'pfile_name' ]
FROM { SPFILE [= 'spfile_name']
| MEMORY
} ;
CREATE SPFILE [= 'spfile_name' ]
FROM { PFILE [= 'pfile_name' ]
| MEMORY
} ;
這里執(zhí)行恢復(fù)語(yǔ)句:
-
SYS@cams>create spfile from memory;
-
create spfile from memory
-
*
-
ERROR at line 1:
-
ORA-32002: cannot create SPFILE already being used by the instance
-
-
-
SYS@cams>create pfile from memory;
-
-
File created.
-
-
SYS@cams>create spfile='spfilecams1.ora' from memory;
-
-
File created.
查看恢復(fù)后的spfile和pfile文件:
第七步:重啟數(shù)據(jù)庫(kù),檢查恢復(fù)后的參數(shù)文件能否正常使用,并進(jìn)行分析
-
SYS@cams>shutdown immediate;
-
Database closed.
-
Database dismounted.
-
ORACLE instance shut down.
-
SYS@cams>host mv /u01/app/oracle/product/11.2.0/db_1/dbs/spfilecams1.ora /u01/app/oracle/product/11.2.0/db_1/dbs/spfilecams.ora
-
-
SYS@cams>startup;
-
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
-
ORACLE instance started.
-
-
Total System Global Area 776646656 bytes
-
Fixed Size 2257272 bytes
-
Variable Size 482348680 bytes
-
Database Buffers 285212672 bytes
-
Redo Buffers 6828032 bytes
-
Database mounted.
-
Database opened.
這里出現(xiàn)ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance的問(wèn)題,是因?yàn)?/span>background_dump_dest和user_dump_dest兩個(gè)參數(shù)在11gR1中廢棄了,在alert日志中可以看到明確提示:
對(duì)于兩個(gè)廢棄參數(shù)信息,可以查看官方文檔
Home / Database / Oracle Database Online Documentation 11g?Release 1 (11.1) / Database Administration/Reference/1?Initialization Parameters
在BACKGROUND_DUMP_DEST目錄下看到:
Note:
This parameter is ignored by the new diagnosability infrastructure introduced in Oracle Database 11g Release 1, which places trace and core files in a location controlled by the DIAGNOSTIC_DEST initialization parameter.
在USER_DUMP_DEST目錄下看到:
Note:
This parameter is ignored by the new diagnosability infrastructure introduced in Oracle Database 11g Release 1, which places trace and core files in a location controlled by the DIAGNOSTIC_DEST initialization parameter.
第八步:調(diào)整pfile參數(shù)文件,并創(chuàng)建spfile文件后啟動(dòng)
打開(kāi)pfile文件,可以看到兩個(gè)棄用的參數(shù)后面都有注釋“#Deprecate parameter”
將兩個(gè)廢棄的參數(shù)注釋?zhuān)缓笊蓅pfile文件后啟動(dòng)
-
SYS@cams>create spfile from pfile;
-
-
File created.
-
-
SYS@cams>startup;
-
ORACLE instance started.
-
-
Total System Global Area 776646656 bytes
-
Fixed Size 2257272 bytes
-
Variable Size 482348680 bytes
-
Database Buffers 285212672 bytes
-
Redo Buffers 6828032 bytes
-
Database mounted.
-
Database opened.
第九步:模擬在第六步的時(shí)候未能及時(shí)發(fā)現(xiàn)參數(shù)文件被誤刪除,然后數(shù)據(jù)庫(kù)關(guān)閉了,啟動(dòng)的時(shí)候報(bào)錯(cuò)。
-
[oracle@ora11g dbs]$ ls
-
backup hc_cams.dat initcams.ora lkCAMS orapwcams spfilecams.ora
-
[oracle@ora11g dbs]$ mkdir backup1
-
[oracle@ora11g dbs]$ mv initcams.ora spfilecams.ora backup1/
-
[oracle@ora11g dbs]$ ls backup1/
-
initcams.ora spfilecams.ora
-
[oracle@ora11g dbs]$ ls
-
backup backup1 hc_cams.dat lkCAMS orapwcams
-
SYS@cams>shutdown immediate;
-
Database closed.
-
Database dismounted.
-
ORACLE instance shut down.
-
SYS@cams>startup;
-
ORA-01078: failure in processing system parameters
-
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/initcams.ora'
第十步:找到alert日志,通過(guò)alert日志中的啟動(dòng)信息恢復(fù)pfile參數(shù)文件。
-
[oracle@ora11g dbs]$ cd /u01/app/oracle/diag/rdbms/cams/cams/trace/
-
[oracle@ora11g trace]$ ls | grep alert
-
alert_cams.log
找到最近幾次成功的日志信息,選取其中正確無(wú)誤的一條日志信息:
創(chuàng)建pfile文件initcams.ora,將alert日志中的參數(shù)信息填入:
-
[oracle@ora11g trace]$ cd $ORACLE_HOME/dbs
-
[oracle@ora11g dbs]$ ls
-
backup backup1 hc_cams.dat lkCAMS orapwcams
-
[oracle@ora11g dbs]$ vi initcams.ora
-
[oracle@ora11g dbs]$ cat initcams.ora
-
processes = 150
-
memory_target = 744M
-
control_files = "/u01/app/oracle/oradata/cams/control01.ctl"
-
control_files = "/u01/app/oracle/fast_recovery_area/cams/control02.ctl"
-
db_block_size = 8192
-
compatible = "11.2.0.4.0"
-
db_recovery_file_dest = "/u01/app/oracle/fast_recovery_area"
-
db_recovery_file_dest_size= 4182M
-
undo_tablespace = "UNDOTBS1"
-
remote_login_passwordfile= "EXCLUSIVE"
-
db_domain = ""
-
dispatchers = "(PROTOCOL=TCP) (SERVICE=camsXDB)"
-
job_queue_processes = 1000
-
audit_file_dest = "/u01/app/oracle/admin/cams/adump"
-
audit_trail = "DB"
-
db_name = "cams"
-
open_cursors = 300
-
diagnostic_dest = "/u01/app/oracle"
直接使用pfile文件啟動(dòng)數(shù)據(jù)庫(kù):
-
SYS@cams>startup pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initcams.ora';
-
ORACLE instance started.
-
-
Total System Global Area 776646656 bytes
-
Fixed Size 2257272 bytes
-
Variable Size 511708808 bytes
-
Database Buffers 255852544 bytes
-
Redo Buffers 6828032 bytes
-
Database mounted.
-
Database opened.
第十一步:這里假設(shè)第十步的alert日志中沒(méi)找到參數(shù)信息,需要進(jìn)行恢復(fù),假設(shè)init.ora還能找到。
-
[oracle@ora11g backup]$ ls
-
initcams.ora init.ora spfilecams.ora
-
[oracle@ora11g backup]$ cat init.ora | grep -v ^# | grep -v ^$ > initcams.ora
-
[oracle@ora11g backup]$ cat initcams.ora
-
db_name='ORCL'
-
memory_target=1G
-
processes = 150
-
audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'
-
audit_trail ='db'
-
db_block_size=8192
-
db_domain=''
-
db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
-
db_recovery_file_dest_size=2G
-
diagnostic_dest='<ORACLE_BASE>'
-
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
-
open_cursors=300
-
remote_login_passwordfile='EXCLUSIVE'
-
undo_tablespace='UNDOTBS1'
-
control_files = (ora_control1, ora_control2)
-
compatible ='11.2.0'
然后根據(jù)實(shí)際環(huán)境情況修改initcams.ora,啟動(dòng)數(shù)據(jù)庫(kù),不過(guò)可能會(huì)出現(xiàn)部分參數(shù)的值與原數(shù)據(jù)庫(kù)不一致,需要DBA進(jìn)行調(diào)整。
第十二步:這里假設(shè)第十步的alert日志中沒(méi)找到參數(shù)信息,需要進(jìn)行恢復(fù),假設(shè)init.ora不能找到。
-
[oracle@ora11g dbs]$ vi initcams.ora
-
[oracle@ora11g dbs]$ cat initcams.ora
-
db_name='cams'
使用pfile啟動(dòng)數(shù)據(jù)庫(kù):
-
SYS@cams>shutdown immediate;
-
Database closed.
-
Database dismounted.
-
ORACLE instance shut down.
-
SYS@cams>startup pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initcams.ora';
-
ORACLE instance started.
-
-
Total System Global Area 263090176 bytes
-
Fixed Size 2252256 bytes
-
Variable Size 205521440 bytes
-
Database Buffers 50331648 bytes
-
Redo Buffers 4984832 bytes
-
ORA-00205: error in identifying control file, check alert log for more info
檢查alert日志
-
[oracle@ora11g trace]$ tail -n 20 alert_cams.log
-
CKPT started with pid=12, OS id=5722
-
Wed Aug 02 14:38:15 2017
-
SMON started with pid=13, OS id=5724
-
Wed Aug 02 14:38:15 2017
-
RECO started with pid=14, OS id=5726
-
Wed Aug 02 14:38:15 2017
-
MMON started with pid=15, OS id=5728
-
Wed Aug 02 14:38:15 2017
-
MMNL started with pid=16, OS id=5730
-
ORACLE_BASE from environment = /u01/app/oracle
-
Wed Aug 02 14:38:15 2017
-
ALTER DATABASE MOUNT
-
ORA-00210: cannot open the specified control file
-
ORA-00202: control file: '/u01/app/oracle/product/11.2.0/db_1/dbs/cntrlcams.dbf'
-
ORA-27037: unable to obtain file status
-
Linux-x86_64 Error: 2: No such file or directory
-
Additional information: 3
-
ORA-205 signalled during: ALTER DATABASE MOUNT...
-
Wed Aug 02 14:38:15 2017
-
Checker run found 1 new persistent data failures
修改pfile文件,指定control_files參數(shù)(如果真的忘了,可以用linux命令查找)
-
[oracle@ora11g dbs]$ find $ORACLE_BASE -name control*
-
/u01/app/oracle/product/11.2.0/db_1/oc4j/j2ee/oc4j_applications/applications/em/em/images/database/storage/controlfile.gif
-
/u01/app/oracle/product/11.2.0/db_1/apex/images/fck/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js
-
/u01/app/oracle/product/11.2.0/db_1/apex/images/fck/editor/dialog/fck_spellerpages/spellerpages/controls.html
-
/u01/app/oracle/fast_recovery_area/cams/control02.ctl
-
/u01/app/oracle/oradata/cams/control01.ctl
-
[oracle@ora11g dbs]$ vi initcams.ora
-
[oracle@ora11g dbs]$ cat initcams.ora
-
db_name='cams'
-
control_files='/u01/app/oracle/oradata/cams/control01.ctl','/u01/app/oracle/fast_recovery_area/cams/control02.ctl'
再次使用pfile啟動(dòng)數(shù)據(jù)庫(kù)
-
SYS@cams>shutdown immediate;
-
ORA-01507: database not mounted
-
-
-
ORACLE instance shut down.
-
SYS@cams>startup;
-
ORACLE instance started.
-
-
Total System Global Area 263090176 bytes
-
Fixed Size 2252256 bytes
-
Variable Size 205521440 bytes
-
Database Buffers 50331648 bytes
-
Redo Buffers 4984832 bytes
-
ORA-00201: control file version 11.2.0.4.0 incompatible with ORACLE version
-
11.2.0.0.0
-
ORA-00202: control file: '/u01/app/oracle/oradata/cams/control01.ctl'
查看錯(cuò)誤信息
-
[oracle@ora11g dbs]$ oerr ORA 00201
-
00201, 00000, "control file version %s incompatible with ORACLE version %s"
-
// *Cause: The control file was created by incompatible software.
-
// *Action: Either restart with a compatible software release or use
-
// CREATE CONTROLFILE to create a new control file that is
-
// compatible with this release.
這里需要在參數(shù)文件配置一個(gè)compatible參數(shù)
-
[oracle@ora11g dbs]$ vi initcams.ora
-
[oracle@ora11g dbs]$ cat initcams.ora
-
db_name='cams'
-
control_files='/u01/app/oracle/oradata/cams/control01.ctl','/u01/app/oracle/fast_recovery_area/cams/control02.ctl'
-
compatible="11.2.0.4.0"
再次使用pfile啟動(dòng)數(shù)據(jù)庫(kù)
-
SYS@cams>shutdown immediate;
-
ORA-01507: database not mounted
-
-
-
ORACLE instance shut down.
-
SYS@cams>startup;
-
ORACLE instance started.
-
-
Total System Global Area 263090176 bytes
-
Fixed Size 2252256 bytes
-
Variable Size 205521440 bytes
-
Database Buffers 50331648 bytes
-
Redo Buffers 4984832 bytes
-
Database mounted.
-
Database opened.
數(shù)據(jù)庫(kù)啟動(dòng)成功。同時(shí),我們也從測(cè)試過(guò)程中知道,參數(shù)文件至少需要配置db_name,control_files和compatible等3個(gè)參數(shù)信息,可以讓數(shù)據(jù)庫(kù)成功啟動(dòng)。不過(guò)啟動(dòng)之后也需要DBA對(duì)數(shù)據(jù)庫(kù)參數(shù)進(jìn)行調(diào)整。