ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [原]表空间热备模式下,数据文件是否仍在写入数据?

[原]表空间热备模式下,数据文件是否仍在写入数据?

原创 Linux操作系统 作者:sdusun 时间:2019-07-13 13:06:04 0 删除 编辑

在学习备份与恢复这块内容的时候,常见这种理解:表空间如果处于热备份模式,比如说:
alter tablespace sun begin backup;
那么,表空间拥有的数据文件则不会被写入数据。
其实,这是一种错误的理解。
真实情况是什么样子的呢?下面的试验就是答案!


SQL> conn sun/sun
已连接。
SQL> create table test_backup
2 (name varchar2(10) )
3 tablespace sun;

表已创建。

SQL> insert into test_backup
2 values ('nicetomeetu');
values ('nicetomeetu')
*
ERROR 位于第 2 行:
ORA-01401: 插入的值对于列过大


SQL> insert into test_backup
2 values ('nicetoseeu');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select dbms_rowid.rowid_block_number(rowid) blk,name from test_backup;

BLK NAME


---------- ----------


10 nicetoseeu

SQL> alter system checkpoint;
alter system checkpoint
*
ERROR 位于第 1 行:
ORA-01031: 权限不足


SQL> alter tablespace sun begin backup;
alter tablespace sun begin backup
*
ERROR 位于第 1 行:
ORA-01031: 权限不足


SQL> conn / as sysdba
已连接。
SQL> grant dba to sun
2 /

授权成功。

SQL> conn sun/sun
已连接。
SQL> alter tablespace sun begin backup;

表空间已更改。

SQL> select dbms_rowid.rowid_block_number(rowid) blk,name from test_backup;

BLK NAME


---------- ----------


10 nicetoseeu

SQL> update test_backup set name='toseeunice';

已更新 1 行。

SQL> commit;

提交完成。

SQL> select dbms_rowid.rowid_block_number(rowid) blk,name from test_backup;

BLK NAME


---------- ----------


10 toseeunice


SQL> alter tablespace sun end backup;

表空间已更改。

SQL> conn / as sysdba
已连接。
SQL> revoke dba from sun;

撤销成功。


SQL> alter system switch logfile;

系统已更改。

SQL> spool off

结论:表空间处于backup模式,它所拥有的数据文件仍然可以写入数据。
注意:end backup之后,执行switch logfile !

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/593324/viewspace-376193/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle 的杯酒人生
请登录后发表评论 登录
全部评论

注册时间:2005-09-13

  • 博文量
    116
  • 访问量
    118267