如何编写获取远程Oracle数据库备份的脚本

问题描述 投票:0回答:1

我有一个带 IP 的 Oracle 数据库 19c,x.x.x.a,其中有很多重要的表。我想备份它并将其保存在另一个具有 IP 的系统上,x.x.x.b。我在 x.x.x.b 系统上执行了此操作:

  • 安装一个Oracle数据库19c,它不会被用来拥有自己的数据。

  • 安装Oracle数据库客户端19c并在~/.bashrc中设置ORACLE_HOME

  • 设置JAVA_HOME

  • 最后,使用此脚本在 x.x.x.a:

    上获取 Oracle 数据库的备份
    #!/bin/bash
    export ORACLE_HOME=/home/oracle/oracle_database_client
    export PATH=$ORACLE_HOME/bin:$PATH
    rman target sys/******@//x.x.x.a:1521/ORCL
    
    BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG FORMAT '/home/oracle/backup_oracle_process/backup_files/%U';
    exit;
    

我更喜欢以清晰的方式使用脚本进行备份,并使用 crontab 中的脚本每周运行一次。我向脚本backup_script.sh授予了 +x 权限,并运行它。但不幸的是,它停止在 RMAN> 提示符上,退出时显示此错误消息:

找不到备份命令。

此外,我阅读了有关该主题的所有问题,如下所示:

https://stackoverflow.com/a/72397334/6640504

但他们都没有做到我想要的。

您能指导我如何解决这个问题并有一个脚本来备份 Oracle 数据库吗?

非常感谢任何帮助。

database-administration oracle19c
1个回答
0
投票

您刚刚启动 RMAN,并未向其传递任何命令。然后,当您退出 RMAN 时,您将尝试从命令提示符(而不是在 RMAN 中)运行 RMAN 命令。

将 RMAN 备份命令放入文件中:

BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG FORMAT '/home/oracle/backup_oracle_process/backup_files/%U';

然后您的脚本应使用

@filename
传递要执行的命令文件的名称(请参阅 文档):

#!/bin/bash
export ORACLE_HOME=/home/oracle/oracle_database_client
export PATH=$ORACLE_HOME/bin:$PATH
rman target sys/******@//x.x.x.a:1521/ORCL @your_rman_backup_script_file_name

其中

@your_rman_backup_script_file_name
是您刚刚创建的包含备份命令的文件的名称。

© www.soinside.com 2019 - 2024. All rights reserved.