当前位置 : 主页 > 网络编程 > 其它编程 >

Oracle:热备测试

来源:互联网 收集:自由互联 发布时间:2023-07-02
我们知道Oracle数据库热备有3步:                                                                       我们知道Oracle数据库热备有3步:                                  
我们知道Oracle数据库热备有3步:                                                            

 

        我们知道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:热备测试

上一篇:神经网络参数初始化方法
下一篇:没有了
网友评论