签到成功

知道了

CNDBA社区CNDBA社区

ALTER DATABASE 与 ALTER TABLESPACE OFFLINE的区别

2016-11-25 15:55 468 0 原创 Oracle 11g
作者: Dave

 

一.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#

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

    ALTER DATABASE DATAFILE ONLINE;

ALTER DATABASE DATAFILE OFFLINE;

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

 

    2、在NOARCHIVELOG模式下使DataFile脱机

 

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

 

    ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users3.dbf' OFFLINE DROP;

 

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

 

    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 ... OFFLINE

Does a checkpoint on the datafiles 

Takes the datafiles offline

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

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

                 1203246

SQL>alter tablespace test offline;   

Tablespace altered.

SQL>select file#,name,checkpoint_change# from v$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

https://www.cndba.cn/Dave/article/1226

4

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

1194854

5https://www.cndba.cn/Dave/article/1226

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

1203262

SQL>select dbms_flashback.get_system_change_number from dual; 

GET_SYSTEM_CHANGE_NUMBER

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

                 1203328

SQL>alter tablespace test online;   

Tablespace altered.

SQL>select file#,name,checkpoint_change# from v$datafile;   https://www.cndba.cn/Dave/article/1226

FILE#

NAME

CHECKPOINT_CHANGE#

1https://www.cndba.cn/Dave/article/1226

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

1,194,854

2https://www.cndba.cn/Dave/article/1226

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

1,194,854

3https://www.cndba.cn/Dave/article/1226

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>select dbms_flashback.get_system_change_number from dual;   

GET_SYSTEM_CHANGE_NUMBER

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

                 1203440

2.  ALTER DATABASE DATAFILE ... OFFLINE

单纯的offline datafile,将不会触发文件检查点,只有针对offline tablespace的时候才会触发文件检查点,这也是为什么online datafile需要media recoveryonline tablespace不需要。

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

SQL>select file#,name,checkpoint_change# from v$datafile;   

FILE#

NAME

https://www.cndba.cn/Dave/article/1226

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>select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------https://www.cndba.cn/Dave/article/1226

                 1219831

SQL>alter database datafile 5 offline;  

Database altered.

SQL>select file#,name,checkpoint_change# from v$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>select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

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

                 1219882

SQL>alter database datafile 5 online;   

Error at line 1

ORA-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#

NAME

CHECKPOINT_CHANGE#

1

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

1,194,854

2

https://www.cndba.cn/Dave/article/1226

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

1,194,854

3

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

1,194,854

4https://www.cndba.cn/Dave/article/1226

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

1,194,854

5

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

1,219,929

SQL>select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER

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

                 1220043


版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle 11g

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Dave

Dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 1505
    原创
  • 1
    翻译
  • 187
    转载
  • 52
    评论
  • 访问:1041067次
  • 积分:1736
  • 等级:核心会员
  • 排名:第2名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by ZhiXinTech · 皖ICP备15000992号-4 ·

        QQ交流群