基于catalog 创建RMAN存储脚本

本文介绍如何使用RMAN创建本地和全局备份脚本,并演示了脚本的创建、更新、执行和删除等操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--==============================

-- 基于catalog 创建RMAN存储脚本

--==============================

 

    简言之,将rman的备份恢复命令写成脚本并保存在恢复目录内,恢复目录内的脚本可用性及通用性高于基于文件系统的脚本。

客户端只要能够登录到RMAN恢复目录,则这些脚本可用,尤其对于global脚本,可以被任意注册的数据库调度。

 

一、脚本的分类

    local : rman连接的目标数据库下创建的脚本,此类脚本仅仅适用于当前目标数据库。即是针对特定的数据库创建的rman脚本

    global : 能够在恢复目录注册的任意目标数据库中执行

 

二、创建脚本   

    --创建全局备份脚本 

        RMAN> create global script global_full_backup

        2> comment 'A script for full backup to be used with any database'

        3> {

        4>   backup database

        5>   plus archivelog

        6>   tag='Whole_db_bk';

        7>   delete obsolete;

        8> }

 

        created global script global_full_backup   

   

    --创建本地备份脚本 

        RMAN> create script full_backup

        2> comment 'A script for full backup to be used with current target database'

        3> {

        4>   backup as compressed backupset

        5>   database plus archivelog delete input

        6>   tag='Whole_db_bk';

        7>   delete obsolete;

        8> }

 

        created script full_backup

 

    --从文本文件创建脚本

        [oracle@oradb bk]$ cat backup_ctl_spfile   --注意文本文件必须以"{" 开头,以"}" 结尾

        {

          allocate channel ch1 device type disk;

          backup current controlfile

          tag='ctl_spfile'

          format '/u01/oracle/bk/rmbk/ctl_spfile_%d_%U';

          release channel ch1;

        }

 

        RMAN> create script ctl_spfile_bk from file '/u01/oracle/bk/rmbk/backup_ctl_spfile';

 

        script commands will be loaded from file /u01/oracle/bk/rmbk/backup_ctl_spfile

        created script ctl_spfile_bk

 

三、查看脚本的内容

    print [global] script script_name

    print [global] script script_name to file '<dir>'   --RMAN存储脚本转换到文件系统可读文件

 

    RMAN> print script ctl_spfile_bk;

 

    printing stored script: ctl_spfile_bk

    {

      allocate channel ch1 device type disk;

      backup current controlfile

      tag='ctl_spfile'

      format '/u01/oracle/bk/rmbk/ctl_spfile_%d_%U';

      release channel ch1;

    }

 

    RMAN> print script ctl_spfile_bk to file '/u01/oracle/bk/rmbk/backup_ctl_spfile2';

 

    script ctl_spfile_bk written to file /u01/oracle/bk/rmbk/backup_ctl_spfile2

 

    查看当前恢复目录内的脚本

        list [global | all] script names

       

        RMAN> list script names;

 

        List of Stored Scripts in Recovery Catalog

 

            Scripts of Target Database ORCL

 

               Script Name

               Description

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

               ctl_spfile_bk

 

               full_backup

               A script for full backup to be used with current target database

 

            Global Scripts

 

               Script Name

               Description

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

               global_full_backup

               A script for full backup to be used with any database

 

四、更新脚本

    replace [global] script scrip_name {....}

    replace [global] script script_name from file '<dir>'  --从文件更新脚本

 

    RMAN> replace global script global_full_backup

    2> {

    3>   backup as compressed backupset database plus archivelog

    4>   tag='whole_db_bk';

    5>   delete obsolete;

    6> }

 

    replaced global script global_full_backup

   

五、执行脚本

    方法:RUN { EXECUTE [global] SCRIPT script_name; }

    rman客户端直接执行恢复目录内的脚本

        rman target sys/redhat@orcl catalog rman/rman@asmdb script 'script_name';

 

    RMAN> run { execute global script global_full_backup;}

 

    executing global script: global_full_backup

 

六、删除脚本

    delete [global] script script_name

   

    RMAN> delete script ctl_spfile_bk;

 

    deleted script: ctl_spfile_bk

 

七、其它

    注意:使用EXECUTE SCRIPT, DELETE SCRIPT ,PRINT SCRIPT等命令时,如果一个本地的脚本未找到,则寻找全局的脚本来代替。

    因此应当注意命名规范,尽可能的不使用重名的脚本名,当DELETE SCRIPT 找不到本地脚本,而找到同样名字的全局脚本,则全局

    脚本被删除

 

八、更多参考   

有关基于用户管理的备份和备份恢复的概念请参考:

        Oracle 冷备份

        Oracle 热备份

        Oracle 备份恢复概念

        Oracle 实例恢复

        Oracle 基于用户管理恢复的处理(详细描述了介质恢复及其处理)

       

    有关RMAN的恢复与管理请参考:

        RMAN 概述及其体系结构

        RMAN 配置、监控与管理

        RMAN 备份详解

        RMAN 还原与恢复

       

    有关Oracle体系结构请参考:

        Oracle 实例和Oracle数据库(Oracle体系结构)

        Oracle 表空间与数据文件

        Oracle 密码文件

        Oracle 参数文件

Oracle 数据库实例启动关闭过程

        Oracle 联机重做日志文件(ONLINE LOG FILE)

        Oracle 控制文件(CONTROLFILE)

        Oracle 归档日志

 

### Oracle RMAN备份脚本因权限问题导致无法创建文件的解决方案 当RMAN在执行备份操作时遇到“no AUTOBACKUP found or specified handle is not a valid copy or piece”的错误提示,通常是由目标文件的权限不正确引起的。在这种情况下,需要确认并调整相关文件和目录的权限设置。 #### 1. 确认操作系统级别的权限配置 确保数据库运行的操作系统用户(通常是`oracle`)拥有对备份路径及其子目录的读写权限。可以通过以下命令检查当前用户的组归属以及文件夹的权限: ```bash ls -ld /path/to/backup/directory/ groups oracle ``` 如果发现权限不符合要求,则可以使用`chown`和`chmod`命令来更改所有权和访问权限。例如: ```bash sudo chown -R oracle:oinstall /path/to/backup/directory/ sudo chmod -R 700 /path/to/backup/directory/ ``` 上述命令将指定目录的所有权赋予`oracle`用户,并将其所属组设为`oinstall`[^1]。 #### 2. 验证环境变量配置 为了使RMAN能够正常工作,还需要验证几个重要的环境变量是否已正确定义。这些变量包括但不限于`ORACLE_SID`, `ORACLE_HOME`, 和`PATH`等。此外,在涉及基于时间的备份与恢复场景下,建议额外设定`NLS_DATE_FORMAT`以便于解析日期字符串[^3]。 #### 3. 查询现有备份存储位置 通过SQL*Plus连接到实例后,可以利用一系列视图查询现有的参数、控制文件和其他重要组件的位置信息。这对于定位潜在的问题区域非常有帮助。具体查询语句如下所示: ```sql -- 查看SPFILE所在位置 show parameter spfile; -- 获取所有控制文件的名字列表 select * from v$controlfile; -- 列举所有的数据文件名称 select file_name from dba_data_files; -- 显示联机重做日志成员详情 select * from v$logfile; -- 打印归档日志目的地及相关属性 archive log list; ``` 默认情况下,归档日志会被放置在一个称为闪回区的地方,其典型路径类似于`/data/oracle/flash_recovery_area/<SID>/archivelog/<date>`[^4]。 #### 4. 使用Recovery Catalog增强管理能力 考虑到长期维护的需求,推荐建立独立的恢复目录(recovery catalog),从而减少对控制文件的压力。这不仅有助于延长元数据保留期限,还能提高整体性能表现[^5]。 --- ### 总结 综上所述,针对Oracle RMAN备份过程中由于权限不足而引发的文件创建失败问题,应着重关注以下几个方面:一是核实Linux端口上的实际许可状况;二是审查必要的shell profile定义项;三是借助内置工具获取详尽的目标地址清单;四是考虑引入专门设计用于辅助此类任务的数据仓库设施——即所谓的recovery catalogs。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风智语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值