标签:意义 sys redo 默认 迁移 this size 允许 oracle
首先明确,表空间与数据文件的关系:Oracle数据库表空间有两种,一种smallfile小文件表空间(默认),另一种bigfile大文件表空间;
默认表空间与数据文件的关系:允许一对多的处理方式,一个表空间可以有多个数据文件,一个数据文件只能存在一个表空间内;
而bigfile表空间,是一对一的关系,一个表空间对应一个数据文件;
SQL> create bigfile tablespace big_tbs2 datafile ‘/u01/app/big02.dbf‘ size 5m autoextend on maxsize 4097g;
--Yes or no查询是否是bigfile表空间
SQL> select tablespace_name,bigfile from dba_tablespaces;
TABLESPACE_NAME BIG ------------------------------ --- SYSTEM NO
--本次实验测试均采用默认smallfile表空间管理,测试;
SQL> select file_id,TABLESPACE_NAME,ONLINE_STATUS from dba_data_files where tablespace_name=‘YA‘;
FILE_ID TABLESPACE ONLINE_ ---------- ---------- ------- 7 YA ONLINE
---OFFLINE,ONLINE 操作有什么意义呢? --可以维护操作,表空间数据文件的迁移,改名称;
alter tablespace ya offline;
SQL> host cp /u01/app/oracle/ya.dbf /picclife/app/hukou/data/ya.dbf
SQL> alter database rename file ‘/u01/app/oracle/ya.dbf‘ to ‘/picclife/app/hukou/data/ya.dbf‘;
SQL> alter tablespace ya online;
——————————————————————**********以上操作表空间******以下数据文件---------
SQL> alter database datafile 7 offline;
SQL> host cp /picclife/app/hukou/data/ya.dbf /picclife/app/hukou/data/ya1.dbf
SQL> alter database rename file ‘/picclife/app/hukou/data/ya.dbf‘ to ‘/picclife/app/hukou/data/ya1.dbf‘;
SQL> recover datafile 7 ;
SQL> alter database datafile 7 online;
细心的朋友已经发现了,表空间不需要recover;
细节衍生:---为了快速查询--先查询表空间对应的数据文件ID号;
SQL> select FILE_ID,TABLESPACE_NAME from dba_data_files where TABLESPACE_NAME=‘YA‘;
FILE_ID TABLESPACE ---------- ---------- 7 YA
SQL> alter system checkpoint;
SQL> select FILE#,CHECKPOINT_CHANGE#,STATUS from v$datafile where file# in(6,7,8);
FILE# CHECKPOINT_CHANGE# STATUS
---------- ------------------ -------
6 466041 ONLINE
7 466041 ONLINE
8 466041 ONLINE ---操作执行完全检查点后,统一;控制文件记录数据文件的SCN号
SQL> select FILE#,CHECKPOINT_CHANGE#,STATUS from v$datafile_header where file# in(6,7,8);
FILE# CHECKPOINT_CHANGE# STATUS ---数据文件头部记录自身的SCN号
---------- ------------------ -------
6 466041 ONLINE
7 466041 ONLINE
8 466041 ONLINE
---执行操作:A 表空间OFFLINE ,ONLINE;
--再次查询对比:
SQL> alter tablespace ya offline;
v$datafile 控制文件记录自身的SCN
6 466041 ONLINE
7 466122 OFFLINE
8 466041 ONLINE
v$datafile_header 数据文件头部记录自己的
6 466041 ONLINE
7 0 OFFLINE
8 466041 ONLINE
SQL> alter tablespace ya online;
v$datafile 控制文件记录自身的SCN
6 466041 ONLINE
7 466231 ONLINE
8 466041 ONLINE
v$datafile_header 数据文件头部记录自己的
6 466041 ONLINE
7 466231 ONLINE
8 466041 ONLINE
----------------------------------------------------表空间状态变化,在表空间脱机时,CKPT进程会通知dbwr进程将表空间对应的脏块,写出,写入数据文件;
因此,在表空间Online的时候不需要redo恢复,并且数据文件头部scn冻结-------------------------------------
select * from scott.emp ---------------查询表空间存储的表将出现如下报错
*
ERROR at line 1:
ORA-00376: file 4 cannot be read at this time
--------------执行操作B : 数据文件offline;
7 466353 ONLINE
SQL> alter database datafile 7 offline;
v$datafile 控制文件记录自身的SCN
6 466353 ONLINE
7 466353 RECOVER
8 466353 ONLINE
v$datafile_header 数据文件头部记录自己的
6 466353 ONLINE
7 466353 OFFLINE
8 466353 ONLINE
recover datafile 7;
v$datafile 控制文件记录自身的SCN
6 466353 ONLINE
7 466384 OFFLINE
8 466353 ONLINE
v$datafile_header 数据文件头部记录自己的
6 466353 ONLINE
7 466384 OFFLINE
8 466353 ONLINE
alter database datafile 7 online;
---------------数据文件offline,控制文件、数据文件头部记录的SCN号,停留最后一刻,类似存储掉电,所以数据文件在线需要应用redo恢复---
标签:意义 sys redo 默认 迁移 this size 允许 oracle
原文地址:http://www.cnblogs.com/lvcha001/p/7827257.html