百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Oracle12c RMAN实战(oracle rman详解)

mhr18 2024-09-21 19:02 99 浏览 0 评论

对全部生产库都应进行定时备份,RAC进入RMAN的账户和命令,数据备份和归档备份只需要在一台服务器上做即可

  • 第一步export ORACLE_SID=当前数据库实例
  • 第二步 RMAN target /

查看RMAN配置信息

show all;

SQL下执行语句,查询RMAN中的非默认值

select * from v$rman_configuration;  

具体配置如下:

1、configure retention policy to redundancy 1;
舍弃备份原则,共三种,分别是:
(1)CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。
(2)CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。一般采用的方法,默认值为1,可以设置为5。
(3)CONFIGURE RETENTION POLICY TO NONE;
不需要保持策略,clear将恢复回默认的保持策略。
 
2、CONFIGURE BACKUP OPTIMIZATION OFF;
默认为关闭,如果打开,rman将对备份的数据文件及归档等文件进行一种优化的算法。
 
3、Configure default device type to disk;
默认值是硬盘,是指定所有I/O操作的设备类型是硬盘或者磁带(SBT)。
 
4、CONFIGURE CONTROLFILE AUTOBACKUP OFF;
强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份,默认值为关闭。这样在控制文件和catalog丢失后,控制文件仍然可以恢复。
 
5、CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
配置控制文件的备份路径和备份格式
 
6、CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
配置数据库设备类型的并行度,默认为1。
 
7.CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
配置每次备份的copy数量。
 
8、CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
配置归档日志存放的设备类型。
 
9、configure maxsetsize 大小;
配置备份集的最大尺寸,默认值是unlimited,单位bytes,K,M,G;
 
10、CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:ORACLE…SNCFTEST.ORA';
配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性。
 
11、CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'C:...%d_DB_%u_%s_%p';
配置备份文件的备份路径和备份格式。
 
12、CONFIGURE CHANNEL DISK CLEAR;
用于清除上面的信道配置。
 
13、CONFIGURE EXCLUDE FOR TABLESPACE [CLEAR];
不备份指定的表空间到备份集中,对只读表空间是非常有用的。
 
14、configure channel device type disk format 'e:\backupb%d_db_%u';
将备份文件存储到e:\backupb,后面的%d_db_%u是存储格式。
 
15、configure controlfile autobackup format for device type disk to 'e:\backupcontrol%F';
指定control file存储在另一个路径:e:\backupcontrol,后面的%F是存储格式。
  • 第三步

操作完成后退出RMAN命令

1. RMAN 参数配置

注意:需要在RMAN下执行以下语句

开启控件文件自动备份:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

启用备份优化

CONFIGURE BACKUP OPTIMIZATION ON;

2. RMAN备份规则

对数据库进行三种类型的备份:

  1. 数据库全备:每周日进行全量备份
  2. 数据库增量备份:每周一至周六进行增量备份
  3. 归档日志备份:每两个小时进行一次,删除已备份的文件

备份日志查看,查找关键字 databak arvebak内容

cat /var/log/cron

3. RMAN备份脚本文件

通过vi命令在指定的目录下创建相应的sh文件,建议地址(/home/oracle)下,以及可执行权限

3.1 创建文件

cd /home/oracle
vi databak.sh
拷贝相应的备份内容
cd /home/oracle
vi arvebak.sh
拷贝相应的备份内容

3.2 授权执行文件

chmod +x /home/oralce/databak.sh
chmod +x /home/oralce/arvebak.sh
权限查看(可以查看文件或者文件夹)
ls -l /home/oralce/databak.sh
ls -l /home/oralce/arvebak.sh

手动执行脚本(oracle账户下)对应定时脚本0周天备份 1非周天备份/home/oralce/databak.sh 0/1

4. RMAN 定时任务部署

RMAN 定时任务采用cron 设置,一般是在Oracle用户下设置。如下示例:

[oracle@SG-SR-RAC-02 ~]$ crontab -l
10 22 * * 0             /home/oracle/scripts/probasic/databak.sh 0    
10 22 * * 1,2,3,4,5,6   /home/oracle/scripts/probasic/databak.sh 1
10 0-23/2 * * *       /home/oracle/scripts/probasic/arvebak.sh

格式:分-时-日-月-周 *代表全部

0/1 命令文本代表策略 0全备份 1增量备份

0代表星期天

1,2,3,4,5,6代表星期一到星期六

0-23/2代表每隔2个小时

crontab -e 编辑定时任务

5. RMAN备份配置

配置位置:/u01/app/oracle/product/12.2.0/db/network/admin/tnsname.ora文件

RAC1和RAC2上都可以做,也可以只在备份的服务器上做

注意:实例名称和备份中一致 HOST配置当前机器的IP 实例保持一致


6. Appendix【附件】

Appendix 1 —数据库全备与增量备份脚本样例

注意点

  1. ORACLE_SID数据库实例
配置环境对应的数据库实例 比如:实例名当前RAC机器上的实例名 单机就是具体的实例名
  1. ORACLE_BASE实例基地址
在ORACLE账户下执行
env | grep ORACLE 
查看SID BASE HOME
env | grep SID
查看SID
一般oracle RAC路径是 /u01/app/oracle
  1. ORACLE_HOME实例全地址
一般oracle RAC路径是后面的db根据具体地址调整 /u01/app/oracle/product/12.2.0/db
  1. NLS_LANG语言环境命令
sqlplus / as sysdba
show parameter NLS_LANG
  1. BACKUP_PATH备份路径
创建脚本对应目录名称以及给oracle账户授权
[root@rac741 ~]# mkdir -p /data/rmanbackup/probasic
[root@rac741 ~]# chown oracle:oinstall /data/rmanbackup/probasic
archive log list 找到存储的盘信息
  1. 备份使用权限高的用户
sys或者system+密码+实例(rac1上的实例名)
sys/angola2019@PRO_BASIC2

以下脚本中的环境变量与目录等参数,需要按实际情况修改。

#!/bin/bash   
export ORACLE_SID=实例名
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
  

LEVEL=$@    
DATE=`date +%w`    
DATE_2=`date +%Y%m%d`    
BACKUP_PATH="/data/rmanbackup/probasic"    
BIN=$ORACLE_HOME/bin

if [ $# != 1 ]; then   
echo "usage: rman_bak.sh n    
where n is the rman backup level(Only 0,1 is permitted)."    
exit 1    
fi

if [ $@ -ne 0 -a $@ -ne 1 ]; then   
echo "usage: rman_bak.sh n    
where n is the rman backup level(Only 0,1 is permitted)."    
exit 2    
fi

if [[ $LEVEL = 0 ]]; then   
$BIN/rman log $BACKUP_PATH/data.$ORACLE_SID.$LEVEL.$DATE_2.log <<EOF
connect target
run{   
allocate channel c2 device type disk connect '管理员账户/管理员密码@实例名';  
crosscheck backupset of database;    
backup incremental level $LEVEL database;    
backup spfile tag='spfile';    
backup current controlfile tag='control';    
delete noprompt expired backupset of database;    
delete noprompt obsolete device type disk;    
release channel c2;    
}    
exit;    
EOF

else

$BIN/rman log $BACKUP_PATH/logs/data.$ORACLE_SID.$LEVEL.$DATE_2.log <<EOF
connect target
run{   
allocate channel c2 device type disk connect '管理员账户/管理员密码@实例名';  
crosscheck backupset of database ;    
backup incremental level $LEVEL database;    
backup spfile tag='spfile';    
backup current controlfile tag='control';    
delete noprompt expired backupset of database ;    
delete noprompt obsolete ;    
release channel c2;    
}

exit;   
EOF

fi

Appendix 2—数据库归档日志备份脚本样例

注意点

  1. ORACLE_SID数据库实例
配置环境对应的数据库实例 比如:实例名
  1. ORACLE_BASE实例基地址
一般oracle RAC路径是 /u01/app/oracle
  1. ORACLE_HOME实例全地址
一般oracle RAC路径是后面的db根据具体地址调整 /u01/app/oracle/product/12.2.0/db
  1. NLS_LANG语言环境命令
sqlplus / as sysdba
show parameter NLS_LANG
  1. BACKUP_PATH备份路径
备注:这里是本地备份策略位置(/home/oracle)不要弄错
  1. 备份使用权限高的用户
sys或者system+密码+实例(rac1上的实例名)
管理账户名/管理账户密码@实例名

以下脚本中的环境变量与目录等参数,需要按实际情况修改。

#!/bin/bash   
export ORACLE_SID=实例名
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
  

LEVEL=$@    
DATE=`date +%w`    
DATE_2=`date +%Y%m%d`    
BACKUP_PATH="/home/oracle"    
BIN=$ORACLE_HOME/bin


$BIN/rman log $BACKUP_PATH/logs/arve.$ORACLE_SID.$DATE_2.log <<EOF
connect target
run{    
allocate channel c2 device type disk connect '管理账户名/管理账户密码@实例';  
crosscheck backupset of archivelog all;    
backup archivelog all;    
backup spfile tag='spfile';
backup current controlfile tag='control';
release channel c2;
report obsolete;
delete noprompt expired backupset of archivelog all;    
delete noprompt obsolete device type disk;
delete noprompt archivelog all completed before 'sysdate-7'; 
}

exit;   
EOF

6. 取消定时任务

注释定时任务文件中的命令即可

[oracle@SG-SR-RAC-02 ~]$ crontab -e
# 10 22 * * 0             /home/oracle/scripts/probasic/databak.sh 0    
# 10 22 * * 1,2,3,4,5,6   /home/oracle/scripts/probasic/databak.sh 1
# 10 0-23/2 * * *       /home/oracle/scripts/probasic/arvebak.sh

7. 命令支持

开启归档日志

RAC1和RAC2同时以下操作

su - oracle
export ORACLE_SID=当前实例
echo $ORACLE_SID
sqlplus /nolog
conn 账户/密码 as sysdba;
archive log list
shutdown immediate

RAC1操作

startup mount;
alter database archivelog;
alter database open;
archive log list

RAC2操作

startup;
archive log list

RMAN操作

su - oracle
export ORACLE_SID=当前实例
echo $ORACLE_SID

rman在oracle账户首先在对应的实例然后下输入rman target /数据库手动备份

backup database;

归档手动备份

backup archivelog all;

backupset列表查看

list backup;
list backup of database;
list backup of archivelog all;
list backup summary;
简述可用的备份(TY: B代表备份, LV: F代表全备fullbackup, A表示 Archivelog, 0,1,2 表示备份级别, S表示状态, A表示available可用, X表示expried过期)。

根据序列删除backupset中的内容

delete backupset 序列号;

ASMCMD操作

asmcmd在oracle账户下输入asmcmd

ls
cd 实例名ASM对应网盘名称(实例名称)
ls
cd backupset;(RMAN的数据备份和归档备份位置)
cd ..
cd archivelog;(归档日志位置)

注意

  • 所有的删除动作在数据备份和归档备份后操作,建议删除有完整备份之前的内容
  • asmcmd下archivelog下的文件还是需要手动维护的建议删除参考上面第一条

相关推荐

一文带您了解数据库的行列之争:行式与列式存储的异同

数据库存储格式是数据库管理系统中一个至关重要的方面,它直接影响到数据的组织和检索效率。在数据库中,有两种主要的存储格式,即行式存储和列式存储。这两者采用截然不同的方法来组织和存储数据,各自具有一系列优...

NL2SQL(三)开源项目怎么选:talk is cheap, show me the code!

老规矩,先看效果下面的demo来自试用的SuperSonic,将会在下面详细介绍:大模型时代Text-to-SQL特点随着基于LLM技术的发展,RAG/AIAgent/Fine...

JDK25长期支持版九月降临:18项王炸功能全解析

Java要放大招啦!9月份推出的JDK25长期支持版已经锁定18个超能力,从稳定值到结构化并发,还有Linux系统下的"预知未来"性能分析!下面我用打游戏的术语给你们掰扯明白:1、飞...

OceanBase 推出单机版 高度兼容MySQL和Oracle

【环球网科技综合报道】3月27日,独立数据库厂商OceanBase正式发布单机版产品。据悉,这一产品基于自主研发的单机分布式一体化架构设计,具备极简数据库架构和高度兼容性,为中小规模业务提供兼具性能与...

黄远邦:应对7月1日闰秒对Oracle数据库影响

由于今年7月1日全世界会多出一秒,这可能对时间敏感的IT系统造成较大影响。中亦科技数据库团队对此问题做了深入的研究,并对用户系统提出了相应的解决方法及建议。中亦科技数据库产品总监黄远邦认为,闰秒调整会...

MySQL数据库密码忘记了,怎么办?(mysql 数据库密码)

#头条创作挑战赛#MySQL数据库密码忘记了且没有其他可以修改账号密码的账户时怎么办呢?登录MySQL,密码输入错误/*密码错误,报如下错误*/[root@TESTDB~]#mysql-u...

Chinese AI Talent in Spotlight as Nvidia and Meta Escalate Talent War

OntherightisBanghuaZhu,ChiefResearchScientistatNVIDIATMTPOST--SiliconValley’stoptech...

用Cursor开启JAVA+AI生涯(javascirpt怎么开启)

Cursor是基于VSCode开发的一款编辑器,支持多种语言的开发编辑。与传统的开发工具相比,它有多种优势:与AI无缝集成,响应速度快,占用内存小。但很多同学在"起步"过程中遇到了...

毕业十年了,自从做了开发用了很多软件,但距离写开发工具还很远

办公系统类:办公软件Word、Excel、PowerPoint三大必备技能+腾讯/金山在线文档解压缩操作:7-zip/winrar文件文本处理:Notepad++(文本编辑器正则表达式超级好...

盘点Java中最没用的知识⑤:这3个老古董你还在代码里“考古”?

一、Stack类:“继承Vector”的历史bug,为何成了性能拖油瓶?你是不是在学Java集合时,老师说过“栈结构用Stack类”?是不是在老代码里见过"newStack<>(...

Gemini 2.5 Pro 0506发布,编程最强大模型, 碾压 Claude3.7 sonnent

一、Gemini2.5Pro(I/Oedition)发布1、为何叫I/Oedition?谷歌史上最强编程模型Gemini2.5Pro(I/Oedition)发布,具体型号是Gemin...

如何让无聊变得有趣(附本人大量美图)

文/图:金冬成在这条长300公里的公路上,我已经来回往返了无数次。3小时车程,一个人,想想都是多么无聊的一件事。其实,人生道路上,类似这种无聊的事情有很多很多。无聊的事情、枯燥的工作,往往让我们容易失...

Oracle 推出 Java 24,增强 AI 支持和后量子加密

导读:Oracle宣布正式发布Java24,该语言增加了几个新功能,例如StreamGatherersAPI和Class-FileAPI的可用性,以及专门为AI推理和量子安全设计...

公司ERP突然变慢?“索引重建”这颗“药”可不能随便吃!

各位老板、IT小哥、财务小姐姐,有没有遇到过公司ERP系统突然卡顿得像“老爷车”,点个按钮半天没反应,急得直跺脚?这时候,可能有人会跳出来说:“我知道,重建一下数据库索引就好了!”听起来像个“神操作”...

基于Java实现,支持在线发布API接口读取数据库,有哪些工具?

基于java实现,不需要编辑就能发布api接口的,有哪些工具、平台?还能一键发布、快速授权和开放提供给第三方请求调用接口的解决方案。架构方案设计:以下是一些基于Java实现的无需编辑或只需少量编辑...

取消回复欢迎 发表评论: