在 Linux 下对 Oracle 数据库进行备份,常见方式有以下几种,按使用频率和重要性从高到低说明,并附配置示例。
ARCHIVELOG 模式(生产环境必须)sysdba 权限用户查看归档模式:
sqlplus / as sysdba
SQL> archive log list;
如果不是 ARCHIVELOG,需开启(需重启):
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
mkdir -p /u01/backup/rman
chown oracle:oinstall /u01/backup/rman
rman target /
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP DATABASE
FORMAT '/u01/backup/rman/full_%d_%T_%s.bak';
BACKUP ARCHIVELOG ALL
FORMAT '/u01/backup/rman/arch_%d_%T_%s.bak';
DELETE INPUT;
RELEASE CHANNEL c1;
}
crontab -e
示例(每天凌晨 2 点):
0 2 * * * /home/oracle/rman_backup.sh >> /u01/backup/rman/rman.log 2>&1
rman_backup.sh 示例:
#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
rman target / <<EOF
BACKUP DATABASE PLUS ARCHIVELOG;
EOF
适合 跨版本迁移、表级备份。
sqlplus / as sysdba
CREATE DIRECTORY dp_dir AS '/u01/backup/dp';
GRANT READ, WRITE ON DIRECTORY dp_dir TO scott;
mkdir -p /u01/backup/dp
chown oracle:oinstall /u01/backup/dp
expdp system/password FULL=Y DIRECTORY=dp_dir DUMPFILE=full_%U.dmp LOGFILE=expdp.log
impdp system/password FULL=Y DIRECTORY=dp_dir DUMPFILE=full_01.dmp
适合测试环境:
sqlplus / as sysdba
shutdown immediate;
拷贝:
$ORACLE_BASE/oradata)spfile / pfile)cp -r /u01/app/oracle/oradata /u01/backup/cold/
启动数据库:
startup;
| 类型 | 频率 | 说明 |
|---|---|---|
| RMAN 全备 | 每周 | 基础 |
| RMAN 增量 | 每天 | 减少空间 |
| 归档日志 | 实时 | 必须 |
| expdp | 月/变更前 | 逻辑保障 |
如果你能提供:
我可以给你一套 定制备份方案。