欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle在非归档模式下不能更改表空间为备份模式

程序员文章站 2024-04-06 18:47:14
...

Oracle表空间设置为备份模式后,便可以联机对表空间下数据文件进行文件系统级别的copy备份操作,因为期间对表空间的修改都记录到

Oracle表空间设置为备份模式后,便可以联机对表空间下数据文件进行文件系统级别的copy备份操作,因为期间对表空间的修改都记录到数据库的重做日志文件中。

由此想到数据库如果是非归档模式,那么这个表空间备份模式的时间必须不能超过联机日志被覆盖的时间,,才能保证数据的修改不会丢失。

那么Oracle对这种情况是如何择决的呢?

实验表明:Oracle是干脆不让你在非归档模式下开启表空间的备份模式。

报错如下: ORA-01123: cannot start online backup; media recovery not enabled

实验验证如下: 环境:RHEL 6.4 + Oracle 11.2.0.3

1.归档模式下可以开启表空间的备份模式。

SQL> alter tablespace TT begin backup;

Tablespace altered.

SQL> host cp /home/oradata/JYZHAO/datafile/tt.dbf /tmp/

SQL> alter tablespace TT end backup;

Tablespace altered.

SQL> !ls -lh /tmp |grep tt
-rw-r-----. 1 oracle oinstall 11M Sep 17 17:06 tt.dbf

SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1876
Next log sequence to archive 1879
Current log sequence 1879

2.修改数据库为非归档模式下,发现表空间的备份模式开启将不被允许。

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 413372416 bytes
Fixed Size 2228904 bytes
Variable Size 356519256 bytes
Database Buffers 46137344 bytes
Redo Buffers 8486912 bytes
Database mounted.

SQL> alter database noarchivelog;

Database altered.

SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1876
Current log sequence 1879
SQL> alter database open;

Database altered.

SQL> alter tablespace TT begin backup;
alter tablespace TT begin backup
*
ERROR at line 1:
ORA-01123: cannot start online backup; media recovery not enabled