首页 > 数据库 >复制数据库两种方式 第一种 把备份集复制到目标数据库

复制数据库两种方式 第一种 把备份集复制到目标数据库

时间:2022-12-05 22:46:33浏览次数:44  
标签:复制到 数据库 bak 归档 oracle 日志 备份 ORA

https://docs.oracle.com/database/121/BRADV/rcmdupdb.htm#BRADV010

在源库生成一个备份,并复制到目标机器。rman target /

RMAN> backup database include current controlfile format '/full/full_%d_%s_%T_%p.bak';

备份成功后,最后会还会备份控制文件,控制文件也需要COPY到目标机器。
Starting Control File and SPFILE Autobackup at 04-JUN-21
piece handle=/u01/app/oracle/fra/ORCL/autobackup/2021_06_04/o1_mf_s_1074316419_jcmvtwog_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 04-JUN-21
---最新说明,控制文件的备份可以不用单独复制到目标机器。因为上面的语句(include current controlfile),实际上备份已经包含了控制文件了。

备份归档日志
RMAN> BACKUP ARCHIVELOG ALL FORMAT '/full/arch/ar_%t_%s_%p'

scp /full/full_ORCL_* 192.168.56.111:/home/oracle/bak

scp /full/arch/ar* 192.168.56.111:/home/oracle/bak

 

rman auxiliary /

duplicate database to newdb backup location '/home/oracle/bak' nofilenamecheck;

 

 

 

 

 

RMAN的恢复过程解释:

 

第1步,先恢复控制文件,如下可以看到是从全量备份里面提取出来的
contents of Memory Script:
{
restore clone primary controlfile from '/home/oracle/bak/full_ORCL_206_20210604_1.bak';
}

 

channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:00
output file name=/u01/app/oracle/oradata/NEWDB/control01.ctl

 

第2步,恢复表空间(即数据文件)
contents of Memory Script:
{
set until scn 3887310;
set newname for datafile 1 to
"/u01/app/oracle/oradata/NEWDB//system01.dbf";
set newname for datafile 3 to
"/u01/app/oracle/oradata/NEWDB//sysaux01.dbf";
set newname for datafile 4 to
"/u01/app/oracle/oradata/NEWDB//undotbs01.dbf";
set newname for datafile 7 to
"/u01/app/oracle/oradata/NEWDB//users01.dbf";
restore
clone database
;
}

 

第3步,就是所谓media recovery了。即通过归档日志进行数据推进。
starting media recovery

 

channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=85
channel ORA_AUX_DISK_1: reading from backup piece /home/oracle/bak/ar_1074378119_210_1
channel ORA_AUX_DISK_1: piece handle=/home/oracle/bak/ar_1074378119_210_1 tag=TAG20210604T222155
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:09
archived log file name=/u01/app/oracle/oradata/NEWDB/arch/1_85_1073900400.dbf thread=1 sequence=85
channel clone_default: deleting archived log(s)
archived log file name=/u01/app/oracle/oradata/NEWDB/arch/1_85_1073900400.dbf RECID=1 STAMP=1074380003

 

最后成功会显示
database opened
Cannot remove created server parameter file
Finished Duplicate Db at 04-JUN-21

 


6)检查目标库,及后续工作
RMAN复制完后,会自动OPEN目标库。此时,你可以用sqlplus重新连接。
[oracle@oracle19c-toclone admin]$ sqlplus / as sysdba
SQL> select status from v$instance;

 

STATUS
------------
OPEN

 

SQL> select count(*) from hr.employees;

 

COUNT(*)
----------
107


6.2)最后,你可以在目标库手动删除pfile里面的convert行。再用pfile启动。
启动完后(create spfile from memory),生成spfile。
下次正常启动,你就不再需要pfile了。

 

 

 

总结,归档日志开启与不开启对于ORACLE数据库的影响与不同?
先问题自己几个问题。
1)什么是REDO日志,它的作用是什么?为何REDO至少需要2个日志组?
2)为何需要归档日志?
3)为何未开启归档,只能是MOUNT方式下进行全量备份?
而开启了归档,就可以在OPEN状态下备份?
4)为何RMAN duplicate恢复时,一定需要归档日志?

 


redo是进行数据库恢复所用的(异常掉电,可以用redo恢复)。
但是REDO是一个循环使用的,也即随时时间的推移,前面的数据可能被覆盖。
简单来说两个文件可以在一个写满后,写下一个,再直接TRUNCATE第一个文件。
归档日志在REDO未被覆盖前,进行保存,这样你就相当于有了所有的REDO日志。

 

现实情况数据库只要服务在,会一直有业务数据更新。
没有归档,数据一致性无法保证。所以MOUNT下(应用无法连接),可保证数据一致性。
有了归档,虽然备份数据文件开始后,还会一直有数据更新。
但archive log可以在备份完成后,再应用重做,从而实现一个一致性的数据备份。
这也是为何RMAN duplicate恢复时,一定需要归档日志的原因了。

 

标签:复制到,数据库,bak,归档,oracle,日志,备份,ORA
From: https://www.cnblogs.com/zzg520/p/16953766.html

相关文章

  • 业务流程 | 前端 =》 后端 =〉 数据库 (待补充)
    关键词:CSR前=》C=〉S=》R=〉S=》C=〉前dtoboentityentity、bo、vo、po、dto、pojo如何理解和区分?-简书(jianshu.com)......
  • Etcd 备份与恢复
    14.1Etcd概述etcd是一个构建高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,它是基于GO语言实现。14.2Etcd属性完全复制集群中的每个节......
  • 数据库授权用户,允许指定网段可以连接mysql
    数据库授权用户,允许192.168.100.0/24网段可以连接mysql1.访问数据库#主机测试[root@node1~]#mysql-uroot-pmysql>showdatabases;+--------------------+|Da......
  • 数据库(js部分讲解)
    JS简介JavaScript(简称JS)是一种具有函数优先的轻量级,解释型或即时编译型编程语言虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript......
  • sql 数据库完整性
    完整性约束条件也称之为完整性规则,是数据库中的数据必须满足的语义约束条件。它表达了给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库......
  • go之操作数据库,数据库查询
    1.从上到下执行packagemain/*此文目的,查询多行1.创建数据库连接2.查询语句3.编写结构体用来接收4.打印------------------------------......
  • sql创建自动备份数据库
    【背景】  前段时间需要建立一个sql数据库定时自动备份的任务,通过查询以及实践,将自己的经历过程记录在下面。【步骤】一、开启代理,维护计划中建立备份计划二、双......
  • 数据库连接字符串大全
    很感谢creativepeter(头皮屑)提供的本连接地址(​​http://www.connectionstrings.com/​​​)    ODBC StandardSecurity:"Driver=......
  • 受限波尔茨曼机RBM_DBN深度学习网络训练和测试matlab仿真,数据库为随机数矩阵
    1.算法概述        受限波尔兹曼机(RestrictedBoltzmannMachines,RBM)是一类具有两层结构、对称连接且无自反馈的随机神经网络模型,层间全连接,层内无连接。我们知......
  • 关于 SAP HANA 数据库的死锁问题(deadlock)
    一个朋友在我的知识星球里提问:hana数据库发生死锁后,会自动解开吗?还是会等着自动超时后报错。笔者在15年的SAP开发生涯中对HANA数据库接触得比较少,这里只能根据网络上......