[20190312]视图v$datafile字段OFFLINE_CHANGE#, ONLINE_CHANGE#.txt

--//视图v$datafile存在2个字段OFFLINE_CHANGE#, ONLINE_CHANGE#,想当然会认为数据文件offline时记录scn号的改变.
--//真的吗?通过例子说明:

1.环境:
SYS@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SYS@book> SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile;
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    2        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/sysaux01.dbf
    3        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/undotbs01.dbf
    4        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/users01.dbf
    5        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/example01.dbf
    6        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/tea01.dbf
6 rows selected.

--//我重建了控制文件,许多字段当前是空的.

2.测试:
SYS@book> alter database datafile 6 offline ;
Database altered.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279958095 2019-03-12 16:40:08                     0                      13279959313 2019-03-12 16:53:06               0              0                   0                     RECOVER /mnt/ramdisk/book/tea01.dbf

--//实际上offline 数据文件时,在控制文件记录的是LAST_CHANGE#,LAST_TIME.

SYS@book> recover datafile 6;
Media recovery complete.
--//注无法直接online,要执行recover.所以如果有需求要offline,应该养成随手执行recover datafile N的习惯.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279959313 2019-03-12 16:53:06                     0                      13279959313 2019-03-12 16:53:06               0              0                   0                     OFFLINE /mnt/ramdisk/book/tea01.dbf

--//CHECKPOINT_CHANGE#=LAST_CHANGE#.status 从RECOVER=>OFFLINE.  看看看看文件头的情况:

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#, CHECKPOINT_TIME,CREATION_CHANGE#  , RESETLOGS_CHANGE#,status, CHECKPOINT_COUNT,fuzzy,name,tablespace_name  FROM v$datafile_header where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     CREATION_CHANGE# RESETLOGS_CHANGE# STATUS  CHECKPOINT_COUNT FUZ NAME                                               TABLESPACE_NAME
----- ------------------ ------------------- ---------------- ----------------- ------- ---------------- --- -------------------------------------------------- ------------------------------
    1        13279958095 2019-03-12 16:40:08                7            925702 ONLINE              1224 YES /mnt/ramdisk/book/system01.dbf                     SYSTEM
    6        13279959313 2019-03-12 16:53:06      13276257767            925702 OFFLINE              607 NO  /mnt/ramdisk/book/tea01.dbf                        TEA

--//文件头的CHECKPOINT_CHANGE#与控制文件CHECKPOINT_CHANGE#一致.
--//注:v$datafile的信息来自控制文件,v$datafile_header的信息来自数据文件头,不要搞混了.

SYS@book> alter database datafile 6 online ;
Database altered.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279960343 2019-03-12 16:58:40                     0                                                                    0              0                   0                     ONLINE  /mnt/ramdisk/book/tea01.dbf

--//可以发现数据文件 online后,OFFLINE_CHANGE#,ONLINE_CHANGE#字段并没有任何记录.也就是这个字段并不是记录数据文件offline的scn号.

3.继续测试:
--//既然不是数据文件offline时记录scn号,自然想到表空间的offline,online有关.

SYS@book> alter tablespace tea offline ;
Tablespace altered.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279960510 2019-03-12 17:01:12                     0                      13279960510 2019-03-12 17:01:12               0              0                   0                     OFFLINE /mnt/ramdisk/book/tea01.dbf

--//表空间offline,缺省要更新文件头的scn,你可以发现STATUS=OFFLINE(而不是recover).CHECKPOINT_CHANGE#=LAST_CHANGE#.
--//注 : alter tablespace tea offline immediate ;.这样不更新文件头,与offline 数据文件类似,你可以理解一组文件(表空间)offline.大家可以自行测试.

SYS@book> alter tablespace tea online ;
Tablespace altered.

SYS@book>  SELECT file#, CHECKPOINT_CHANGE#,CHECKPOINT_TIME,UNRECOVERABLE_CHANGE#,UNRECOVERABLE_TIME,LAST_CHANGE#,LAST_TIME, OFFLINE_CHANGE#, ONLINE_CHANGE#,FIRST_NONLOGGED_SCN,FIRST_NONLOGGED_TIME,status,name FROM v$datafile where file# in (1,6);
FILE# CHECKPOINT_CHANGE# CHECKPOINT_TIME     UNRECOVERABLE_CHANGE# UNRECOVERABLE_TIME  LAST_CHANGE# LAST_TIME           OFFLINE_CHANGE# ONLINE_CHANGE# FIRST_NONLOGGED_SCN FIRST_NONLOGGED_TIM STATUS  NAME
----- ------------------ ------------------- --------------------- ------------------- ------------ ------------------- --------------- -------------- ------------------- ------------------- ------- --------------------------------------------------
    1        13279958095 2019-03-12 16:40:08                     0                                                                    0              0                   0                     SYSTEM  /mnt/ramdisk/book/system01.dbf
    6        13279960695 2019-03-12 17:03:55                     0                                                          13279960510    13279960695                   0                     ONLINE  /mnt/ramdisk/book/tea01.dbf

--//可以发现表空间tea online后,OFFLINE_CHANGE#,ONLINE_CHANGE#有信息,OFFLINE_CHANGE#记录就是表空间offline时的scn,而ONLINE_CHANGE#记录就是表空间online时的scn.
--//oracle为什么这样设计,假设你需要恢复1个数据文件,取出来的数据文件scn小于OFFLINE_CHANGE#,这样恢复时,从OFFLINE_CHANGE# 到 ONLINE_CHANGE#的日志或者归档可以跳过,
--//节约日志应用与恢复时间.

--//自然要问,为什么数据文件offline时为什么没有类似的记录呢?而数据文件offline时,处于"不稳定状态",不能直接online的,这样控制文件仅仅记录LAST_CHANGE#(offline时).
--//这样恢复时日志仅仅应用到LAST_CHANGE#就ok了,但是为什么数据文件online时LAST_CHANGE#的信息不写入OFFLINE_CHANGE#,online时的scn写入ONLINE_CHANGE#呢?
--//感觉这个存在一点点歧义行,个人理解.

--//也许oracle在视图字段命名上不科学,应该将OFFLINE_CHANGE#, ONLINE_CHANGE#命名为TABLESPACE_OFFLINE_CHANGE#,TABLESPACE_ONLINE_CHANGE#更加科学一些.

[20190312]视图v$datafile字段OFFLINE_CHANGE#, ONLINE_CHANGE#.txt的更多相关文章

  1. oracle,如何查看视图结构,获得视图中的字段名称、字段类型、字段长度等。

    需要获得一个视图中的字段名称.字段类型.字段长度等信息,该如何编写sql语句.通过select * from user_views可以获得给定用户下所有的视图名称了,但是没找到如何获取视图结构的解决方 ...

  2. SAP MM 物料主数据MRP2 视图Rounding Value字段

    SAP MM 物料主数据MRP2 视图Rounding Value字段 如下物料号,MRP2视图中,维护了rounding value字段值为50. MRP type :PD Lot size:EX ...

  3. SAP MM 物料主数据采购视图中的字段'Var. OUn'的作用?

    SAP MM 物料主数据采购视图中的字段'Var. OUn'的作用? 物料主数据采购视图里有一个字段,叫做'Var. OUn'的, 如下图: 这个字段,笔者之前所参与的项目里,从来没有用过.所以,笔者 ...

  4. [20190312]关于增量检查点的疑问(补充).txt

    [20190312]关于增量检查点的疑问(补充).txt --//有人问我以前写一个帖子的问题,关于增量检查点的问题,链接如下:http://blog.itpub.net/267265/viewspa ...

  5. [20180408]那些函数索引适合字段的查询.txt

    [20180408]那些函数索引适合字段的查询.txt --//一般不主张建立函数索引,往往是开发的无知,使用trunc等函数,实际上一些函数也可以用于字段的查询.--//以前零碎的写过一些,放假看了 ...

  6. odoo开发笔记 -- odoo10 视图界面根据字段状态,动态隐藏创建&编辑按钮

    场景描述: 解决方式: 网络搜索,vnsoft_form_hide_edit 找到了这个odoo8的模块, odoo10语法和视图界面有新的变化,所以需要修改一些地方,感兴趣的小伙伴可以对比下两个代码 ...

  7. 查找SQL数据表或视图中的字段属性信息

    一.只支持表,非常牛逼的 SELECT a.name,(case when (SELECT count(*) FROM sysobjects WHERE (name in (SELECT name F ...

  8. matlab如何读取未知行数,带头文件和字段名的txt文件

    文件格式是这样的 20120108 50024 X235RZB30801 01 15 2361 2362 2363 2364 2365 2366 2367 2368 2369 236A 236B 23 ...

  9. odoo开发笔记 -- tree视图按指定字段group_by分组显示

    注意点: view视图文件中的搜索视图要放在action视图的前边. 在action视图中,要写search_view_id, 还有context, search_default_group_by_字 ...

随机推荐

  1. newwork setup

    #-*-coding:utf-8-*- ######################################################################### # Copy ...

  2. Nacos发布0.5.0版本,轻松玩转动态 DNS 服务

    阿里巴巴微服务开源项目Nacos于近期发布v0.5.0版本,该版本主要包括了DNS-basedService Discovery,对Java 11的支持,持续优化Nacos产品用户体验,更深度的与Sp ...

  3. python基本操作

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  4. Python和Java编程题(六)

    1.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时, ...

  5. 深入浅出zookeeper之一:功能及本质

    zookeeper(下文简写为zk)大家都不陌生.但是,看到很多同学对zookeeper的理解过于程式化,有些地方甚至需要背,是大可不必的.把本质理解了,概念性和功能介绍都可以推出来的,而且架构要活学 ...

  6. 翻译:insert select(已提交到MariaDB官方手册)

    本文为mariadb官方手册:insert select的译文. 原文:https://mariadb.com/kb/en/insert-select/ 我提交到MariaDB官方手册的译文:http ...

  7. OJ:奇怪的类复制

    描述 程序填空,使其输出9 22 5 #include <iostream> using namespace std; class Sample { public: int v; // 在 ...

  8. 在C#中使用ZBar识别条形码

    目录: 一.识别库 二.从一张图片中提取多个条形码 三.注意事项 从博客园学了很多,本着分享的目的,希望后来者遇到类似问题时,不必重复造轮子,早点下班回家^-^. 一.识别库 目前主流的识别库主要有Z ...

  9. IE的浏览器模式、文本模式

    最近在部署网页的时候,发现IE下的布局完成混乱. 在改变IE的文本模式后,显示就正常了. IE的浏览器模式,用于切换IE针对该网页的默认文本模式.对不同版本浏览器的条件注释解析.决定请求头里userA ...

  10. SQL 注入漏洞

    首先要知道sql注入形成的原因:用户输入的数据被sql解释器执行 sql注入又分:数字型,字符型,cookie 注入,post注入,延时注入,搜索注入,base64注入 如何甄别一个模块是否有sql注 ...