Oracle:热备测试
我们知道Oracle数据库热备有3步:
1. alter tablespace tbname begin backup;
2. cp /××× to /××
3. alter tablespace tbname end backup;
这个过程要尽可能短,否则会造成大量的redolog。
那么,数据库在你执行begin backup时,系统做了什么呢?
1. tablespace 发生了一次checkpoint------会把buffer脏数据全部写入到数据文件
2. tablespace下的数据文件的文件头的scn会保持不变-------这里的scn即第一步发生checkpoint的scn
3. 如果此时,有改变数据的操作,数据库会对被修改的block块进行整个备份,以保证数据的完整性。
(后期在恢复时,数据库会发现该块被修改,然后通过archive log 来进行恢复)
---------也就是说,你在热备时,是可以修改数据的;---------------这就是热备的优点。
下面通过实验来验证一下第3点:
1.用一个新用户登录
SQL> conn yn/yn
Connected.
SQL> create table fruit(name varchar2(30));
Table created.
SQL> insert into fruit values('orange');
1 row created.
SQL> commit;
Commit complete.
SQL> select dbms_rowid.rowid_block_number(rowid) blk ,name from fruit;
BLK NAME
---------- ------------------------------
64 orange
----查看数据被保存的数据块
(注意:commit 并不代表该数据会被写入到数据文件中;我是在另外一个session中执行了checkpoint来达到写入数据文件的)
SQL> select username,default_tablespace from dba_users;
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
HACKER SYSTEM
BBK SYSTEM
OPS$YN SYSTEM
YN USERS
-------该yn用户对应的表空间是 users
2.通过dd命令来查看block内容
[oracle@app orcl]$ dd if=users01.dbf ibs=8192 skip=63 count=3 |strings
3+0 records in
48+0 records out
24576 bytes (25 kB) copied, 0.000252 seconds, 97.5 MB/s
orange
---这说明我们数据已经写入数据文件
3. 执行热备
SQL> alter tablespace users begin backup;
Tablespace altered.
4.修改系统数据
SQL> update fruit set name='apple';
1 row updated.
SQL> commit;
Commit complete.
SQL> select * from fruit;
NAME
------------------------------
apple
5.再次查看block
[oracle@app orcl]$ dd if=users01.dbf ibs=8192 skip=63 count=3 |strings
3+0 records in
48+0 records out
24576 bytes (25 kB) copied, 0.000187 seconds, 131 MB/s
apple,
orange
[oracle@app orcl]$
----说明数据文件已经修改
6.最后取消表空间备份
alter tablespace users end bakcup;
Oracle:热备测试的更多相关文章
- ORACLE 热备begin backup / end backup
执行begin backup之后,oracle会把将要备份的数据文件都标记为hot-backup-in-progress,锁定所要备份的datafile header的scn,例如此时scn=100, ...
- Redis - Keepalived + redis 主备热备切换
1. 热备方案 硬件:server两台,分别用于master-redis及slave-redis 软件:redis.keepalived 实现目标: 由keepalived对外提供虚拟IP(VIP)进 ...
- Pacemaker实现双机热备
在互联网高速发展的今天,尤其在电子商务的发展,要求服务器能够提供不间断服务.在电子商务中,如果服务器宕机,造成的损失是不可估量的.要保证服务器不间断服务,就需要对服务器实现冗余.在众多的实现服务器冗余 ...
- oracle双机热备概念
1. 双机热备概述 双机热备有两种实现模式,一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,一般称为纯软件方式. 基于存储共享的双机热备是双机热备的最标准方案. ...
- oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)
Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...
- oracle数据库热备中的备份和恢复及例子
手工热备(开库状态) 备份控制文件: alter database backup controlfile to '/u01/oradata/prod/con.bak1'; 备份数据文件(这里用到pl/ ...
- Oracle:热备时,突然断电情况处理
我们在热备时,如果此时突然停电,再次启动时会发生什么情况呢? SQL> alter tablespace users begin backup; Tablespace altered. SQL& ...
- Oracle冷备和热备脚本
Oracle冷备和热备脚本 冷备脚本: set feedback off set heading off set verify off set trimspool off set echo off ...
- (技能篇)双机热备之Oracle切换故障处理
背景: 以前做的的一个项目中使用了某国产双机热备产品,但是在数据库做双机热备时出现了一些问题,没办法.不得不研究一番了!经过两天的研究终于问题得以解决.将问题处理步骤记录下来以备后用,也希望能帮助到需 ...
随机推荐
- windows bat语法
@echo off 表示在这条语句之后,所有执行命令的语句不会显示 setLocal 参考1 rem 注释 :或者:: 参考 set /p 等待用户输入 SET /A express ...
- POJ 1502 MPI Maelstrom [最短路 Dijkstra]
传送门 MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5711 Accepted: 3552 ...
- Mysql 使用存储过程添加新字段
-- 1, 注意SQL 语句开始处不要空格 -- 2, 在使用 [--] 进行注释时,后面请加空格 USE `test`; -- lastUpdateTime drop procedure if ex ...
- 有关 GCC 及 JNA 涉及动态库/共享库时处理库文件名的问题
动态库尤其是共享库在 Linux 环境下普遍存在库文件名包含版本号的情况,比如 Linux 环境下经常会发现一个共享库的真实文件名是 libfoo.so.1.1.0,而同时会有多个指向该真实库文件的软 ...
- python在webservice接口测试中的应用
接口测试第二波,webservice接口来咯,欢迎各位小伙伴吐槽~本次拿免费的互联网国内手机号码归属地查询WEB服务webservice接口做例子,当然有很多免费webservice接口可以供大家使用 ...
- Netty构建游戏服务器(二)--Hello World
一,准备工作 1,netty-all-4.1.5.Final.jar(官网下载) 2,eclipse 二,步骤概要 1,服务器开发 (1),创建Server类 该类是程序的主入口,有main方法,服务 ...
- LibieOJ 6165 一道水题 (线性筛)
题目链接 LOJ6165 题目意思其实就是求LCM(1, 2, 3, ..., n) 直接用线性筛求出1到1e8之间的所有质数 然后对于每个质数p,他对答案的贡献为$p^{i}$ 其中$p^{i}$小 ...
- Bestcoder Tom and matrix
问题描述 Tom放学回家的路上,看到天空中出现一个矩阵.Tom发现,如果矩阵的行.列从0开始标号,第i行第j列的数记为ai,j,那么ai,j=Cji 如果i < j,那么ai,j=0 Tom突发 ...
- Access restriction: The method 'CharacterEncoder.encode(byte[])' is not API...
问题描述:Access restriction: The method 'CharacterEncoder.encode(byte[])' is not API... 解决方法:这种错误是eclips ...
- 【深入Java虚拟机】之五:多态性实现机制——静态分派与动态分派
方法解析 Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址.这个特性给Java带来了更强大的动态扩 ...