ALTER DATABASE 与 ALTER TABLESPACE OFFLINE的区别

一.DataFile脱机或联机两种方法:

①ALTERDATABASE语句修改单独的DataFile

②ALTERTABLESPACE语句修改所有的DataFile

1、在ARCHIVRLOG模式下的更改DataFile状态

ALTERDATABASEDATAFILE'/u02/oracle/rbdb1/stuff01.dbf'ONLINE;

ALTERDATABASEDATAFILE'/u02/oracle/rbdb1/stuff01.dbf'OFFLINE;

或者用文件号来表示:

SQL>selectfile#,name,checkpoint_change#fromv$datafile;

FILE#

NAME

CHECKPOINT_CHANGE#

1

D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF

1194854

2

D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF

1194854

3

D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF

1194854

4

D:/ORACLE/ORADATA/DBA/USERS01.DBF

1194854

5

D:/ORACLE/ORADATA/DBA/TEST01.DBF

1203262

ALTERDATABASEDATAFILE5ONLINE;

ALTERDATABASEDATAFILE5OFFLINE;

注:只有在ARCHIVELOG模式下才可使用ALTERDATABASE来更改DataFile

2、在NOARCHIVELOG模式下使DataFile脱机

由于在NOARCHIVELOG模式下,数据文件脱机后会造成数据的遗失,所以只能使用ALTERDATABASE语句下带有DATAFILEOFFLINEDROP子句的选项将该DataFile直接取消,例如该DataFile只包含临时段数据,并没有备份时

ALTERDATABASEDATAFILE'/u02/oracle/rbdb1/users3.dbf'OFFLINEDROP;

3、修改TableSpace中所有DataFileTempFile的可用性

ALTERTABLESPACE...DATAFILE{ONLINE|OFFLINE}

ALTERTABLESPACE...TEMPFILE{ONLINE|OFFLINE}

注:修改某TableSpace中的所有数据文件,但是TableSpace本身的状态不改变。

我们不能使用'alterdatabasedatafile...offline'在归档模式下,但是'altertablespace...offline'可以。

我们不是使用'altertablespace...offline'在数据库的read-only模式下,但是'alterdatabasedatafile...offline'可以。

总结:

①ALTERTABLESPACE可以在数据库装载状态时发布,无需打开

②涉及到系统表空间、撤销表空间、默认临时表空间时,必须是未打开的数据库

③ALTERDATABASEDATAFILE语句中必须填入文件全名

二.表空间与数据文件脱机的区别

1.ALTERTABLESPACE...OFFLINE

Doesacheckpointonthedatafiles

Takesthedatafilesoffline

表空间Offline,数据文件的SCN会被冻结,而且表空间的数据文件offline/online时又会发生文件检查点,使单个数据文件SCN和数据库其他问题不一致。
表空间onlineOracle会取得当前SCN,解冻offline文件SCN,和当前SCN同步。

tablespaceoffline有几种选项可供选择normal,temporary,immediate,forrecovery,而在datafile中则没有这些选项

SQL>selectdbms_flashback.get_system_change_numberfromdual;

GET_SYSTEM_CHANGE_NUMBER

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

1203246

SQL>altertablespacetestoffline;

Tablespacealtered.

SQL>selectfile#,name,checkpoint_change#fromv$datafile;

FILE#

NAME

CHECKPOINT_CHANGE#

1

D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF

1194854

2

D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF

1194854

3

D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF

1194854

4

D:/ORACLE/ORADATA/DBA/USERS01.DBF

1194854

5

D:/ORACLE/ORADATA/DBA/TEST01.DBF

1203262

SQL>selectdbms_flashback.get_system_change_numberfromdual;

GET_SYSTEM_CHANGE_NUMBER

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

1203328

SQL>altertablespacetestonline;

Tablespacealtered.

SQL>selectfile#,name,checkpoint_change#fromv$datafile;

FILE#

NAME

CHECKPOINT_CHANGE#

1

D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF

1,194,854

2

D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF

1,194,854

3

D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF

1,194,854

4

D:/ORACLE/ORADATA/DBA/USERS01.DBF

1,194,854

5

D:/ORACLE/ORADATA/DBA/TEST01.DBF

1,203,343

SQL>selectdbms_flashback.get_system_change_numberfromdual;

GET_SYSTEM_CHANGE_NUMBER

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

1203440

2.ALTERDATABASEDATAFILE...OFFLINE

单纯的offlinedatafile,将不会触发文件检查点,只有针对offlinetablespace的时候才会触发文件检查点,这也是为什么onlinedatafile需要mediarecoveryonlinetablespace不需要。

注:只有在ARCHIVELOG模式下才可使用ALTERDATABASE来更改DataFile

SQL>selectfile#,name,checkpoint_change#fromv$datafile;

FILE#

NAME

CHECKPOINT_CHANGE#

1

D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF

1,194,854

2

D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF

1,194,854

3

D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF

1,194,854

4

D:/ORACLE/ORADATA/DBA/USERS01.DBF

1,194,854

5

D:/ORACLE/ORADATA/DBA/TEST01.DBF

1,203,343

SQL>selectdbms_flashback.get_system_change_numberfromdual;

GET_SYSTEM_CHANGE_NUMBER

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

1219831

SQL>alterdatabasedatafile5offline;

Databasealtered.

SQL>selectfile#,name,checkpoint_change#fromv$datafile;

FILE#

NAME

CHECKPOINT_CHANGE#

1

D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF

1,194,854

2

D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF

1,194,854

3

D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF

1,194,854

4

D:/ORACLE/ORADATA/DBA/USERS01.DBF

1,194,854

5

D:/ORACLE/ORADATA/DBA/TEST01.DBF

1,203,343

SQL>selectdbms_flashback.get_system_change_numberfromdual;

GET_SYSTEM_CHANGE_NUMBER

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

1219882

SQL>alterdatabasedatafile5online;

Erroratline1

ORA-01113:文件5需要介质恢复

ORA-01110:数据文件5:'D:/ORACLE/ORADATA/DBA/TEST01.DBF'

SQL>recoverdatafile5;

完成介质恢复

SQL>alterdatabasedatafile5online;

Databasealtered.

SQL>selectfile#,name,checkpoint_change#fromv$datafile;

FILE#

NAME

CHECKPOINT_CHANGE#

1

D:/ORACLE/ORADATA/DBA/SYSTEM01.DBF

1,194,854

2

D:/ORACLE/ORADATA/DBA/UNDOTBS01.DBF

1,194,854

3

D:/ORACLE/ORADATA/DBA/SYSAUX01.DBF

1,194,854

4

D:/ORACLE/ORADATA/DBA/USERS01.DBF

1,194,854

5

D:/ORACLE/ORADATA/DBA/TEST01.DBF

1,219,929

SQL>selectdbms_flashback.get_system_change_numberfromdual;
GET_SYSTEM_CHANGE_NUMBER

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

1220043


<!--EndFragment-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值