oracle-参数文件的备份与还原

参数文件是实例启动到nomount状态的必要条件,规定了实例的行为特征,位置跟操作系统相关,一般unix类的系统在$ORACLE_HOME/dbs目录下

(windows在%ORACLE_HOME%\database目录下),启动会按照以下顺序寻找参数文件(SID表示实例名)

--1 spfileorcl.ora(orcl是实例名,SID)

--2 spfile.ora

--3 initSID.ora

其中spfileorcl.ora和spfile.ora是二进制文件,称为服务器参数文件(或者spfile)。InitSID.ora是文本文件。

YHQT@ orcl >show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
/db_1/dbs/spfileorcl.ora

判断实例是通过哪一种参数文件启动的,上面查询结果显示实例启动所使用的spfile

1 参数文件损坏的后果

场景1:spfileorcl.ora\spfile.ora\initorcl.ora 3个文件在实例启动前已经损坏丢失了

若3个参数文件都损坏,实例无法启动到nomount状态,共享内存结构(SGA)和后台进程无法启动。启动时看到错误提示LRM-00109,

显示找不到initorcl.ora文件,实际上3个文件都没有找到(orcl为实例名)

[oracle@DSI ~]$ oerr ora 1078
01078, 00000, "failure in processing system parameters"
// *Cause: Failure during processing of INIT.ORA parameters during
// system startup.
// *Action: Further diagnostic information should be in the error stack.

场景2:实例通过spfileorcl.ora或spfile.ora启动,但该参数文件在实例启动后丢失或损坏

遇到这种情况,凡是涉及访问参数文件(spfile)的命令就会失败,实例不会有崩溃的危险,比如’alter system’修改参数文件,

或show parameter或查询v$parameter视图参数文件中的参数都会遇到ORA-01565无法识别文件的错误

-SQL> alter system set fast_start_mttr_target=600;
-SQL> show parameter db_name
-SQL> select * from v$parameter where name=’db_name’;
告警日志
ORA-01565:unable to open spfile /u01/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora

2 备份

RMAN能够以备份集的形式备份spfile(不包括pfile),手动备份和自动备份。当然也可以使用操作系统级别的复制命令(cp)备份参数文件,恢复时只要复制dbs目录即可

-2.1 手动备份

RMAN> backup spfile; --只用来备份参数文件
Starting backup at 16-JUL-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=148 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 16-JUL-19
channel ORA_DISK_1: finished piece 1 at 16-JUL-19
piece handle=/u01/app/oracle/fra/ORCL/backupset/2019_07_16/o1_mf_nnsnf_TAG20190716T113012_gltk64cs_.bkp tag=TAG20190716T113012 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 16-JUL-19

这里使用了快速恢复区,在生成的备份集的文件名前半部分o1_mf_nnsnf_

-2.2 自动备份

在备份1号数据文件时或只要备份时包含了1号数据文件,RMAN就会将控制文件与参数文件备份至一个额外的备份集。

RMAN> backup datafile 1;

另外,若启用了控制文件的自动备份功能,参数文件和控制文件会在合适时机自动备份

用操作系统命令复制一下参数文件永远是一个简单可行的方案。

3 恢复

恢复参数文件实际上就是还原参数文件,参数文件的修改没有重做日志的支持,所以不存在恢复的操作。

若在之前已经使用操作系统命令复制过参数文件,那么最简单的方法是在复制回原来的地方

-3.1 实例启动时发现损坏

如果有使用 os命令复制参数文件,此时将它复制回去就好

若有参数文件的备份集,还原步骤如下:

--1 使用RMAN启动实例到nomount状态
--2 执行restore spfile命令,根据备份类型的区别使用对应的语句‘from autobackup’或‘from 备份片路径’,前者对应自动备份,后者对应手动备份
--3 重启实例,恢复完成

注意:在sqlplus下没有参数文件不能启动到nomount状态,但是在RMAN下可以。

RMAN> startup nomount;

命令输出中的LRM-00109错误显示RMAN也做了寻找参数文件失败的尝试。

RMAN具有内置的参数文件能够在没有参数文件的特殊情况下将实例启动到nomount状态。

RMAN>restore spfile from '/u01/app/oracle/fra/ORCL/backupset/2019_07_16/o1_mf_nnsnf_TAG20190716T113012_gltk64cs_.bkp';
SQL> startup force;
SQL> show parameter spfile

若之前是利用控制文件自动备份生成参数文件备份的,还原命令稍有不同,无须指定备份片的路径,给出数据库名和快速恢复区的路径即可(前提是使用了快速恢复区)

YHQT@ orcl >show parameter db_recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/fra
db_recovery_file_dest_size big integer 4G
RMAN> restore spfile from autobackup db_name=orcl db_recovery_file_dest='/u01/app/oracle/fra';

若管理员没有启用快速恢复区,控制文件自动备份保存在默认的’$ORACLE_HOME/dba’目录下,此时还原命令首先指定数据库的DBID

RMAN> set dbid 1534031567;
RMAN> restore spfile from autobackup;

如果使用了rman catalog和快速恢复区,那么from子句和dbid都可以不用管,直接执行restore spfile就可

[oracle@DSI ~]$ rman target sys/***@orcl catalog rcowner/***@orcl
RMAN> run {
startup nomount;
restore spfile;
startup force;
}

-3.2 实例运行时损坏

如果发现问题时数据库尚未关闭(实例处于运行中),则无序关闭实例而是应该直接执行RMAN命令的restore命令。不关闭实例的好处很多,

不但高可用性,并且不用通过rman启动到nomount状态, 不用设置dbid,只要记住如果实例是利用服务器参数文件(spfile不是pfile)启动的,还需指定to子句将其还原到其他路径才行

RMAN> restore spfile from autobackup;
--RMAN-06564: must use the to clause when the instance is started with spfile
RMAN> restore spfile to '/home/oracle/spfileorcl.ora' from autobackup;
$ mv /home/oracle/spfileorcl.ora $ORACLE_HOME/dbs ##最好不要直接restore到dbs路径

oracle-参数文件的备份与还原的更多相关文章

  1. Oracle 参数文件及相关操作介绍

    Oracle 参数文件及相关操作介绍 by:授客 QQ:1033553122 1.服务器参数文件 服务器参数文件是一个二进制文件,作为初始化参数的存储仓库.实例运行时,可用ALTER SYSTEM来改 ...

  2. Oracle 10g 数据库的备份和还原

    一.备份数据库 1.在图形工具中,如sqldeveloper,pl/sqldeveloper用以下这句查找空表 select 'alter table '||table_name||' allocat ...

  3. ORACLE参数文件

    一.oracle pfile/spfile区别    pfile 默认的名称为“init+例程名.ora”文件路径:E:\oracle\product\10.2.0\db_1\dbs,这是一个文本文件 ...

  4. Oracle 参数文件spfile

    pfile和spfile 概念 ORACLE中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件,可以分为两种类型.它们是在数据库实例启动时候加载的,决定了数据库的物理结构.内存.数据库的限制 ...

  5. Oracle 参数文件

    参数文件(10g中的参数文件) 主要用来记录数据库的配置文件,在数据库启动时,Oracle读取参数文件,并根据参数文件中的参数设置来配置数据库. 如内存池的分配,允许打开的进程数和会话数等. 两类参数 ...

  6. Oracle参数文件修改

    初始化参数文件有两种,文本初始化参数文件 pfile 和二进制初始化参数文件 spfile.   动态参数文件spfile 这是Oracle推荐的初始化参数文件类型.这是一个可以写入和读取的二进制文件 ...

  7. Oracle参数文件—pfile与spfile

    oracle的参数文件:pfile和spfile 1.pfile和spfile       Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件.它们是在数据库实例启动时候加载的, ...

  8. oracle参数文件spfile和pfile

    一.参数文件说明 PFILE(Initialiazation Parameter Files)初始化参数文件,是文本文件,可直使用文本编辑器查看.如果数据库使用的是初始化参数文件PFILE,要想永久修 ...

  9. sql server 备份与恢复系列六 文件组备份与还原

    一. 概述 文件备份是指备份一个或多个文件或文件组中的所有数据.使用文件备份能够只还原损坏的文件,而不用还原数据库的其余部份,从而加快恢复速度.例如,如果数据库由位于不同磁盘上的若干文件组成,在其中一 ...

随机推荐

  1. scrapy 运行时报错 No module named _sqlite3

    新服务器上运行scrapy时报错 exceptions.ImportError: No module named _sqlite3 原因 由于新的环境缺少sqlite的依赖,编译python3是虽然不 ...

  2. 如何检测指定的Windows服务是否启动

    在项目中,特别是安装项目中我们经常要判断一些服务是否启动(判断SQL Server是否启动最常见),在.net中我们如何判断指定的Windows服务是否启动呢?首先要知道Windows服务的显示名称, ...

  3. SQL小操作

    用string.Format格式化参数 string sqlCmd = string.Format("select NO from [dbo].[SendAcerData] where BA ...

  4. IDEA部署Spring-boot到Docker容器

    一.准备工作 idea安装Docker插件 centos7系统安装docker 二.打开docker远程端口 1. 编辑docker.service文件 vim /usr/lib/systemd/sy ...

  5. thinkPHP模型定义

    批量新增 ArrayAccess类的属性当做数组访问 插入语句 这段代码说明,User继承的Model类的isupdate属性默认是isupdate,而User::get(1)把这一字段属性更新为tr ...

  6. CodeForces-585B(BFS)

    链接: https://vjudge.net/problem/CodeForces-585B 题意: The mobile application store has a new game calle ...

  7. 【NOIP2016提高A组模拟8.15】Throw

    题目 分析 首先对于一个状态(a,b,c),假定a<=b<=c: 现在考虑一下这个状态,的转移方案: \[1,中间向两边跳(a,b,c)-->(a*2-b,a,c).(a,b,c)- ...

  8. C#.Net集成Bartender条码打印,VS调试运行可以打印,发布到IIS运行打印报错

    C#.Net集成Bartender条码打印,VS调试运行可以打印,发布到IIS运行打印报错 问题原因: 问题出现在iis账户权限. 解决方法: iis默认是用network service这个账户去执 ...

  9. docker开启远程tcp监听端口

    linux 测试成功 cat > /etc/systemd/system/docker.service.d/tcp.conf <<EOF [Service] ExecStart= E ...

  10. SpringApplication.run 做了哪些事?

    SpringApplication.run一共做了两件事,分别是 创建SpringApplication对象 利用创建好的SpringApplication对象,调用run方法论 结论: 面试官: 我 ...