[20150913]文件检查点-表空间offline.txt

[20150913]文件检查点-表空间offline.txt

--oracle从8i以后基本使用增量检查点取代原来的检查点模式,但是如果一个表空间处于热备份模式以及offline时,要将这些表空间包含
--的数据文件所涉及到的脏块写数据文件.这个叫file level Checkpoint(感觉叫tablespace level checkpoint更加合适一些),如何验证
--这个过程,实际上很简单仅仅需要检查v$bh或者x$bh视图,或者转储脏块看看里面的内容是否存在变化,来验证这个过程,还是通过例子来
--说明:

--我个人喜欢使用bbed观察,效果与块转储一直。

1.运行环境:

SCOTT@test> @ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.3.0     Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

SCOTT@test> show parameter alert
NAME                      TYPE     VALUE
------------------------- -------- --------
log_checkpoints_to_alert  boolean  TRUE

--设置log_checkpoints_to_alert=true,主要是为了测试需要,如果存在full checkpoint以及增量检查会写alert日志文件。

alter system set log_checkpoint_timeout=3600 scope=memory;

--设置的目的主要延长增量检查点的时间间隔(我的测试机器业务很小,我仅仅自己使用),这样便于测试,参考链接:
--http://blog.itpub.net/267265/viewspace-1796999/

create table ta tablespace test  as select 1 id1 ,cast('eeee' as varchar2(20)) name from dual ;
create table tb tablespace users as select 2 id1 ,cast('ffff' as varchar2(20)) name from dual ;

SCOTT@test> select rowid,ta.* from ta;

ROWID                     ID1 NAME
------------------ ---------- --------------------
AABMyVAAIAAAACDAAA          1 eeee

SCOTT@test> @rowid AABMyVAAIAAAACDAAA
    OBJECT       FILE      BLOCK        ROW DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
    314517          8        131          0 8,131                alter system dump datafile 8 block 131 ;

SCOTT@test> select rowid,tb.* from tb;
ROWID                     ID1 NAME
------------------ ---------- --------------------
AABMyWAAEAAAAIzAAA          2 ffff

SCOTT@test> @rowid AABMyWAAEAAAAIzAAA
    OBJECT       FILE      BLOCK        ROW DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
    314518          4        563          0 4,563                alter system dump datafile 4 block 563 ;

SCOTT@test> alter system checkpoint;
System altered.

--查看alert日志:
Mon Sep 14 08:48:49 2015
Beginning global checkpoint up to RBA [0xe2f.c498.10], SCN: 13201303348
Completed checkpoint up to RBA [0xe2f.c498.10], SCN: 13201303348

2.测试表空间offline:
--session 1:

SCOTT@test> @spid
       SID    SERIAL# SPID   C50
---------- ---------- ------ --------------------------------------------------
       206        629 19683  alter system kill session '206,629' immediate;

SCOTT@test> @bh  8 131
HLADDR              DBARFIL     DBABLK      CLASS CLASS_TYPE         STATE             TCH CR_SCN_BAS CR_SCN_WRP CR_UBA_FIL CR_UBA_BLK CR_UBA_SEQ BA               OBJECT_NAME
---------------- ---------- ---------- ---------- ------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- --------------------
00000000BC9BF878          8        131          1 data block         xcur                1          0          0          0          0          0 000000009CD56000 TA
00000000BC9BF878          8        131          1 data block         free                0          0          0          0          0          0 000000008F5C2000
00000000BC9BF878          8        131          1 data block         free                0          0          0          0          0          0 000000008F5C0000
00000000BC9BF878          8        131          1 data block         free                0          0          0          0          0          0 00000000A20D2000
00000000BC9BF878          8        131          1 data block         free                0          0          0          0          0          0 000000008F5BA000

SCOTT@test> @bh  4 563
HLADDR              DBARFIL     DBABLK      CLASS CLASS_TYPE         STATE             TCH CR_SCN_BAS CR_SCN_WRP CR_UBA_FIL CR_UBA_BLK CR_UBA_SEQ BA               OBJECT_NAME
---------------- ---------- ---------- ---------- ------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- --------------------
00000000BC9B2358          4        563          1 data block         xcur                1          0          0          0          0          0 000000009EAD8000 TB
00000000BC9B2358          4        563          1 data block         free                0          0          0          0          0          0 000000009B390000
00000000BC9B2358          4        563          1 data block         free                0          0          0          0          0          0 000000009CB96000

update ta set name=upper(name) where id1=1;
update tb set name=upper(name) where id1=2;

--不提交。STATE=free可能是先drop在建立的原因.

--session 2:
SCOTT@test> @spid

       SID    SERIAL# SPID   C50
---------- ---------- ------ --------------------------------------------------
        14         69 19673  alter system kill session '14,69' immediate;

SCOTT@test> select * from V$SESSION_EVENT where sid=14;
       SID EVENT                                    TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT   MAX_WAIT TIME_WAITED_MICRO   EVENT_ID WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS
---------- ---------------------------------------- ----------- -------------- ----------- ------------ ---------- ----------------- ---------- ------------- ----------- --------------------
        14 log file sync                                      1              0           1          .62          1              6230 1328744198    3386400367           5 Commit
        14 SQL*Net message to client                         15              0           0            0          0                62 2067390145    2000153315           7 Network
        14 SQL*Net message from client                       15              0       29663      1977.53      28288         296629134 1421975091    2723168908           6 Idle

SCOTT@test> alter tablespace test offline ;
Tablespace altered.

SCOTT@test> select * from V$SESSION_EVENT where sid=14;
       SID EVENT                                    TOTAL_WAITS TOTAL_TIMEOUTS TIME_WAITED AVERAGE_WAIT   MAX_WAIT TIME_WAITED_MICRO   EVENT_ID WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS
---------- ---------------------------------------- ----------- -------------- ----------- ------------ ---------- ----------------- ---------- ------------- ----------- --------------------
        14 Disk file operations I/O                           5              0           0          .02          0              1188  166678035    1740759767           8 User I/O
        14 control file sequential read                      28              0           0            0          0               342 3213517201    4108307767           9 System I/O
        14 control file parallel write                       12              0          14         1.18          1            141835 4078387448    4108307767           9 System I/O
        14 log file sync                                      3              0           3         1.06          1             31873 1328744198    3386400367           5 Commit
        14 db file sequential read                            2              0           0            0          0                25 2652584166    1740759767           8 User I/O
        14 db file single write                               1              0           1          .76          1              7645 1307477558    1740759767           8 User I/O
        14 SQL*Net message to client                         19              0           0            0          0                88 2067390145    2000153315           7 Network
        14 SQL*Net message from client                       18              0       33753      1875.16      28288         337528864 1421975091    2723168908           6 Idle
        14 events in waitclass Other                          6              0           7          1.1          6             65755 1736664284    1893977003           0 Other

9 rows selected.

--观察alert日志:
Mon Sep 14 08:48:49 2015
Beginning global checkpoint up to RBA [0xe2f.c498.10], SCN: 13201303348
Completed checkpoint up to RBA [0xe2f.c498.10], SCN: 13201303348
Mon Sep 14 08:51:30 2015
alter tablespace test offline
Completed: alter tablespace test offline

--session 1:
SCOTT@test> @bh  8 131
HLADDR              DBARFIL     DBABLK      CLASS CLASS_TYPE         STATE             TCH CR_SCN_BAS CR_SCN_WRP CR_UBA_FIL CR_UBA_BLK CR_UBA_SEQ BA               OBJECT_NAME
---------------- ---------- ---------- ---------- ------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- --------------------
00000000BC9BF878          8        131          1 data block         free                0          0          0          0          0          0 000000009CD56000 TA
00000000BC9BF878          8        131          1 data block         free                0          0          0          0          0          0 000000008F5C2000
00000000BC9BF878          8        131          1 data block         free                0          0          0          0          0          0 000000008F5C0000
00000000BC9BF878          8        131          1 data block         free                0          0          0          0          0          0 00000000A20D2000
00000000BC9BF878          8        131          1 data block         free                0          0          0          0          0          0 000000008F5BA000

SCOTT@test> @bh  4 563
HLADDR              DBARFIL     DBABLK      CLASS CLASS_TYPE         STATE             TCH CR_SCN_BAS CR_SCN_WRP CR_UBA_FIL CR_UBA_BLK CR_UBA_SEQ BA               OBJECT_NAME
---------------- ---------- ---------- ---------- ------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- --------------------
00000000BC9B2358          4        563          1 data block         xcur                1          0          0          0          0          0 000000009EAD8000 TB
00000000BC9B2358          4        563          1 data block         free                0          0          0          0          0          0 000000009B390000
00000000BC9B2358          4        563          1 data block         free                0          0          0          0          0          0 000000009CB96000

--表TA的状态是FREE,表示信息已经写盘,并且可以给别的人使用.

3.bbed观察:

BBED> set dba 8,131
        DBA             0x02000083 (33554563 8,131)

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0]                              @8177     0x2c

BBED> x /rncn
rowdata[0]                                  @8177
----------
flag@8177: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8178: 0x02
cols@8179:    2

col    0[2] @8180: 1
col    1[4] @8183: EEEE

BBED> set dba  4,563
        DBA             0x01000233 (16777779 4,563)

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0]                              @8177     0x2c

BBED> x /rncn
rowdata[0]                                  @8177
----------
flag@8177: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8178: 0x00
cols@8179:    2

col    0[2] @8180: 2
col    1[4] @8183: ffff

--可以确定TA表对应的脏块已经写盘.

4.继续测试:
--session 1:
rollback ;

--session 2:
alter tablespace test online ;

--通过bbed观察:
BBED> set dba 8,131
        DBA             0x02000083 (33554563 8,131)

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0]                              @8177     0x2c

BBED> x /rncn
rowdata[0]                                  @8177
----------
flag@8177: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8178: 0x02
cols@8179:    2

col    0[2] @8180: 1
col    1[4] @8183: EEEE

BBED> set dba  4,563
        DBA             0x01000233 (16777779 4,563)

BBED> p *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0]                              @8177     0x2c

BBED> x /rncn
rowdata[0]                                  @8177
----------
flag@8177: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8178: 0x00
cols@8179:    2

col    0[2] @8180: 2
col    1[4] @8183: ffff

--可以确定表空间online并不会发出file level Checkpoint.

5.其它说明:
--表空间offline还可以加immediate参数,这样情况并不写盘,出现这种情况无法online,必须执行recover tablespace test命令或者
--recover datafile xx命令.

SCOTT@test> alter tablespace test offline  immediate;
Tablespace altered.

SCOTT@test> alter tablespace test online ;
alter tablespace test online
*
ERROR at line 1:
ORA-01113: file 8 needs media recovery
ORA-01110: data file 8: '/u01/app/oracle11g/oradata/test/test01.dbf'

SCOTT@test> recover datafile 8;
Media recovery complete.

SCOTT@test> alter tablespace test online ;
Tablespace altered.

--另外数据文件offline也不会写盘.这样online必须需要一个恢复过程.
SCOTT@test> alter database datafile 8 offline ;
Database altered.

SCOTT@test> alter database datafile 8 online ;
alter database datafile 8 online
*
ERROR at line 1:
ORA-01113: file 8 needs media recovery
ORA-01110: data file 8: '/u01/app/oracle11g/oradata/test/test01.dbf'

SCOTT@test> recover tablespace test;
Media recovery complete.

SCOTT@test> alter database datafile 8 online ;
Database altered.

--所以file level Checkpoint叫tablespace level checkpoint更加合适一些.纯属个人理解,也许不对.

时间: 2024-08-02 17:37:59

[20150913]文件检查点-表空间offline.txt的相关文章

数据文件、表空间offline用法及区别

对数据库的脱机包括数据文件的脱机和对表空间的脱机,表空间脱机实际就是表空间对应的所有数据文件脱机. 1.         数据文件OFFLINE 数据文件添加到表空间之后不能够被删除的,没有语法支持这么做,如果想不使用该数据文件,唯一是将数据文件设置为OFFLINE状态.执行以下步骤将数据文件设置为OFFLINE状态: 1)         如果是归档模式可以执行如下SQL设置数据文件的状态为OFFLINE: ALTER DATABASE DATAFILE 'XXXX.DBF' OFFLINE;

[20150913]文件检查点_热备份.txt

[20150913]文件检查点_热备份.txt --oracle从8i以后基本使用增量检查点取代原来的检查点模式,但是如果一个表空间处于热备份模式以及offline时,要将这些表空间包含 --的数据文件所涉及到的脏块写数据文件.这个叫file level Checkpoint(感觉叫tablespace level checkpoint更加合适一些),如何验证 --这个过程,实际上很简单仅仅需要检查v$bh或者x$bh视图,或者转储脏块看看里面的内容是否存在变化,来验证这个过程,还是通过例子来

[20160721]rman与undo表空间备份.txt

[20160721]rman与undo表空间备份.txt --//UNDO表空间主要用于存储前镜像数据,这些数据在回滚以及恢复过程中可能被用到. --//一般生产数据库的UNDO表空间可能会变得非常巨大,甚至包括多个数据文件,而备份完整的UNDO数据文件在恢复时一般可能用到的比 --//例很小.所以UNDO的很大一部分备份是多余的,在Oracle11g中,Oracle引入了一个新的特性RMAN UNDO备份优化. --//在RMAN备份UNDO表空间时,提交事务的UNDO信息将不再备份,这个特性

在mount状态下恢复数据文件system表空间

数据字典(包含数据库本身以及存储的所有对象的基本信息)存放在SYSTEM表空间中.当数据库处于open状态时,如果system表空间所对应的数据文件出现介质失败,当在其数据文件上进行IO时操作时,数据库会自己关闭:当数据库处于关闭状态时,如果system表空间所对应的数据文件出现介质失败,数据库将不能打开.打开时会出现如下错误: ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件ORA-01110: 数据文件 1: 'F:\APP\YANG\ORADATA\ORAC

[20160329]表空间与数据文件.txt

[20160329]表空间与数据文件.txt --昨天跟别人聊天,提到招聘DBA,一些dba这些基本的概念不清楚. --表空间可以是一个逻辑的概念,包含多个数据文件.而一个数据文件仅仅属于一个表空间. --表空间offline,一般不需要recover 恢复.除非加入immediate 参数. --而数据文件offline,一定需要恢复,才能online.如果是非归档模式必须在后面加入drop参数(自己曾经对于这存在混乱). --不要误解后面这个drop不是删除的意思,我以前理解就存在错误. -

Oracle 表空间与数据文件

--============================== --Oracle 表空间与数据文件 --============================== /* 一.概念     表空间:是一个或多个数据文件的逻辑集合     表空间逻辑存储对象:永久段-->如表与索引                         临时段-->如临时表数据与排序段                      回滚段-->用于事物回滚或闪回内存的撤销数据     表空间分类:系统表空间(sys

AG阅读总结10.1.1——表空间管理*

原文转自一沙弥的世界:http://blog.csdn.net/robinson_0612/article/details/5611738 一.概念     表空间:是一个或多个数据文件的逻辑集合     表空间逻辑存储对象:永久段-->如表与索引                         临时段-->如临时表数据与排序段                         回滚段-->用于事物回滚或闪回内存的撤销数据     表空间分类:系统表空间(system.sysaux),非系

ORACLE表空间管理维护

1:表空间概念   在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示,一个数据库由对应一个或多个表空间,表空间逻辑上有一个或多个段(Segment)组成,物理上由一个或多个os file组成.       1.1基本的表空间   系统中默认创建的几个表空间:     SYSTEM     SYSAUX     USERS     UNDOTBS1     EXAM

Oracle数据库表空间恢复方案

oracle|恢复|数据|数据库 一. 用户表空间 错误: 在启动数据库时出现ORA-01157,ORA-01110或操作系统级错误例如ORA-07360,在关闭数据库(使用shutdown normal或shutdown immediate) 时将导致错误ORA -01116,ORA-01110以及操作系统级错误ORA-07368 解决,以下有两种解决方案: 1.用户的表空间可以被轻易地重建 即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等.在这种情况下,最简单的方法是offline