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

Oracle12c RMAN实战(oracle rdbms)

sinye56 2024-09-19 02:26 21 浏览 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下的文件还是需要手动维护的建议删除参考上面第一条

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&amp;配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: