Oracle参数文件的备份与恢复

        Oracle实例启动需要读取参数文件,实例启动进程会在$ORACLE_HOME/dbs目录(linux/unix系统)下按照spfile<sid>.ora、spfile.ora、init<sid>.ora的顺序搜寻参数文件,如果这三个文件都存在,则找到spfile文件就不往下找其他的参数文件。

        spfile<sid>.ora和spfile.ora是服务器参数文件,以二进制的格式保存,如果是以服务器参数文件启动的实例,可以用"alter system  …… "命令修改实例的参数。可以使用命令"show parameter spfile"查看实例是否以服务器参数文件启动。

       "alter system  ……  scope=spfile"将修改的结果保存到spfile<sid>.ora文件,但是内存中的值不做修改,此命令一般适合修改静态参数,如果修改完后想要参数生效,必须重启实例。

       "alter system  ……  scope=both"将修改的结果保存到spfile<sid>.ora文件的同时修改内存中的值,使得修改的参数及时生效。

       init<sid>.ora是客户端参数文件也叫pfile,以文本方式保存,可以按照需要编辑器中的内容。如果实例以客户端参数文件启动,启动完后将和客户端参数文件再无关系,使用"alter system  …… "无法修改客户端和服务端参数文件的内容,比如:

SYS@orcl>startup pfile='?/dbs/initorcl.ora'                             ---启动实例指定$ORACLE_HOME/dbs目录下的pfile

ORACLE instancestarted.

Total System GlobalArea  536870912 bytes

FixedSize                    2085360 bytes

VariableSize                  159387152 bytes

DatabaseBuffers          369098752 bytes

RedoBuffers                    6299648 bytes

Database mounted.

Database opened.

 

SYS@orcl>show parameter spfile;                                                     ---值为空表示使用pfile启动的实例

NAME                                     TYPE        VALUE

----------------------------------------------- ------------------------------

spfile                                     string

SYS@orcl>

 

SYS@orcl>showparameter pga

NAME                                     TYPE        VALUE

----------------------------------------------- ------------------------------

pga_aggregate_target                     big integer 109M

 

SYS@orcl>alter system set pga_aggregate_target=120m;                             ---可以修改动态参数

System altered.

 

SYS@orcl>showparameter pga;

NAME                                     TYPE        VALUE

----------------------------------------------- ------------------------------

pga_aggregate_target                     big integer 120M

 

SYS@orcl>alter system set pga_aggregate_target=130mscope=both;                            ---修改的参数无法保存到spfile

alter system setpga_aggregate_target=130m scope=both

*

ERROR at line 1:

ORA-32001: write toSPFILE requested but no SPFILE specified at startup

 

以下关于参数文件的备份和恢复均在Oracle 10g 10.2.0.4单实例环境下实现,rman的备份和恢复均利用快速恢复区flash recovery area,没有使用rman recovery catalog。

一、服务器参数文件的备份

1、利用操作系统命令备份spfile

cp$ORACLE_HOME/dbs/spfile<sid>.ora /home/oracle

 

2、利用rman备份spfile参数文件

2.1手工备份

RMAN> backup spfile;                                            ---手工备份spfile

Starting backup at25-NOV-12

using channelORA_DISK_1

channel ORA_DISK_1:starting full datafile backupset

channel ORA_DISK_1:specifying datafile(s) in backupset

including currentSPFILE in backupset

channel ORA_DISK_1:starting piece 1 at 25-NOV-12

channel ORA_DISK_1:finished piece 1 at 25-NOV-12

piecehandle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2012_11_25/o1_mf_nnsnf_TAG20121125T153635_8c3ln41t_.bkptag=TAG20121125T153635 comment=NONE

channel ORA_DISK_1:backup set complete, elapsed time: 00:00:01

Finished backup at25-NOV-12

 

2.2自动备份

如果rman开启了控制文件自动备份,参数文件和控制文件会在备份任何文件的时候自动备份,比如:

RMAN> show controlfile autobackup;                                 ---显示控制文件自动备份,参数文件也会同时备份,rman命令'configurecontrolfile autobackup on'设置控制文件自动备份

 

RMAN configurationparameters are:

CONFIGURECONTROLFILE AUTOBACKUP ON;

 

RMAN> backup tablespace users;                                            ---备份users表空间

Starting backup at25-NOV-12

using channelORA_DISK_1

channel ORA_DISK_1:starting full datafile backupset

channel ORA_DISK_1:specifying datafile(s) in backupset

input datafilefno=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf

channel ORA_DISK_1:starting piece 1 at 25-NOV-12

channel ORA_DISK_1:finished piece 1 at 25-NOV-12

piecehandle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2012_11_25/o1_mf_nnndf_TAG20121125T150315_8c3jom9g_.bkptag=TAG20121125T150315 comment=NONE

channel ORA_DISK_1:backup set complete, elapsed time: 00:00:01

Finished backup at25-NOV-12

 

Starting Control File and SPFILE Autobackup at 25-NOV-12                      ---显示控制文件和spfile也自动备份

piecehandle=/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2012_11_25/o1_mf_s_800290996_8c3jonff_.bkpcomment=NONE

Finished ControlFile and SPFILE Autobackup at 25-NOV-12

 

 二、服务器参数文件的恢复

1、启动实例时spfile文件损坏

1.1如果之前有用操作系统命令备份过spfile,可以再操作系统命令把备份复制到$ORACLE_HOME/dbs目录,比如:

cp/home/spfile<sid>.ora $ORACLE_HOME/dbs/spfile<sid>.ora

 

1.2利用rman恢复spfile

1.2.1恢复时指定恢复文件

[oracle@oraedudbs]$ rman target /

 

Recovery Manager:Release 10.2.0.4.0 - Production on Sun Nov 25 15:23:40 2012

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

 connected to targetdatabase (not started)

 

RMAN> startup nomount;                               ---启动实例到nomount状态,rman使用内置参数文件启动实例

 startup failed:ORA-01078: failure in processing system parameters

LRM-00109: could notopen parameter file '/u01/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora'

 

starting Oracleinstance without parameter file for retrival of spfile

Oracle instancestarted

 

Total System GlobalArea     159383552 bytes

 Fixed Size                     2082400 bytes

Variable Size                 67111328 bytes

DatabaseBuffers              83886080 bytes

Redo Buffers                   6303744 bytes

 

RMAN> restore spfile from'/u01/app/oracle/flash_recovery_area/ORCL/backupset/2012_11_25/o1_mf_nnsnf_TAG20121125T153635_8c3ln41t_.bkp';     ---指定'backup spfile'命令备份的备份集

 

Starting restore at25-NOV-12

using targetdatabase control file instead of recovery catalog

allocated channel:ORA_DISK_1

channel ORA_DISK_1:sid=36 devtype=DISK

 

channel ORA_DISK_1:autobackup found:/u01/app/oracle/flash_recovery_area/ORCL/backupset/2012_11_25/o1_mf_nnsnf_TAG20121125T153635_8c3ln41t_.bkp

channel ORA_DISK_1:SPFILE restore from autobackup complete

Finished restore at25-NOV-12

 

RMAN> restore spfile from'/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2012_11_25/o1_mf_s_800292997_8c3ln567_.bkp';                                                         ---指定rman自动备份的备份集

 

Starting restore at25-NOV-12

using targetdatabase control file instead of recovery catalog

allocated channel:ORA_DISK_1

channel ORA_DISK_1:sid=36 devtype=DISK

 

channel ORA_DISK_1:autobackup found:/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2012_11_25/o1_mf_s_800292997_8c3ln567_.bkp

channel ORA_DISK_1:SPFILE restore from autobackup complete

Finished restore at25-NOV-12

 

1.2.2利用rman的自动备份恢复spfile

如果知道数据库的db_name和快速恢复区的路径可以执行下列命令还原

RMAN>restore spfile from autobackup db_name=orcldb_recovery_file_dest='/u01/app/oracle/flash_recovery_area';

 

Starting restore at25-NOV-12

using channelORA_DISK_1

 

recovery areadestination: /u01/app/oracle/flash_recovery_area

database name (ordatabase unique name) used for search: ORCL

channel ORA_DISK_1:autobackup found in the recovery area

channel ORA_DISK_1:autobackup found:/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2012_11_25/o1_mf_s_800292997_8c3ln567_.bkp

channel ORA_DISK_1:SPFILE restore from autobackup complete

Finished restore at25-NOV-12

 

2.实例运行时spfile文件损坏

如果实例运行时发现spfile文件丢失或者损坏,不要关闭实例,可以直接在rman中利用自动备份恢复到其他目录,比如:

SYS@orcl>altersystem set pga_aggregate_target=120m scope=both;

alter system setpga_aggregate_target=120m scope=both

*

ERROR at line 1:

ORA-01565: error inidentifying file

'/u01/app/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora'

ORA-27037: unable toobtain file status

Linux-x86_64 Error:2: No such file or directory

Additionalinformation: 3

 

RMAN> restore spfile to '/u01/app/oracle/product/10.2.0/db_1/dbs/spfileorcl.ora' from autobackup; 

---从自动备份中恢复spfile到指定的目录

 

Starting restore at25-NOV-12

using channelORA_DISK_1

 

recovery areadestination: /u01/app/oracle/flash_recovery_area

database name (ordatabase unique name) used for search: ORCL

channel ORA_DISK_1:autobackup found in the recovery area

channel ORA_DISK_1:autobackup found:/u01/app/oracle/flash_recovery_area/ORCL/autobackup/2012_11_25/o1_mf_s_800292997_8c3ln567_.bkp

channel ORA_DISK_1:SPFILE restore from autobackup complete

Finished restore at25-NOV-12

 

如果数据库是11g,还可以在sqlplus中执行create pfile/spfile from memory生成spfile和pfile。

 

三、没有备份的情况下恢复参数文件

如果极端情况下没有备份spfile和pfile,或者所有的spfile和pfile备份丢失损坏,可以用下面两种方法恢复:

1.数据库是用dbca命令创建

如果数据库使用dbca命令创建,在创建过程中dbca会在$ORACLE_BASE/admin/<sid>/pfile/目录下生成一个'init.ora.创建时间'的pfile,可以在启动实例时指定此pfile,比如:

SYS@orcl>startuppfile='/u01/app/oracle/admin/orcl/pfile/init.ora.7292012204845';

ORACLE instancestarted.

 

Total System GlobalArea  343932928 bytes

FixedSize                    2083816 bytes

VariableSize                  104858648 bytes

DatabaseBuffers          230686720 bytes

RedoBuffers                    6303744 bytes

Database mounted.

Database opened.

 

然后从pfile中创建spfile。

SYS@orcl>createspfile from pfile='/u01/app/oracle/admin/orcl/pfile/init.ora.7292012204845';

File created.

 

2.利用警告日志

可以查看警告日志,警告日志位于$ORACLE_BASE/admin/<sid>/bdump/alert_<sid>.log,警告日志中有

Starting up ORACLERDBMS Version: 10.2.0.4.0.

System parameterswith non-default values:

  processes                = 150

  sga_max_size             = 536870912

  __shared_pool_size       = 150994944

  __large_pool_size        = 4194304

  __java_pool_size         = 4194304

  __streams_pool_size      = 0

  nls_length_semantics     = BYTE

  resource_manager_plan    =

  sga_target               = 536870912

  control_files            =/u01/app/oracle/oradata/orcl/control01.ctl,/u01/app/oracle/oradata/orcl/control02.ctl,/u01/app/oracle/oradata/orcl/control03.ctl

db_block_size            = 8192

  __db_cache_size          = 369098752

  compatible               = 10.2.0.1.0

  log_archive_format       = %t_%s_%r.dbf

  db_file_multiblock_read_count= 16

  db_recovery_file_dest    = /u01/app/oracle/flash_recovery_area

  db_recovery_file_dest_size= 2147483648

  undo_management          = AUTO

  undo_tablespace          = UNDOTBS1

  undo_retention           = 900

  remote_login_passwordfile= EXCLUSIVE

  db_domain                =

  dispatchers              = (PROTOCOL=TCP)(SERVICE=orclXDB)

  job_queue_processes      = 10

  background_dump_dest     = /u01/app/oracle/admin/orcl/bdump

  user_dump_dest           = /u01/app/oracle/admin/orcl/udump

  core_dump_dest           = /u01/app/oracle/admin/orcl/cdump

  audit_file_dest          = /u01/app/oracle/admin/orcl/adump

  db_name                  = orcl

  open_cursors             = 300

  pga_aggregate_target     = 114294784

  aq_tm_processes          = 0

其中非默认的参数都记录在内,可以使用里面的内容重建pfile。

 

3、极端情况下没有备份、没有警告日志

在这种情况下只有手工重建pfile

control_files

db_block_size

db_name

Compatible

这几个参数是启动实例和mount数据库必须的,可以在pfile中设置这几个参数启动实例,但是非常不推荐使用这种途径恢复参数文件,所以一定要注意备份、备份、再备份。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值