1.alter database 和alter tablespace offline 区别
1.1 datafile脱机或联机的两种方法
alter database 语句修改单独的datafile
alter tablespace 语句修改所有的datafile
1.2 archivelog模式下修改datafile状态
alter database datafile 'E:\ORACLE11\ORADATA\ORCL\USERS01.DBF' online
alter database datafile 'E:\ORACLE11\ORADATA\ORCL\USERS01.DBF' offline
或者用文件号
SQL> select file#,name,checkpoint_change# from v$datafile;
FILE# NAME CHECKPOINT_CHANGE#
---------- -------------------------------------------------------------------------------- ------------------
1 E:\ORACLE11\ORADATA\ORCL\SYSTEM01.DBF 4856647
2 E:\ORACLE11\ORADATA\ORCL\SYSAUX01.DBF 4856647
3 E:\ORACLE11\ORADATA\ORCL\UNDOTBS01.DBF 4856647
4 E:\ORACLE11\ORADATA\ORCL\USERS01.DBF 4856647
5 E:\ORACLE11\ORADATA\ORCL\EXAMPLE01.DBF 4856647
alter database datafile 4 online
alter database datafile 4 offline
只有在ARCHHIVELOG模式下才可使用alter database来更改datafile。
1.3在NOARCHIVELOG模式下使datafile脱机
NOARCHIVELOG模式下,数据文件脱机会造成数据丢失,因此只可使用带offline drop选项将datafile取消。
alter database datafile 'E:\ORACLE11\ORADATA\ORCL\USERS01.DBF' offline drop;
1.4修改TABLESPACE中所有datafile或tempfile的可用性。
alter tablespace datafile online/offline;
alter tablespace tempfile online/offline;
修改一个TABLESPACE中的所有数据文件,但是本身TABLESPACE本身的状态不改变。
1.5表空间和数据文件脱机的区别
1.5.1 alter tablespace offline;
表空间offline时,数据文件的SCN被冻结,而且表空间的数据文件offline/online时又会发生文件检查点,使单个数据文件SCN和数据库其他
部分不一致。
表空间online时,Oracle会取得当前SCN,解冻offline文件SCN,和当前SCN同步。
tablespace offline 可以使用normal,temporary,immediate,for recovery.datafile中则没有这几个选项。
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
4875122
SQL> alter tablespace users offline;
表空间已更改。
SQL> select file#,name,checkpoint_change# from v$datafile;
FILE# NAME CHECKPOINT_CHANGE#
---------- -------------------------------------------------------------------------------- ------------------
1 E:\ORACLE11\ORADATA\ORCL\SYSTEM01.DBF 4867801
2 E:\ORACLE11\ORADATA\ORCL\SYSAUX01.DBF 4867801
3 E:\ORACLE11\ORADATA\ORCL\UNDOTBS01.DBF 4867801
4 E:\ORACLE11\ORADATA\ORCL\USERS01.DBF 4875188
5 E:\ORACLE11\ORADATA\ORCL\EXAMPLE01.DBF 4867801
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
4875309
SQL> alter tablespace users online;
Tablespace altered
SQL> select file#,name,checkpoint_change# from v$datafile;
FILE# NAME CHECKPOINT_CHANGE#
---------- -------------------------------------------------------------------------------- ------------------
1 E:\ORACLE11\ORADATA\ORCL\SYSTEM01.DBF 4867801
2 E:\ORACLE11\ORADATA\ORCL\SYSAUX01.DBF 4867801
3 E:\ORACLE11\ORADATA\ORCL\UNDOTBS01.DBF 4867801
4 E:\ORACLE11\ORADATA\ORCL\USERS01.DBF 4875320
5 E:\ORACLE11\ORADATA\ORCL\EXAMPLE01.DBF 4867801
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
4875370
1.5.2 alter database datafile offline;
单纯的offline datafile 将不会触发文件检查点,只有针对offline tablespace才会触发文件检查点,所以online datafile 需要介质恢复,
而online tablespace 不需要。只有在ARCHIVELOG 模式下才可使用alter database datafile xxx;
SQL> select file#,name,checkpoint_change# from v$datafile;
FILE# NAME CHECKPOINT_CHANGE#
---------- -------------------------------------------------------------------------------- ------------------
1 E:\ORACLE11\ORADATA\ORCL\SYSTEM01.DBF 4867801
2 E:\ORACLE11\ORADATA\ORCL\SYSAUX01.DBF 4867801
3 E:\ORACLE11\ORADATA\ORCL\UNDOTBS01.DBF 4867801
4 E:\ORACLE11\ORADATA\ORCL\USERS01.DBF 4875320
5 E:\ORACLE11\ORADATA\ORCL\EXAMPLE01.DBF 4867801
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
4875489
SQL> alter database datafile 4 offline;
Database altered
SQL> select file#,name,checkpoint_change# from v$datafile;
FILE# NAME CHECKPOINT_CHANGE#
---------- -------------------------------------------------------------------------------- ------------------
1 E:\ORACLE11\ORADATA\ORCL\SYSTEM01.DBF 4867801
2 E:\ORACLE11\ORADATA\ORCL\SYSAUX01.DBF 4867801
3 E:\ORACLE11\ORADATA\ORCL\UNDOTBS01.DBF 4867801
4 E:\ORACLE11\ORADATA\ORCL\USERS01.DBF 4875320
5 E:\ORACLE11\ORADATA\ORCL\EXAMPLE01.DBF 4867801
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
4875620
SQL> alter database datafile 4 online;
alter database datafile 4 online
ORA-01113: 文件 4 需要介质恢复
ORA-01110: 数据文件 4: 'E:\ORACLE11\ORADATA\ORCL\USERS01.DBF'
SQL> recover datafile 4;
完成介质恢复。
阅读(1386) | 评论(0) | 转发(0) |