scn

oracle通过修改控制文件scn推进数据库scn

北城以北 提交于 2020-01-15 16:08:51
数据库当前scn 代码如下 复制代码 idle> select checkpoint_change# from v$database; CHECKPOINT_CHANGE# ------------------ 271743118 idle> shutdown abort ORACLE 例程已经关闭。 分析控制文件中scn 这里我们可以看到加粗部分为数据库scn 代码如下 复制代码 SQL>select to_number('10327a59','xxxxxxxxx') from dual; TO_NUMBER('10327A59','XXXXXXXXX') --------------------------------- 271743577 这里的scn值和在数据库中查询的值有小差别,因为查询时间点和我完全关闭数据库有个时间差,而这个时间差有scn变化.细红框部分为控制文件对块的验证信息 修改控制文件scn和验证信息 验证信息修改为全部0,scn信息你可以根据你的需求去修改,这里把数据库的scn修改为57253932971026,按照数据库的原理,启动后的scn应该稍微大于该scn值. 代码如下 复制代码 SQL>select to_number('341278563412','xxxxxxxxxxxxxxxxx') from dual; TO_NUMBER(

Oracle数据库中几种常见的SCN

泄露秘密 提交于 2020-01-15 16:08:00
控制文件中的SCN 数据文件头的SCN 数据块中的SCN 日志文件头中的SCN 事务SCN 内存中的SCN 一 控制文件中的SCN 1.1 数据库SCN 数据库SCN表示最近一次全量checkpoint操作时的SCN SQL> select checkpoint_change# from v$database; CHECKPOINT_CHANGE# ------------------ 1744125 dump控制文件语法 alter session set events 'immediate trace name controlf level n'; 1 文件头信息 2 level 1+数据库信息+检查点信息 3 level 2+可重用节信息 10 level 3 dump控制文件获取到的数据库SCN为0x00000000001a9cfd,转换为十进制为1744125 *** 2017-02-15T10:59:12.367312+08:00 DUMP OF CONTROL FILES, Seq # 1522 = 0x5f2 V10 STYLE FILE HEADER: Compatibility Vsn = 203423744=0xc200000 Db ID=1463703229=0x573e56bd, Db Name='ORCL' Activation ID=0=0x0

oracle运行机制

不问归期 提交于 2019-12-20 18:18:51
我们从一个用户请求开始讲,ORACLE的完整的工作机制是怎样的,首先一个用户进程发出一个连接请求,如果使用的是主机命名或者是本地服务命中的主机名使用的是机器名(非IP地址),那么这个请求都会通过DNS服务器或HOST文件的服务名解析然后传送到ORACLE监听进程,监听进程接收到用户请求后会采取两种方式来处理这个用户请求,下面我们分专用服务器和共享服务器分别采用这两种方式时的情况来讲: 专用服务器模式下: 一种方式是监听进程接收到用户进程请求后,产生一个新的专用服务器进程,并且将对用户进程的所有控制信息传给此服务器进程,也就是说新建的服务器进程继承了监听进程的信息,然后服务器进程给用户进程发一个RESEND包,通知用户进程可以开始给它发信息了,用户进程给这个新建的服务器进程发一个CONNECT包,服务器进程再以ACCEPT包回应用户进程,致此,用户进程正式与服务器进程确定连接。我们把这种连接叫做HAND-OFF连接,也叫转换连接。 另一种方式是监听进程接收到用户进程的请求后产生一个新的专用服务器进程,这个服务器进程选用一个TCP/IP端口来控制与用户进程的交互,然后将此信息回传给监听进程,监听进程再将此信息传给用户进程,用户进程使用这个端口给服务器进程发送一个CONNECT包,服务器进程再给用户进程发送一个ACCEPT包,致此,用户进程可以正式向服务器进程发送信息了

oracle之检查点(Checkpoint)

不羁的心 提交于 2019-12-20 02:16:57
检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件。 检查点分为三类: 1)局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。 触发命令: svmrgrl>alter system checkpoint local; 这条命令显示的触发一个局部检查点。 2)全局检查点:所有实例(对应并行数据服务器)执行数据库所有所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。 触发命令 svrmgrl>alter system checkpoint global; 这条命令显示的触发一个全局检查点。 3)文件检查点:所有实例需要执行数据文件集的一个检查点操作,如使用热备份命令alter tablespace USERS begin backup,或表空间脱机命令alter tablespace USERS offline,将执行属于USERS表空间的所有数据文件的一个检查点操作。 检查点处理步骤: 1)获取实例状态队列:实例状态队列是在实例状态转变时获得,ORACLE获得此队列以保证检查点执行期间,数据库处于打开状态; 2)获取当前检查点信息:获取检查点记录信息的结构,此结构包括当前检查点时间、活动线程、进行检查点处理的当前线程、日志文件中恢复截止点的地址信息; 3)缓存区标识:标识所有脏缓存区

oracle的SCN和Checkpoint_Change#的关系

非 Y 不嫁゛ 提交于 2019-12-10 16:59:16
我们知道ORACLE中有SCN(System Change Number)和Checkpoint_Change#,那这两者的关系是什么呢,其实Checkpoint_Change#是来源于SCN,SCN是时刻在变化的,Checkpoint_Change#是在数据发生了检查点的时候才改变的,它的值来源于SCN.下面通过一个例子来说明. 1.获取当前的SCN SQL> select dbms_flashback.get_system_change_number() from dual; DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER() ----------------------------------------- 1275075 2.产生检查点 SQL> alter system checkpoint; System altered. 3.从数据文件和数据头文件中查看检查点 SQL> column name format a50; SQL> select name,checkpoint_change# from v$datafile; NAME CHECKPOINT_CHANGE# -------------------------------------------------- ------------------ E:\APP

RMAN-20208: UNTIL CHANGE is before RESETLOGS change

怎甘沉沦 提交于 2019-12-06 00:03:54
执行recover操作时: RMAN> recover database; Starting recover at 28-NOV-19 using channel ORA_DISK_1 starting media recovery channel ORA_DISK_1: starting archived log restore to default destination channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=7 channel ORA_DISK_1: restoring archived log archived log thread=1 sequence=8 channel ORA_DISK_1: reading from backup piece /home/oracle/backup/arc_1025423665_3 channel ORA_DISK_1: piece handle=/home/oracle/backup/arc_1025423665_3 tag=TAG20191127T075425 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete,

Oracle SCN详解

笑着哭i 提交于 2019-12-05 19:08:51
SCN是Oracle中一个很基础的部分,但同时它也是一个很重要的数据:它是系统中维持数据的一致性和顺序恢复的重要标志,是数据库非常重要的一种数据结构。 一,SCN介绍 SCN即系统改变号(System Change Number),是在某个时间点定义数据库已提交版本的时间戳标记。 Oracle为每个已提交的事务分配一个唯一的SCN。 SCN的值是对数据库进行更改的逻辑时间点。 Oracle使用此编号记录对数据库所做的更改。 在数据库中,SCN也可以说是无处不在,数据文件头,控制文件,数据块头,日志文件等等都标记着SCN。也正是这样,数据库的一致性维护和SCN密切相关。不管是数据的备份,恢复都是离不开SCN的。 SCN是一个6字节(48bit)的数字,其值为281,474,976,710,656(2^48),分为2个部分 1. SCN_BASE : 是一个4字节(32bit)的数字 2. SCN_WRAP : 是一个2字节(16bit)的数字 每当SCN_BASE达到其最大值(2^32 = 4294967296)时,SCN_WRAP增加1,SCN_BASE将被重置为0,一直持续到SCN_WRAP达到其最大值,即2^16 = 65536。 SCN =(SCN_WRAP * 4294967296)+ SCN_BASE SCN随着每个事务的完成而增加。 提交不会写入数据文件

逆向-PE头解析

与世无争的帅哥 提交于 2019-12-04 11:35:49
目录 PE头解析 数据结构 IMAGE_DOS_HEADER IMAGE_NT_HEADERS 区块 PE头解析 PE 格式是Windows系统下组织可执行文件的格式。PE文件由文件头和对应的数据组成。目标是在不同的架构下装载器和编程工具不用重写。 PE中一大特点是不连续的位置大部分记录的都是相对地址(RVA),相对的是PE文件中记录的基地址(image base)的偏移量。进程是程序的执行状态的实体,每个进程都有自己独立的内存空间(编址)PE和内核等一起编制,所以image base也不总是确定的。 结构(参考:加密与解密) 数据结构 IMAGE_DOS_HEADER 参考:参考: http://www.openrce.org/reference_library/files/reference/PE%20Format.pdf IMAGE_DOS_HEADER STRUCT { +0h WORD e_magic //Magic DOS signature MZ(4Dh 5Ah) DOS可执行文件标记 +2h WORD e_cblp //Bytes on last page of file +4h WORD e_cp //Pages in file +6h WORD e_crlc //Relocations +8h WORD e_cparhdr //Size of header in

oracle知识点_闪回(flashback)

扶醉桌前 提交于 2019-12-03 18:20:47
刚刚学习了oralce的闪回,所以自己就进行总结一下。 首先总结需要使用闪回来解决问题: 1.错误地删除了记录。 2.错误地删除表 3.查询历史记录 4.如何撤销有一个提交的事务 根据以上的四个问题就来介绍4个闪回类型 1.闪回表 闪回表就是将表回退到过去的一个时间点上。在需要闪回表的时候我们必须要注意的三个条件: (1).SCN(System Change Number) 系统改变号这像事务的回滚点一样,我们必须知道我们的表需要闪回 到哪个时间点上。 查询当前的SCN: SELECT TO_CHAR(systimestamp,'YYYY-MM-DD HH24-MI-SS*FF'), TIMESTAMP_TO_SCN(systimestamp) SCN FROM dual; 我们可以选择闪回表的时间点: FLASHBACK TABLE tb_name TO TIMESTAMP to_date('2014-10-06 00:46:40','YYYY-MM- DD HH24:MI:SS') ; 也可以选择闪回表的SCN值 FLASHBACK TABLE tb_name TO SCN 16400979(要回的SCN的值) (2).在闪回的时候要开启行移动,这要我们要找回来的表的记录才有地方放置 开启行移动:ALTER TABLE tb_name ENABLE ROW MOVEMENT ;

oralce 闪回

给你一囗甜甜゛ 提交于 2019-12-03 18:14:13
sys@ORCL> variable scn number; sys@ORCL> exec :scn :=dbms_flashback.get_system_change_number; PL/SQL procedure successfully completed. sys@ORCL> print scn; SCN ---------- 697882 sys@ORCL> select count(*) from big_table; COUNT(*) ---------- 10005 sys@ORCL> delete from big_table; --删除数据 10005 rows deleted. sys@ORCL> select count(*) from big_table; --检测是否删除 COUNT(*) ---------- 0 sys@ORCL> select count(*) from big_table as of scn:scn; COUNT(*) ---------- 10005 sys@ORCL> commit; --跨事务 Commit complete. sys@ORCL> select * 2 from (select count(*) from big_table),(select count(*) from big_table as of