当前位置: 首页 > news >正文

Oracle 10g中SCN与TimeStamp的斗转星移

来源:赛迪网作者:Alice


在Oracle数据库10g中,提供了函数对于SCN和时间戳进行相互转换(作为对于闪回操作的一个增强),本文将通过一个示例进行具体分析:

具体示例如下:

第一步,我门可以通过dbms_flashback.get_system_change_number获得系统当前的SCN值:

<ccid_nobr></ccid_nobr>
<ccid_code>SQL&gt; col scn for 9999999999999<br>SQL&gt; select dbms_flashback.get_system_change_number scn from dual;<br><br>SCN<br>--------------<br>8908390522972</ccid_code>

然后,通过scn_to_timestamp函数可以将SCN转换为时间戳:

<ccid_nobr></ccid_nobr>
<ccid_code>SQL&gt; select scn_to_timestamp(8908390522972) scn from dual;<br><br>SCN<br>-----------------------------------------------------------<br>05-JAN-07 10.56.30.000000000 AM</ccid_code>

此处,可以通过timestamp_to_scn可以将时间戳转换为SCN:

<ccid_nobr></ccid_nobr>
<ccid_code>SQL&gt; select timestamp_to_scn(scn_to_timestamp(8908390522972)) scn from dual; <br>SCN<br>--------------<br>8908390522972</ccid_code>

通过以上这两个函数,Oracle得以将SCN和时间的关系建立起来,而在Oracle数据库10g之前的版本,却无法通过函数转换得到SCN和时间的对应关系,一般情况下只能通过logmnr分析日志获得。

注:此类转换需要依赖于数据库内部的数据记录,对于持久的SCN则不能转换,示例如下:

<ccid_nobr></ccid_nobr>
<ccid_code>SQL&gt; select min(FIRST_CHANGE#) scn,max(FIRST_CHANGE#) scn from v$archived_log;<br><br>SCN SCN<br>------------------ ------------------<br>8907349093953 8908393582271<br><br>SQL&gt; select scn_to_timestamp(8907349093953) scn from dual;<br>select scn_to_timestamp(8907349093953) scn from dual<br>*<br>ERROR at line 1:<br>ORA-08181: specified number is not a valid system change number<br>ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1<br>ORA-06512: at line 1<br><br><br>SQL&gt; select scn_to_timestamp(8908393582271) scn from dual;<br><br>SCN<br>--------------------------------------------------------<br>05-JAN-07 11.45.50.000000000 AM</ccid_code>

相关文章:

  • markdown编辑器范例
  • 小型机术语详解
  • 压缩感知:稀疏信号重建
  • 八年书生感悟
  • 圆盘定理
  • 实对称阵的谱半径是连续函数
  • 信用卡套现~
  • 所有特征值大于零的矩阵一定是正定阵吗?
  • H236各个版本的区别总结
  • java小游戏——扫雷
  • 什么叫SAP-IDES
  • java 稀疏矩阵
  • 什么是聚集索引,什么是非聚集索引,什么又是主键?
  • 图的最短路径算法——Dijkstra算法的 java 实现
  • 开源软件七种盈利模式
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Android系统模拟器绘制实现概述
  • avalon2.2的VM生成过程
  • crontab执行失败的多种原因
  • Git同步原始仓库到Fork仓库中
  • Hibernate【inverse和cascade属性】知识要点
  • javascript从右向左截取指定位数字符的3种方法
  • Linux各目录及每个目录的详细介绍
  • MySQL-事务管理(基础)
  • Python实现BT种子转化为磁力链接【实战】
  • 编写高质量JavaScript代码之并发
  • 程序员该如何有效的找工作?
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 高性能JavaScript阅读简记(三)
  • ------- 计算机网络基础
  • 记一次和乔布斯合作最难忘的经历
  • 在Docker Swarm上部署Apache Storm:第1部分
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • (Java)【深基9.例1】选举学生会
  • (二)c52学习之旅-简单了解单片机
  • (二)fiber的基本认识
  • (二)学习JVM —— 垃圾回收机制
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (十八)SpringBoot之发送QQ邮件
  • (转)winform之ListView
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .gitignore文件设置了忽略但不生效
  • .NET Core引入性能分析引导优化
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net环境下的缓存技术介绍
  • .NET开发人员必知的八个网站
  • .NET业务框架的构建
  • .net中的Queue和Stack
  • .Net转前端开发-启航篇,如何定制博客园主题
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • []T 还是 []*T, 这是一个问题