Chinaunix首页 | 论坛 | 博客
  • 博客访问: 229529
  • 博文数量: 57
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 674
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-30 22:48
个人简介

2014,换个角度,希望接下来的事情值得期待。

文章分类

全部博文(57)

文章存档

2015年(1)

2014年(55)

2013年(1)

我的朋友

分类: Oracle

2014-01-10 14:25:14

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;
完成介质恢复。
阅读(1341) | 评论(0) | 转发(0) |
0

上一篇:ORACLE 用户配额操作

下一篇:ORACLE 临时表

给主人留下些什么吧!~~