我有一个带 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 数据库吗?
非常感谢任何帮助。
您刚刚启动 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
是您刚刚创建的包含备份命令的文件的名称。