zoukankan      html  css  js  c++  java
  • 表空间与数据文件Offline,online的区别

    首先明确,表空间与数据文件的关系: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恢复---

  • 相关阅读:
    第九十一天 how can I 坚持 技术-永远的技术
    第九十天 how can I 坚持
    Java控制台中输入中文输出乱码的解决办法
    【体系结构】转移预测器设计与比较1
    Ubuntu 13.04 用Sublime Text 2 编译运行 JAVA
    HDU 4605 Magic Ball Game (在线主席树|| 离线 线段树)
    个人重构机房收费系统之报表
    快速排序的递归和非递归实现
    HDU 3721 Building Roads (2010 Asia Tianjin Regional Contest)
    体验决定深度,知识决定广度。你的人生是什么呢? 操蛋和扯蛋没必要纠结 唯有继续
  • 原文地址:https://www.cnblogs.com/lvcha001/p/7827257.html
Copyright © 2011-2022 走看看