DBLOG
» WTF
Toggle navigation
DBLOG
主页
1、用户
2、各种方案
3、备份恢复
4、表空间相关
5、OGG
6、文件管理
7、常见故障分析
8、DG
9、集群相关
About Me
归档
标签
3、rman物理备份
无
2025-08-29 00:07:55
2
0
0
admin
[TOC] ### 数据库备份与恢复策略 Oracle数据库通过RMAN(Recovery Manager)来实现备份和恢复。下面是一个基于周末全备、周一至周六增量备份的备份脚本,以及相应的恢复步骤。 ### 备份脚本 该脚本每天运行,周日执行全备(Level 0),周一至周六执行增量备份(Level 1)。备份策略为:保存两次完整备份和12天的增量备份,共计14天的备份。 ```bash #!/bin/bash # 获取当前星期几 wk=$(date +%w) level=1 # 根据星期几选择备份级别 case $wk in 0) level=0;; *) level=1;; esac echo "The current week is $wk, you should be performing RMAN incremental level $level backupset" # 执行RMAN备份 rman target /@mydb trace=/u01/rman/db_$level.log <<EOF run { allocate channel c1 device type disk; allocate channel c2 device type disk; allocate channel c3 device type disk; allocate channel c4 device type disk; # 备份数据库和归档日志,并删除归档日志 backup as compressed backupset incremental level $level database format '/u01/rman/db_%U_%Y_%m_%d.bak' plus archivelog format '/u01/rman/arc_%U_%Y_%m_%d.bak' delete input; # 交叉检查备份 crosscheck backup; # 释放通道 release channel c1; release channel c2; release channel c3; release channel c4; # 备份SPFILE和控制文件 backup spfile format '/u01/rman/spfile_%U_%Y_%m_%d.bak'; backup current controlfile format '/u01/rman/ctl_%U_%Y_%m_%d.bak'; # 删除过期和过时备份 delete noprompt obsolete; delete noprompt expired backup; } exit; EOF ``` **注**: 如果自动备份程序非周日部署,第一次需要手动执行一个全库备份。 ### 恢复数据库步骤 假设目标库已经安装了数据库软件,但未创建数据库实例,以下是恢复数据库的步骤: #### 1. 安装数据库(不建实例) - 安装数据库软件,但不创建数据库实例。 #### 2. RMAN备份数据库和归档日志,包括SPFILE、控制文件、相关目录 - 使用上面的备份脚本,确保有最新的备份文件。 #### 3. 将备份文件传输到目标端 - 使用`scp`或其他传输工具将备份文件传输到目标端。 #### 4. 目标端库以备份的SPFILE启动 ```bash rman target / RMAN> startup nomount; RMAN> restore spfile from '/path_to_backup/spfile_backup.bak'; RMAN> shutdown immediate; RMAN> startup nomount; ``` #### 5. 从备份中恢复控制文件,启动到MOUNT状态 ```bash RMAN> restore controlfile from '/path_to_backup/controlfile_backup.bak'; RMAN> alter database mount; ``` #### 6. 从备份中还原和恢复数据库 ```bash RMAN> restore database; RMAN> recover database; ``` #### 7. 创建`listener.ora`文件并启动监听程序 - 创建`listener.ora`文件,配置监听参数。 - 启动监听程序: ```bash lsnrctl start ``` #### 8. 重启数据库,确认并检查日志文件 ```bash RMAN> alter database open resetlogs; ``` - 检查数据库日志文件,确保没有错误。 #### 9. 备份数据库 - 数据库恢复后,建议立即进行一次全库备份: ```bash rman target / RMAN> backup database format '/u01/rman/db_full_%U.bak'; RMAN> backup spfile format '/u01/rman/spfile_full ``` 抱歉,让我们继续完成恢复数据库的步骤。 #### 10. 检查数据库状态和日志文件 - 确认数据库已成功打开,并且没有错误日志。 ```bash sqlplus / as sysdba SQL> select status from v$instance; SQL> exit; ``` -- 检查告警日志和数据库日志文件,确保没有错误或警告。 #### 11. 开启归档模式(如果未开启) - 如果数据库未开启归档模式,需要先开启: ```bash sqlplus / as sysdba SQL> shutdown immediate; SQL> startup mount; SQL> alter database archivelog; SQL> alter database open; SQL> archive log list; SQL> exit; ```
上一篇:
3、oracle 通过dblink访问mysql
下一篇:
3、内存占用过高,缓存不释放
0
赞
2 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网