Oracle-Rman对接华为云OBS进行数据库备份恢复指南
1 概述
1.1 背景介绍
当前众多客户需要基于云存储实现低成本的数据库备份和恢复。而Oracle中的备份模块实现了和云存储的对接,可以很好的解决这个问题;华为云的对象存储是作为云存储可以作为客户数据库备份的存储池,以低成本,高可靠方式实现数据存储。本文讲述了基于oracle的osb模块将oracle数据库备份到华为云存储OBS桶中,以及从华为云OBS桶恢复数据到oracle便于企业对接使用。
1.2 实验测试环境
本文将以Windows 和Linux下 oracle11g 数据库为例进行备份和恢复的演示
测试条件准备如下:
OBS:华为公有云,华南-广州 Region
ECS1:华为公有云,华南-广州 Region,4vCPUs | 8GB | s3.xlarge.2 CentOS 6.9 64bit,Oracle版本:11.2.0.1.0
ECS2:华为公有云,华南-广州 Region,4vCPUs | 8GB | s3.xlarge.2 CentOS 6.9 64bit,Oracle版本:11.2.0.4.0
WIN1:华为公有云,华南-广州 Region,4vCPUs | 8GB | s3.xlarge.2 Windows Server 2008 R2 64bit,Oracle版本:11.2.0.1.0
2 当前设备上备份和恢复数据库(Linux)
说明:本例演示采用了Rracle-Raman默认无并发的设置,如果需要增加数据库备份和恢复的性能,需要设置并发数,具体参考5.3章节。另外,本例采用指定桶的方式,即将备份数据上传到指定的桶中,备份也可采用不指定桶的方式,具体请参考5.4章节。
2.1 创建表和插入数据
说明:在正常情况下,客户使用时可以略过本节,本节创建表和数据只为举例说明使用。
前提:
Oracle数据库安装完成。
创建表和插入数据过程:
1. 切换到oracle用户
su - oracle
2. 进入数据库控制台,如果数据库还没有启动则需要执行 startup 命令启动数据库
sqlplus / as sysdba
show parameter checkpoint
3. 创建表和插入数据,效果如下,其中test为新建的表
select * from test
2.2 oracle安装osb模块
1. 获取osb模块
此插件包可以从oracle官网获取最新版本(参考链接:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/rcmrf/oracle-secure-backup-osb-cloud-module.html#GUID-964AADD2-3405-4476-8698-E9F2133CB5B7),也可从本文档最后的附录中链接获取。
图中把插件osbws_installer.zip的压缩包放到$ORACLE_HOME/lib目录下并解压
使用命令unzip osbws_installer.zip解压完成后如下图
根据客户自己OBS服务的AK、SK、location和endpoint参数配置,执行OBS插件的安装命令
说明:AK、SK获取参考链接:https://support.huaweicloud.cn/utiltg-obs/obs_11_0004.html;
location、endpoint的获取参考链接:https://developer.huaweicloud.cn/endpoint)
java -jar osbws_install.jar -AWSID 客户AK -AWSKey 客户SK -walletDir $ORACLE_HOME/osbws_wallet -libDir $ORACLE_HOME/lib -location OBS服务的地域 -awsEndPoint OBS服务的endpoint
检查安装结果后进入RMAN进行进行环境配置
cat $ORACLE_HOME/dbs/osboracle.ora
本例采用指定桶备份上传的方式,下图中指定桶obs-oracle-zoudanhong,桶location为cn-south-1。(即使用者需要保证在OBS平台下已经指定名称的桶,且桶区域与上一步OSB配置参数location一致,如果没有这样的桶,可在OBS平台新建一个桶)
2.3 RMAN进行数据库备份到OBS桶
以root用户名密码登录数据库所在设备ECS1后连接RMAN(连接命令rman target /),执行如下命令将数据库备份到OBS桶,其中标红的部分与数据库名有关,根据实际值进行修改。
run {
allocate channel ch1 type
sbt parms='SBT_LIBRARY=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libosbws.so,
SBT_PARMS=(OSB_WS_PFILE=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/osbwsorcl.ora)';
backup channel=ch1 database format='ora_%d_%I_%T_%s_%t_%c_%p.dbf' plus archivelog;
backup channel=ch1 current controlfile format='%d_%I_%T_%s_%t_%c_%p.conf';
backup channel=ch1 spfile format='ora_%d_%I_%T_%s_%t_%c_%p.spf' ;
release channel ch1;
}
执行完成后,登陆OBS控制台,将会看指定桶obs-oracle-zoudanhong中已经生成了备份数据。
2.4 修改数据库数据
说明:本步骤是为了进行数据恢复而做的准备,实际环境运行不需要此步骤
进入数据库查看归档信息:
archive log list;
向原数据库中增加了一条数据b并提交数据
insert into test values('b');
commit;
删除归档数据(由于本机有最新的临时数据,为防止备份后的数据恢复后本地自动添加上最新临时数据,需要手工删除归档;异机恢复时不需要此步骤操作)
2.5 RMAN进行数据库从OBS桶中读取数据进行恢复操作
执行命令关闭数据库
shutdown immediate;
执行命令使数据库至nomount状态
startup nomount;
然后执行如下命令从华为OBS恢复controlfile文件,其中controlfile名称,通过rman命令list backup列举出所有的备份文件(参考4.5章节样例),参考2.3章节中备份命令中的备份文件的命名规则设置,根据自己需要选择需要恢复的文件,记下其Handle名称
run {
allocate channel ch1 type
sbt parms='SBT_LIBRARY=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libosbws.so,
SBT_PARMS=(OSB_WS_PFILE=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/osbwsorcl.ora)';
restore controlfile from 'ORACLE_1880733115_20190507_5_1007656283_1_1.conf';
release channel ch1;
}
切换数据库至mount状态,然后从OBS读取并恢复数据文件。特别注意的是,在执行restore和recover命令后,一定要加入 until sequence xxxx或者until SCN xxxx这个条件,其中 xxxx 为图中执行恢复数据后标红的实际值
alter database mount;
run {
allocate channel ch1 type
sbt parms='SBT_LIBRARY=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libosbws.so,
SBT_PARMS=(OSB_WS_PFILE=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/osbwsorcl.ora)';
restore database from tag='TAG20190507T163102';
recover database from tag='TAG20190507T163102';
release channel ch1;
}
说明:上图中的tag值相当于每个备份的ID号,通过rman命令list backup列举出所有的备份文件(参考4.5章节样例),根据自己需要选择需要恢复的文件(需要确保与前面恢复的控制文件是一致的),记下其tag值
打开数据库,查询2.3中修改后的数据库已经正确恢复到2.1创建时的状态
alter database open resetlogs;
3 当前设备数据库备份后在另一台设备上恢复(Linux)
3.1 创建表和插入数据
参考2.1章节。
3.2 oracle安装osb模块
参考2.2章节。记得要在两台设备上都要安装osb模块。
3.3 RMAN进行数据库备份到OBS桶
这里使用在2.3章节中备份的文件。
3.4 RMAN进行数据库从OBS桶中读取数据进行恢复操作
查看2.3章节中ECS1中数据库的dbid,并登录ECS2设备,将dbid设置到设备ECS2中
select dbid from v$database;
set dbid=XXX;
执行命令关闭数据库
shutdown immediate;
执行命令使数据库至nomount状态
startup nomount;
然后执行如下命令从华为OBS恢复controlfile文件,其中controlfile名称,通过在ECS1上执行rman命令list backup列举出所有的备份文件(参考4.5章节样例),参考2.3章节中备份命令中的备份文件的命名规则设置,根据自己需要选择需要恢复的文件,记下其Handle名称。
其中标红的部分osbwsoracle与数据库名有关,根据ECS2实际值进行修改,注意与ECS1不同。
run {
allocate channel ch1 type
sbt parms='SBT_LIBRARY=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libosbws.so,
SBT_PARMS=(OSB_WS_PFILE=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/osbwsoracle.ora)';
restore controlfile from 'ORACLE_1880733115_20190507_5_1007656283_1_1.conf';
release channel ch1;
}
切换数据库至mount状态,然后从OBS读取并恢复数据文件。特别注意的是,在执行restore和recover命令后,一定要加入 until sequence xxxx或者until SCN xxxx这个条件,其中 xxxx 为图中执行恢复数据后标红的实际值
其中标红的部分osbwsoracle与数据库名有关,根据ECS2实际值进行修改,注意与ECS1不同。
alter database mount;
run {
allocate channel ch1 type
sbt parms='SBT_LIBRARY=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libosbws.so,
SBT_PARMS=(OSB_WS_PFILE=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/osbwsoracle.ora)';
restore database from tag='TAG20190507T163102';
recover database from tag='TAG20190507T163102';
release channel ch1;
}
说明:上图中的tag值相当于每个备份的ID号,通过rman命令list backup列举出所有的备份文件(参考4.5章节样例),根据自己需要选择需要恢复的文件(需要确保与前面恢复的控制文件是一致的),记下其tag值
打开数据库,查询2.3中被删除的数据库,已经正确恢复
alter database open resetlogs;
图中出现的UPGRADE错误,是由于两个设备的数据库版本不一致,相当于从ECS1的11.2.0.1.0的oracle版本恢复到ECS2的11.2.0.4.0的oracle版本,需要执行命令alter database open UPGRADE
4 当前设备上备份和恢复数据库(Windows)
说明:本例演示采用了Rracle-Raman默认无并发的设置,如果需要增加数据库备份和恢复的性能,需要设置并发数,具体参考5.3章节。另外,本例采用指定桶的方式,即将备份数据上传到指定的桶中,备份也可采用不指定桶的方式,具体请参考5.4章节。
4.1 创建表和插入数据
说明:在正常情况下,客户使用时可以略过本节,本节创建表和数据只为举例说明使用。
前提:
Oracle数据库安装完成。
创建表和插入数据过程:
1. oracle数据库安装完成
2. 打开cmd命令行
3. 进入数据库控制台,如果数据库还没有启动则需要执行 startup 命令启动数据库
sqlplus / as sysdba
show parameter checkpoint
4. 创建表和插入数据,效果如下,其中test为新建的表
select * from test
4.2 oracle安装osb模块
1. 设置ORACLE_HOME和ORACLE_SID变量
从注册表中找到这两个变量,记下实际值,并通过set命令设置到cmd中
2. 获取osb模块
此插件包可以从oracle官网获取最新版本(参考链接:https://docs.oracle.com/en/database/oracle/oracle-database/12.2/rcmrf/oracle-secure-backup-osb-cloud-module.html#GUID-964AADD2-3405-4476-8698-E9F2133CB5B7),也可从本文档最后的附录中获取。
图中把插件osbws_installer.zip的压缩包解压
将解压后的文件osbws_install.jar复制到$ORACLE_HOME\lib目录下
根据客户自己OBS服务的AK、SK、location和endpoint参数配置,进入$ORACLE_HOME\lib目录下执行OBS插件的安装命令
说明:AK、SK获取参考链接:https://support.huaweicloud.cn/utiltg-obs/obs_11_0004.html;
location、endpoint的获取参考链接:https://developer.huaweicloud.cn/endpoint)
java -jar osbws_install.jar -AWSID 客户AK -AWSKey 客户SK -walletDir %ORACLE_HOME%\osbws_wallet -libDir %ORACLE_HOME%\BIN -location OBS服务的地域 -awsEndPoint OBS服务的endpoint
本例采用指定桶备份上传的方式,下图中指定桶obs-win-oracle-zoudanhong,桶location为cn-south-1。(即使用者需要保证在OBS平台下已经指定名称的桶,且桶区域与上一步OSB配置参数location一致,如果没有这样的桶,可在OBS平台新建一个桶)
4.3 RMAN进行数据库备份到OBS桶
登录ECS1设备连接RMAN(连接命令rman target /),执行如下命令将数据库备份到OBS桶,其中标红的部分与数据库名有关,根据实际值进行修改。
run {
allocate channel ch1 type
sbt parms='SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\BIN\oraosbws.dll,
SBT_PARMS=(OSB_WS_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\osbwsor.ora)';
backup channel=ch1 database format='ora_%d_%I_%T_%s_%t_%c_%p.dbf' plus archivelog;
backup channel=ch1 current controlfile format='%d_%I_%T_%s_%t_%c_%p.conf';
backup channel=ch1 spfile format='ora_%d_%I_%T_%s_%t_%c_%p.spf' ;
release channel ch1;
}
执行完成后,登陆OBS控制台,将会看指定桶obs-win-oracle-zoudanhong中已经生成了备份数据。
4.4 修改数据库数据
向原数据库中增加了一条数据b并提交数据
insert into test values('b');
commit;
查询下图中的归档数据并删除(由于本机有最新的临时数据,为防止备份后的数据恢复后本地自动添加上最新临时数据,需要手工删除归档;异机恢复时不需要此步骤操作)
4.5 查询备份文件的handle名和TAG值
通过rman命令list backup列举出所有的备份文件,参考2.3中备份命令中的备份设置,根据自己需要选择需要备份的文件(需要确保与前面恢复的控制文件是一致的),记下其Handle名称和TAG值。
4.6 RMAN进行数据库从OBS桶中读取数据进行恢复操作
执行命令使数据库至nomount状态
然后执行如下命令从华为OBS恢复controlfile文件,命令中的标红部分使用实际值,其中controlfile名称参考4.5章节
run {
allocate channel ch1 type
sbt parms='SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\BIN\oraosbws.dll,
SBT_PARMS=(OSB_WS_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\osbwsor.ora)';
restore controlfile from 'OR_2932857089_20190509_5_1007812302_1_1.conf';
release channel ch1;
}
切换数据库至mount状态,然后从OBS读取并恢复数据文件。命令中的标红部分controlfile使用实际值,参考4.5章节
特别注意的是,在执行restore和recover命令后,一定要加入 until sequence xxxx 或者until SCN xxxx这个条件,其中 xxxx 为图中执行恢复数据后标红的实际值
alter database mount;
run {
allocate channel ch1 type
sbt parms='SBT_LIBRARY=C:\app\Administrator\product\11.2.0\dbhome_1\BIN\oraosbws.dll,
SBT_PARMS=(OSB_WS_PFILE=C:\app\Administrator\product\11.2.0\dbhome_1\database\osbwsor.ora)';
restore database from tag='TAG20190509T114912';
recover database from tag='TAG20190509T114912';
release channel ch1;
}
打开数据库,查询2.3中修改后的数据库已经正确恢复到2.1创建时的状态
alter database open resetlogs;
5 注意事项
5.1 oracle的自带osb模块在安装时长时间download无反应
oracle12以上的版本中自带了osb模块,如果安装时长时间download无反应,可以考虑去官网下载最新osb模块进行安装,或使用代理服务器进行安装。
注:通常上午下载速度较快
5.2 数据库所在的设备与OBS桶不在一个区域,备份恢复时间长
数据库所在的设备与OBS桶不在一个区域,比如数据库安装在华北的虚拟机,而将数据备份到华南的OBS桶,则在备份和恢复时由于网速的关系,耗费时间较长。
解决方案:建议数据库和OBS桶在同一个区域,或者是较近的区域。
5.3 oracle数据库备份和恢复默认没有并发,如果要提高带宽性能,需要增加并发设置
目前实测最高的数据库备份上传带宽性能最高在8Gbit/s,最高的数据库恢复下载带宽性能最高在17Gbit/s,并发数在15并发左右。
登录rman,先进行osb对接和并发参数配置,此处以并发数15为例:
configure channel device type sbt parms='SBT_LIBRARY=/u01/app/oracle/product/11.2.0/dbhome_1/lib/libosbws.so ENV=(OSB_WS_PFILE=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/osbwsdb.ora)';
configure default device type to SBT;
configure device type SBT parallelism 15;
备份命令如下:
backup database format='ora_%d_%I_%T_%s_%t_%c_%p.dbf' plus archivelog;
backup current controlfile format='%d_%I_%T_%s_%t_%c_%p.conf';
backup spfile format='ora_%d_%I_%T_%s_%t_%c_%p.spf';
恢复时命令如下,其中红色部分根据实际情况填写:
restore controlfile from 'DB_1771527802_20190513_932_1008137953_1_1.conf';
restore database from tag='TAG20190513T035229';
recover database from tag='TAG20190513T035229';
5.4 oracle数据库备份和恢复优先采用指定OBS桶的方式进行备份和恢复
oracle数据库备份和恢复对接OBS桶,可以采用指定已存在的OBS桶进行对接,也可以不指定OBS桶的方式进行对接,如果采用后一种方式,则OSB插件会根据就否存在oracle-data-account为前缀,且桶所在区域与OSB插件配置时的location一致的桶,如果存在就直接使用此OBS桶,如果不存在会根据oracle-data-account前缀和OSB插件配置时的location新创建一个OBS桶。oracle-data-account中的account与OSB插件生成的配置文件中的“CREDENTIAL_ALIAS”有关。
注:目前不指定桶的方式可能会出现一些由于OSB插件造成的不可控的问题,建议使用指定桶的方式进行备份和恢复。
具体信息还可参考oracle官网对指定桶参数OSB_WS_BUCKET的介绍:https://docs.oracle.com/database/121/RCMRF/web_services.htm#RCMRF90491
6 附录
osb模块下载参考链接:https://chongchongbucket005.obs.cn-north-1.myhuaweicloud.com/oracle/osbws_installer.zip
- 点赞
- 收藏
- 关注作者
评论(0)