在 Linux 上备份 Oracle 数据库,常见做法有以下几种,按推荐程度从高到低说明,并给出具体命令示例。
RMAN(Recovery Manager) 是 Oracle 官方备份工具,支持全量、增量、归档日志备份。
su - oracle
进入 SQL*Plus 确认数据库处于 ARCHIVELOG 模式(生产环境必须):
sqlplus / as sysdba
SQL> archive log list;
如果不是:
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
rman target /
BACKUP DATABASE PLUS ARCHIVELOG;
默认备份路径在:
$ORACLE_HOME/dbs 或快速恢复区(FRA)
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/oracle/%U';
BACKUP DATABASE PLUS ARCHIVELOG;
BACKUP CURRENT CONTROLFILE;
适合跨版本迁移、表级备份。
CREATE DIRECTORY dump_dir AS '/backup/oracle';
GRANT READ, WRITE ON DIRECTORY dump_dir TO system;
expdp system/password FULL=Y DIRECTORY=dump_dir DUMPFILE=full_%U.dmp LOGFILE=expdp.log
expdp system/password SCHEMAS=scott DIRECTORY=dump_dir DUMPFILE=scott.dmp
数据库必须关闭
shutdown immediate;
复制以下文件:
$ORACLE_BASE/oradata)cp -r /u01/app/oracle/oradata /backup/oracle/
crontab -e
0 2 * * * /home/oracle/rman_backup.sh
rman_backup.sh 示例:
#!/bin/bash
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/19c
$ORACLE_HOME/bin/rman target / <<EOF
BACKUP DATABASE PLUS ARCHIVELOG;
EOF
你可以告诉我:
我可以给你完整可执行的备份方案。