Chinaunix首页 | 论坛 | 博客
  • 博客访问: 507337
  • 博文数量: 158
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 904
  • 用 户 组: 普通用户
  • 注册时间: 2016-10-10 11:17
文章分类

全部博文(158)

文章存档

2018年(74)

2017年(84)

我的朋友

分类: Oracle

2018-07-11 09:47:27

【摘要】

正常启动一个Oracle实例时,需要在指定的目录下提供一个参数文件,告诉Oracle一些关于实例的配置信息,例如分配多大的内存、控制文件的位置、允许打开的进程数和会话数等等。如果参数文件不存在或损坏,那么可能直接导致实例不可用,因此有必要对参数文件进行备份,保证数据库的安全。
      本文转自IT培训机构-学领未来

【正文】

     参数文件的重要性

正常启动一个Oracle实例时,需要在指定的目录(UNIX:$ORACLE_HOME/dbs,Windows:%ORACLE_HOME%\database)下提供一个参数文件,告诉Oracle一些关于实例的配置信息,例如分配多大的内存、控制文件的位置、允许打开的进程数和会话数等等。如果参数文件不存在或损坏,那么可能直接导致实例不可用。

对于参数文件不存在或损坏的影响,一般有两种情况:

情况一:实例启动前,参数文件不存在或损坏。

如果没有提供必要的参数文件就启动实例,那么一般会看到相关的错误(ORA-01078、LRM-00109),提示无法打开参数文件。

情况二:实例启动后,参数文件被损坏。

当实例通过参数文件正常启动后,因某些原因导致参数文件丢失或损坏,实例可以正常运行,但无法查看、修改参数。

     备份参数文件

2.1          手动备份

Oracle的参数文件可以在系统层面进行备份,利用cp等命令将参数文件拷贝到备份服务器等地方。

也可以通过Oracle的RMAN工具进行备份,如:

RMAN> backup spfile;

 

启动 backup 于 01-7月 -18

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: SID=159 实例=orcl11g1 设备类型=DISK

通道 ORA_DISK_1: 正在启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集内的数据文件

备份集内包括当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 于 01-7月 -18

通道 ORA_DISK_1: 已完成段 1 于 01-7月 -18

段句柄=+FRA/orcl11g/backupset/2018_07_01/nnsnf0_tag20180701t142151_0.261.980346113 标记=TAG20180701T142151 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02

完成 backup 于 01-7月 -18

2.2          自动备份

只要备份时包含了1号数据文件,RMAN会自动将控制文件和参数文件进行备份,如:

RMAN> backup datafile 1;

 

启动 backup 于 01-7月 -18

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: SID=27 实例=orcl11g1 设备类型=DISK

通道 ORA_DISK_1: 正在启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集内的数据文件

输入数据文件: 文件号=00001 名称=+DATA/orcl11g/datafile/system.256.977265057

通道 ORA_DISK_1: 正在启动段 1 于 01-7月 -18

通道 ORA_DISK_1: 已完成段 1 于 01-7月 -18

段句柄=+FRA/orcl11g/backupset/2018_07_01/nnndf0_tag20180701t144228_0.264.980347349 标记=TAG20180701T144228 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:15

通道 ORA_DISK_1: 正在启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集内的数据文件

备份集内包括当前控制文件

备份集内包括当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 于 01-7月 -18

通道 ORA_DISK_1: 已完成段 1 于 01-7月 -18

段句柄=+FRA/orcl11g/backupset/2018_07_01/ncsnf0_tag20180701t144228_0.265.980347365 标记=TAG20180701T144228 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01

完成 backup 于 01-7月 -18

 

另外,如果启用了控制文件自动备份,控制文件和参数文件在适当时间点会自动备份。

     恢复参数文件

3.1          实例启动前

当实例启动前,参数文件不存在或损坏,那么需要先使用备份进行恢复。因为没有涉及到重做日志,准确的说应该是还原参数文件。根据备份方式的不同,恢复的方式也有所不同,其目的都是将原来的参数文件放回指定位置。

对于在系统层面的备份,只需要将备份拷贝回原来的文件即可。

如果是通过RMAN工具进行的备份,则需要利用RMAN进行恢复,具体步骤如下:

3.1.1      启动实例

在RMAN下启动实例到NOMOUNT状态,如:

RMAN> startup nomount;

说明:在没有参数文件的时,可以通过RMAN工具利用Oracle内置的参数文件启动一个中间实例(SID为DUMMY)来完成恢复。

3.1.2      还原参数文件

执行restore spfile from [autobackup|’备份集路径’],如:

RMAN> restore spfile from autobackup;

3.1.3      重启实例

关闭实例后,以还原的参数文件启动实例,如:

RMAN> shutdown immediate;

RMAN> startup;

3.2          实例启动后

3.2.1      有备份文件

在有备份的情况下,当发现参数文件丢失或损坏时,实例处于正常运行状态,那么还原起来就简单多了,只需从3.1.2开始执行即可,但如果实例是通过spfile启动的,还需要添加”to ‘恢复路径’”来指定还原的路径,如:

RMAN> restore spfile to ‘/home/oracle/spfileorcl11g.ora’ from autobackup;

最后将还原出来的参数文件放回到指定位置即可。

3.2.2      无备份文件

在没有备份的情况下,可直接从内存中创建一个spfile参数文件,但这有个问题,创建的spfile文件名称不能和已存在的相同,如:

SQL> CREATE SPFILE FROM MEMORY;

CREATE SPFILE FROMMEMORY

*

ERROR at line 1:

ORA-32002: cannotcreate SPFILE already being used by the instance

这时需创建一个不同名称的spfile,然后再改成正确的spfile名称,如:

SQL> create spfile ='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfile_tmp.ora' from memory;

File created.

最后把刚才创建的spfile改成正确的名称spfile.ora,如:

[oracle@pri dbs]$mv spfile_tmp.ora   spfileorclpri.ora

          小结

备份大于一切。不论是参数文件还是其它数据库文件,我们都应该对其进行有效的备份,并定期进行恢复演练,以保证在出现问题时,还有办法对其进行还原。


阅读(3051) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~