主库备份后异机进行恢复(适用于DSC到单节点的恢复)
环境:
OS:Centos 7
DB:DM8
主库: 192.168.1.136
恢复库:192.168.1.134
1.在主库上进行备份(全备份+归档日志备份)
[dmdba@localhost script]$ more full_backckup.sh
#! /bin/bash
. /etc/profile
. ~/.bash_profile
backup_date=`date "+%Y%m%d"`
disql SYSDBA/dameng123<<EOF
backup database full backupset '/home/dmdba/rmanbak/fullbak_${backup_date}';
backup archivelog all delete input to "archbak_${backup_date}" backupset '/home/dmdba/rmanbak/archbak_${backup_date}';
exit;
EOF
2.将备份文件拷贝到备库
[root@localhost tmp]# cd /home/dmdba/rmanbak
目录拷贝
[root@localhost rmanbak]# scp -r ./fullbak_20220824 root@192.168.1.135:/dmdbms/rmanbak/
[root@localhost rmanbak]# scp -r ./archbak_20220824 root@192.168.1.135:/dmdbms/rmanbak/
3.备库上安装数据库实例
初始化实例
su - dmdba
dminit path=/dmdbms/data charset=1 db_name=slnngk instance_name=slnngk SYSDBA_PWD="dameng123" SYSAUDITOR_PWD="dameng123"
注册服务
su - root
[root@localhost root]#cd /dmdbms/product/script/root
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /dmdbms/data/slnngk/dm.ini -p slnngk
尝试启动
[root@localhost root]#systemctl start DmServiceslnngk.service
[root@localhost root]# systemctl status DmServiceslnngk.service
4.恢复
先将之前启动的实例停掉
[root@localhost root]# systemctl stop DmServiceslnngk.service
若备库之前已经在跑的实例了,那么可以将该实例的文件夹改名,创建一个原实例名的空文件夹,将上面的配置文件拷贝到空的文件夹中
[dmdba@localhost data]$ cd /dmdbms/data
[dmdba@localhost data]$ mv slnngk bak_slnngk
[dmdba@localhost data]$ mkdir slnngk
[dmdba@localhost data]$ cd bak_slnngk/
[dmdba@localhost bak_slnngk]$ cp dmwatcher.ini ../slnngk/ ##存在就拷贝,不存在可忽略
[dmdba@localhost bak_slnngk]$ cp dmarch.ini ../slnngk/ ##存在就拷贝,不存在可忽略
[dmdba@localhost bak_slnngk]$ cp dmmal.ini ../slnngk/ ##存在就拷贝,不存在可忽略
[dmdba@localhost bak_slnngk]$ cp dm.ini ../slnngk/
[dmdba@localhost bak_slnngk]$ cp dm.ctl ../slnngk/ ##需要拷贝控制文件
好像SYSTEM.DBF需要保留
创建一些目录
[dmdba@localhost bak_slnngk]$mkdir -p /dmdbms/data/slnngk/ctl_bak
[dmdba@localhost bak_slnngk]$mkdir -p /dmdbms/data/slnngk/bak
否在恢复的时候报如下错误:
Read ini warning, default dm.ctl backup path [/dmdbms/data/slnngk/ctl_bak] does not exist.
Read ini warning, default backup path [/dmdbms/data/slnngk/bak] does not exist.
恢复方法1:使用备份集恢复
[dmdba@localhost ~]$ dmrman
RMAN>restore database '/dmdbms/data/slnngk/dm.ini' from backupset '/home/dmdba/rmanbak/fullbak_20220824'; ##还原备份集
RMAN>recover database '/dmdbms/data/slnngk/dm.ini' from backupset '/home/dmdba/rmanbak/fullbak_20220824'; ##使用备份集恢复
RMAN>recover database '/dmdbms/data/slnngk/dm.ini' update db_magic;
恢复方法2:使用归档日志恢复
A.从备份集恢复归档到具体目录
RMAN>restore archive log from backupset '/dmdbms/rmanbak/archbak_20220825' TO ARCHIVEDIR'/dmdbms/arch' overwrite 2;
1表示认为归档文件完好,不再还原该归档文件,添加一条日志记录;
2表示存在同名归档立即报错返回,终止还原;
3表示强制删除归档,重新还原同名归档.
B.恢复
[dmdba@localhost ~]$ dmrman
RMAN>restore database '/dmdbms/data/slnngk/dm.ini' from backupset '/dmdbms/rmanbak/fullbak_20220825'; ##还原备份集
RMAN>recover database '/dmdbms/data/slnngk/dm.ini' with archivedir '/dmdbms/arch'; ##通过归档日志完全恢复
RMAN>recover database '/dmdbms/data/slnngk/dm.ini' update db_magic;
注意备份文件不能放到tmp目录,否则会报如下的错误
[-10001]:[CODE:-127]invalid backupset dir[/tmp/rmanbak/fullbak_20220824]
5.启动数据库
[root@host135 rmanbak]# systemctl start DmServiceslnngk.service
说明:
该种方式也适用于DSC备份后恢复到单节点,DSC的文件上存储在ASM的,恢复的时候不需要做转换(ASM文件到普通文件的转换),oracle上是需要的.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?