获取当前scn号scn1_深入理解SCN号
在oracle中存在很多种scn,但是,只有如下几种是我们比较关注的。
commit scn/cleanout scn
database scn/on disk scn/thread scn/datafile checkpoint scn/start scn
offline scn/online scn
resetlogs scn
stop scn
low/high scn
下面我们通过实验来展示,描述上述几种scn:
++++++commit scn/cleanout scn
SQL> create table t1( a number);
Table created.
SQL> insert into t1 values(10);
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> commit;
Commit complete.
SQL> select dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) blk# from t1;
FILE# BLK#
---------- ----------
4 12430
4 12430
4 12430
4 12430
4 12430
4 12430
4 12430
SQL> oradebug setmypid
Statement processed.
SQL> alter system dump datafile 4 block 12430;
System altered.
SQL> oradebug tracefile_name
/home/oracle/app/diag/rdbms/oracleogg/oracleogg/trace/oracleogg_ora_6019.trc
*** 2015-09-14 13:17:04.448
Start dump data blocks tsn: 4 file#:4 minblk 12430 maxblk 12430
Block dump from cache:
Dump of buffer cache at level 4 for tsn=4 rdba=16789646
BH (0x853dc2d0) file#: 4 rdba: 0x0100308e (4/12430) class: 1 ba: 0x850a4000
set: 3 pool: 3 bsz: 8192 bsi: 0 sflg: 2 pwc: 19,28
dbwrid: 0 obj: 87366 objn: 87366 tsn: 4 afn: 4 hint: f
hash: [0x8d52ee80,0x8d52ee80] lru: [0x853dc4f8,0x853dc288]
obj-flags: object_ckpt_list
ckptq: [0x82ff43f0,0x853dc540] fileq: [0x8dfcb918,0x853dc550] objq: [0x853dc520,0x853dc2b0] objaq: [0x853dc530,0x853dc2c0]
st: XCURRENT md: NULL fpin: 'ktspbwh2: ktspfmdb' tch: 4
flags: buffer_dirty redo_since_read
LRBA: [0x77.ee.0] LSCN: [0x0.1a0bd9] HSCN: [0x0.1a0be0] HSUB: [1]
Block dump from disk:
buffer tsn: 4 rdba: 0x0100308e (4/12430)
scn: 0x0000.001308e9 seq: 0x02 flg: 0x04 tail: 0x08e90602
frmt: 0x02 chkval: 0x240c type: 0x06=trans data
Hex dump of block: st=0, typ_found=1
Dump of memory from 0x00007F36615B5A00 to 0x00007F36615B7A00
7F36615B5A00 0000A206 0100308E 001308E9 04020000 [.....0..........]
7F36615B5A10 0000240C 00000001 000154B0 001308E4 [.$.......T......]
Block header dump: 0x0100308e
Object id on Block? Y
seg/obj: 0x154b0 csc: 0x00.1308e4 itc: 3 flg: E typ: 1 - DATA
brn: 0 bdba: 0x1003088 ver: 0x01 opc: 0
inc: 0 exflg: 0
Itl Xid Uba Flag Lck Scn/Fsc
0x01 0xffff.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.001308e4
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x03 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
bdba: 0x0100308e
data_block_dump,data header at 0x7f36615b5a7c
===============
tsiz: 0x1f80
hsiz: 0xae
pbl: 0x7f36615b5a7c
76543210
flag=--------
ntab=1
nrow=78
frre=-1
fsbo=0xae
fseo=0x3f0
avsp=0x342
tosp=0x342
0xe:pti[0] nrow=78 offs=0
0x12:pri[0] offs=0x1f2e
0x14:pri[1] offs=0x1ed3
0x16:pri[2] offs=0x1e77
0x18:pri[3] offs=0x1e1f
0x1a:pri[4] offs=0x1dc6
0x1c:pri[5] offs=0x1d69
0x1e:pri[6] offs=0x1d06
0x20:pri[7] offs=0x1ca3
0x22:pri[8] offs=0x1c4a
0x24:pri[9] offs=0x1beb
0x26:pri[10] offs=0x1b8c
0x28:pri[11] offs=0x1b34
0x2a:pri[12] offs=0x1ada
0x2c:pri[13] offs=0x1a7f
0x2e:pri[14] offs=0x1a20
0x30:pri[15] offs=0x19c0
0x32:pri[16] offs=0x195e
0x34:pri[17] offs=0x1907
0x36:pri[18] offs=0x18a8
0x38:pri[19] offs=0x1849
0x3a:pri[20] offs=0x17f6
0x3c:pri[21] offs=0x179c
0x3e:pri[22] offs=0x1743
0x40:pri[23] offs=0x16ed
针对上面的scn相关内容进行解释:
scn: 0x0000.001308e9 这其实就是block scn,转换为十进制为: 1247465
csc: 0x00.1308e4 这是cleanout scn,最后一次的full cleanout时的scn值,转换为10进制后为:1247460
Scn/Fsc 0x0000.001308e4 :这里表 commit scn或fast commit scn
我们来dump controlfile和datafile header的信息,进行观察:
oradebug setmypid
alter session set events 'immediate trace name CONTROLF level 4';
alter session set events 'immediate trace name FILE_HDRS level 3';
+++++++++++offline scn/online scn
当表空间或数据文件被offline时,其对应的数据文件的scn会写入一个值,被称为offline scn.
archivelog模式下,当表空间offlline时,对对应的数据文件头stop scn会更新,同时controlfile中该datafile的stopscn信息也会更新。
当online后,对应的数据文件头的online scn等于datafile checkpoint scn值。
当online后,controlfile中关于该表空间对应的datafile和对应的数据文件头的stop scn都会重新被置于最大值。
+++++++++++++++什么是resetlogs scn?顾名思义就是open resetlogs方式打开数据库是对应的scn值。
stop scn,顾名思义是指数据库或数据文件在某个时刻处于停止状态时的scn值,当处于run状态时,该值是被设置为无穷大的。
转储控制文件的过程:
shudown immediate;
startup mount;
oradebug setmypid;
alter session set events 'immediate trace name CONTROLF level 4';
oradebug tracefile_name
oradebug close_trace
说明:level 1----dump controlfile header
level 2----level 1+datafile 文件头信息
level 3------level+可重用信息
level 10 ------level 3+其他全部信息
转储数据文件:
alter system dump datafile 1 block 59490;
alter system set events 'immediate trace name file_hdrs level 3';
+++++ high scn/low scn
日志文件的scn
oracle 的redo log日志文件中,其实也存在着一种scn,那就是high scn/low scn。我们首先通过视图来查询了解一下:
select recid,sequence#,first_change#,next_change# from v$log_history;
95 95 1470210 1495090
那什么是low scn 和high scn?如果上面的查询来解释,那么久可以简单的理解为:
first_change#就是low scn,而 next_change#值就是high scn.
简单的讲,redo log scn指redo log 在进行切换时刻对应的scn的值,而scn又对应着时间,在进行实例恢复时,是需要
通过该值来确认需要应用哪些archivelog或者redo log的。
oradebug setmypid;
alter session set events 'immediate trace name loghist level 1';
DUMP OF LOG HISTORY: 95 history records
Earliest record:
RECID #1 Recno 1 Record timestamp 07/23/15 15:44:00 Thread=1 Seq#=1 Link-Recid=0 kccic-Recid=1
Low scn: 0x0000.00000001 07/23/15 15:43:12 Next scn: 0x0000.00004c00
Latest record:
RECID #95 Recno 95 Record timestamp 09/06/15 14:44:04 Thread=1 Seq#=95 Link-Recid=94 kccic-Recid=1
Low scn: 0x0000.00166f02 08/29/15 22:08:03 Next scn: 0x0000.0016d032
我们看到95的这个low scn:1470210 netx scn:1495090
--------controlfile dump
LOG FILE #3:
name #3: /home/oracle/app/oradata/oracleogg/redo03.log
Thread 1 redo log links: forward: 0 backward: 2
siz: 0x19000 seq: 0x00000060 hws: 0x3 bsz: 512 nab: 0x6ce flg: 0x8 dup: 1
Archive links: fwrd: 0 back: 0 Prev scn: 0x0000.00166f02--这里的prev scn其实就对应上面查询的first change#值。
Low scn: 0x0000.0016d032 09/06/2015 14:44:04--这里的low scn对应上面的next change值(因为这里查看current log信息,前面是dump的redo log history)
Next scn: 0xffff.ffffffff 01/01/1988 00:00:00
这里的next scn其实有点类似datafile 的stop scn,对于current log来说,总是被设置为无穷大的。
阅读(3733) | 评论(0) | 转发(0) |
获取当前scn号scn1_深入理解SCN号相关推荐
- oracle scn 重置,学习笔记:Oracle SCN详解 SCN与Oracle数据库恢复的关系
天萃荷净 分享一篇关于Oracle SCN的详解,介绍SCN与Oracle数据库恢复的关系和SCN在数据库中的作用 一.为什么需要System checkpoint SCN号与Datafile Che ...
- SCN(控制文件中的scn)
控制文件中的scn很多,最重要的有3类:数据库SCN.数据文件SCN和Checkpoint progress record中的SCN.数据库SCN和数据文件SCN分别从V$DATABASE和V$DAT ...
- php公众号用户关注,微信公众号获取用户信息(用户关注公众号)
一 获取用户基本信息 用户在关注公众号之后,你可以获取到用户的openID(加密后的微信号,每个用户对应每个公众号的openID是唯一的).通过openID可以获取到包括昵称.头像.性别.所在城市.语 ...
- oracle scn超了,Oracle安全 - SCN的可能最大值与耗尽问题
在2012年第一季度的CPU补丁中,包含了一个关于SCN修正的重要变更,这个补丁提示,在异常情况下,Oracle的SCN可能出现异常增长,使得数据库的一切事务停止,由于SCN不能后退,所以数据库必须重 ...
- 获取当前月的 下一个月1号
获取当前月的 下一个月1号 private static Date TimeTools(Date date) throws ParseException {Calendar calendar = Ca ...
- 线下活动抽奖PHP源码,对接公众号,实现关注公众号发送关键字获取抽奖码,通过平台进行摇号抽奖,可以二次开发(所有公众号都可对接)
最近公司需要做一款通过公众号获取幸运码抽奖的程序 跟微信公众号对接肯定得去看公众号开发文档,我花了几分钟大致了阅览了一下,满足发送关键词然后获取抽奖码功能无需申请任何权限,所有公众号都拥有的这个权限, ...
- PHP 根据身份证号码,获取性别、获取生日、计算年龄、获取地址、获取生肖、获取星座、以及判断是否是身份证号
PHP 根据身份证号码,获取性别.获取生日.计算年龄.获取地址.获取生肖.获取星座.以及判断是否是身份证号 方法教程: 1.PHP根据身份证号码,获取性别. 2.PHP根据身份证号码,获取生日. 3. ...
- linux查询网卡bdf信息,Linux获取pci设备的厂商号、设备号、class号
要描述一个pci设备,就需要知道设备的厂商号(venderId).设备号(devId)和class号.那么,在Linux系统中,如何获取这三个数据呢? 既然是一个pci设备,那么首先就得知道BDF-- ...
- Unity实现在Android端获取Android手机的唯一ID(设备号)(亲测Android11可用)
Unity实现在Android端获取Android手机的唯一ID(设备号)(亲测Android11可用) 备注:测试版本Unity2020,理论上Unity2018以上都可用,未做测试 - 文章初衷 ...
最新文章
- Java有线程安全的set吗?
- 关闭文件夹或打印机共享服务器,局域网共享打印机好用,但文件夹不能访问
- Annotation 注解
- 使用Servlet上传多张图片——Service层(ProductInfoService.java和ProductInfoServiceImpl)
- tcp选项部分编码_学习编码中最难的部分也是最有趣的部分
- 字符ascii码值转换_没想到 Unicode 字符还能这样玩?
- maven学习笔记第一节一-maven install 模块之间相互引用
- 常用Feed流架构实现
- IntelliJ IDEA如何修改背景颜色样式
- caffe 使用笔记
- Atitit 定时器timer 总结 目录 1.1. Js定时器 window.setInterval	1 2. Java定时器 timer	1 1.1.Js定时器 window.setInter
- stmt php,PHP mysqli_stmt_free_result() 函数用法及示例
- 浙江海洋大学计算机 周斌,浙江海洋大学2018年硕士研究生调剂拟录取名单公示(一)...
- 档案+户口+租房,你都清楚了吗?
- Java 获取文件的真实类型,修改后缀名也能识别出来
- Thinkphp内核SEO按天关键词计费排名查询系统源码
- Git 之三 常用命令:仓库创建、提交、分支等
- c++/qt/opencv实现魔方复原【娱乐】
- 【该文章已被封禁】区块链钱包APP逆向分析及实现
- 二叉树的递归遍历(树UVa548 紫书p155)
热门文章
- openpyxl 的用法
- FPGA底层资源综述
- java 黑白皇后算法_不思议迷宫黑白皇后最后两个阶段怎么过
- java实验报告替换错别字,JavaScript replace new RegExp使用介绍
- 【UV打印机】波形开发-开发流程(四)
- html表格边框为void,将表格边框设置为THICK(Setting Table borders to THICK)
- 华虹USB-KEY for WinCE.NET驱动程序的编写
- 路径偏移定位不准确?华为定位SuperGNSS技术帮您解决这一难题!
- 龙之谷微信该服务器已爆满,微信一区爆满 还能进吗
- 如果程序员是士兵,那编程语言会是什么样的武器?