Welcome 微信登录

首页 / 数据库 / MySQL / ALTER DATABASE 与 ALTER TABLESPACE OFFLINE的区别

一.DataFile脱机或联机的两种方法:    ① ALTER DATABASE 语句修改单独的DataFile    ② ALTER TABLESPACE 语句修改所有的DataFile     1、在ARCHIVRLOG模式下的更改DataFile状态    ALTER DATABASE DATAFILE ""/u02/Oracle/rbdb1/stuff01.dbf"" ONLINE;ALTER DATABASE DATAFILE ""/u02/oracle/rbdb1/stuff01.dbf"" OFFLINE;或者用文件号来表示 :SQL>select file#,name,checkpoint_change# from v$datafile; 
FILE#NAMECHECKPOINT_CHANGE#
1D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF1194854
2D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF1194854
3D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF1194854
4D:/ORACLE/ORADATA/DBA/USERS01.DBF1194854
5D:/ORACLE/ORADATA/DBA/TEST01.DBF1203262
    ALTER DATABASE DATAFILE 5 ONLINE;ALTER DATABASE DATAFILE 5 OFFLINE;    注:只有在ARCHIVELOG模式下才可使用ALTER DATABASE来更改DataFile     2、在NOARCHIVELOG模式下使DataFile脱机     由于在NOARCHIVELOG模式下,数据文件脱机后会造成数据的遗失,所以只能使用ALTER DATABASE语句下带有DATAFILE和OFFLINE DROP子句的选项将该DataFile直接取消,例如该DataFile只包含临时段数据,并没有备份时     ALTER DATABASE DATAFILE ""/u02/oracle/rbdb1/users3.dbf"" OFFLINE DROP;     3、修改TableSpace中所有DataFile或TempFile的可用性     ALTER TABLESPACE ... DATAFILE {ONLINE|OFFLINE}    ALTER TABLESPACE ... TEMPFILE {ONLINE|OFFLINE} 注:修改某TableSpace中的所有数据文件,但是TableSpace本身的状态不改变。我们不能使用""alter database datafile ... offline"" 在归档模式下,但是 ""alter tablespace ... offline"" 可以。我们不是使用""alter tablespace ... offline""在数据库的read-only模式下,但是""alter database datafile ... offline"" 可以。    总结:    ① ALTER TABLESPACE可以在数据库装载状态时发布,无需打开    ② 涉及到系统表空间、撤销表空间、默认临时表空间时,必须是未???开的数据库    ③ ALTER DATABASE DATAFILE 语句中必须填入文件全名二. 表空间 与 数据文件 脱机的区别1. ALTER TABLESPACE ... OFFLINEDoes a checkpoint on the datafiles Takes the datafiles 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------------------------                 1203246SQL>alter tablespace test offline;   Tablespace altered.SQL>select file#,name,checkpoint_change# from v$datafile; 
FILE#NAMECHECKPOINT_CHANGE#
1D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF1194854
2D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF1194854
3D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF1194854
4D:/ORACLE/ORADATA/DBA/USERS01.DBF1194854
5D:/ORACLE/ORADATA/DBA/TEST01.DBF1203262
SQL>select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER------------------------                 1203328SQL>alter tablespace test online;   Tablespace altered.SQL>select file#,name,checkpoint_change# from v$datafile;   
FILE#NAMECHECKPOINT_CHANGE#
1D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF1,194,854
2D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF1,194,854
3D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF1,194,854
4D:/ORACLE/ORADATA/DBA/USERS01.DBF1,194,854
5D:/ORACLE/ORADATA/DBA/TEST01.DBF1,203,343
SQL>select dbms_flashback.get_system_change_number from dual;   GET_SYSTEM_CHANGE_NUMBER------------------------                 12034402.  ALTER DATABASE DATAFILE ... OFFLINE单纯的offline datafile,将不会触发文件检查点,只有针对offline tablespace的时候才会触发文件检查点,这也是为什么online datafile需要media recovery而online tablespace不需要。注:只有在ARCHIVELOG模式下才可使用ALTER DATABASE来更改DataFileSQL>select file#,name,checkpoint_change# from v$datafile;   
FILE#NAMECHECKPOINT_CHANGE#
1D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF1,194,854
2D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF1,194,854
3D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF1,194,854
4D:/ORACLE/ORADATA/DBA/USERS01.DBF1,194,854
5D:/ORACLE/ORADATA/DBA/TEST01.DBF1,203,343
SQL>select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER------------------------                 1219831SQL>alter database datafile 5 offline;  Database altered.SQL>select file#,name,checkpoint_change# from v$datafile;
FILE#NAMECHECKPOINT_CHANGE#
1D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF1,194,854
2D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF1,194,854
3D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF1,194,854
4D:/ORACLE/ORADATA/DBA/USERS01.DBF1,194,854
5D:/ORACLE/ORADATA/DBA/TEST01.DBF1,203,343
SQL>select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER------------------------                 1219882SQL>alter database datafile 5 online;   Error at line 1ORA-01113: 文件 5 需要介质恢复ORA-01110: 数据文件 5: ""D:/ORACLE/ORADATA/DBA/TEST01.DBF""SQL>recover datafile 5;   完成介质恢复  SQL>alter database datafile 5 online;   Database altered.SQL>select file#,name,checkpoint_change# from v$datafile;   
FILE#NAMECHECKPOINT_CHANGE#
1D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF1,194,854
2D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF1,194,854
3D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF1,194,854
4D:/ORACLE/ORADATA/DBA/USERS01.DBF1,194,854
5D:/ORACLE/ORADATA/DBA/TEST01.DBF1,219,929
SQL>select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER------------------------                 1220043Oracle ORA-01555 快照过旧说明Redo Log 和Checkpoint not complete相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数