跟 Inthirties学Oracle之checkpoint中的scn

接上篇 《跟 Inthirties学Oracle之checkpoint由来

 

上回说到了checkpoint的由来,checkpoint的出生意义不在于数据库本身的运行,其真正的价值体现在数据库的crash/instance recovery上。而且不是解决恢复的问题。恢复是比较容易搞定的,解决的是高效恰达好处的问题。做事不难,做到恰到好处就是个学问了,checkpoint就是这个学问。 题目中提到的scn就是我们这个文章的主角了。题目立的是“checkpoint中的scn”, 这里scn绝不应该硬扯为checkpoint里的东西。那么scn是什么东西了。以至于我不得不冒天下之大不韪而将其扯过来叻。

 

SCN,名为 system change number。 又一个容易骗到人的名字。至少我最开始是经常被这个change骗到的。不过顺着自己对oracle的知识足够多的了解,也慢慢体会出Oracle在这个名字上所费尽的心思了,对于了解Oracle不是很系统,不能以面来贯彻体系的朋友,暂时不要去理解这个名词,你就先就把SCN当做一个代号,这个代号标识出Oracle运行的某个时刻。其实在10g里已经完全让我们这样来理解这个scn了。通过scn_to_timestamp我们可以把根据指定的scn号找到对应的数据库时间。 timestamp_to_scn我们又可以根据数据的指定的时间找到此时对应的scn号。我们来看看

SQL> select dbms_flashback.get_system_change_number from dual;
 
GET_SYSTEM_CHANGE_NUMBER
------------------------
                  755287

这里是获取当前的scn号。别看他封在了dbms_flashback里,他绝对不是只和这个有关的。 上面说过来,scn就是标识某个运行点的,其实就是运行的时间, 按照这样。

 

当我们再执行以下上面的方法,结果是不是不一样呀,

 

SQL> select dbms_flashback.get_system_change_number from dual;
 
GET_SYSTEM_CHANGE_NUMBER
------------------------
                  755541

 

答案是肯定的,肯定是不一样的。

 

即使现在没有任何数据写入数据库。我没有做任何修改的操作,你再执行,又会改变。

 

为了帮助你自己,先把system change number从你的脑海里抹掉,知道SCN是这几个词的缩写就可以了,不要再去揣测他了。你现在功力尚浅,小心走了火入了魔。

 

不过还好, 至少你可以看到了,和时间是有关的。(这段并不是有意误导大家,从过来人的体验,现在这样理解容易,以后有能力了,自然就对这个system change number有了更深入的理解而豁然开朗了)。

 

scn和时间之间的转换

SQL> select scn_to_timestamp(755541) from dual;
 
SCN_TO_TIMESTAMP(755541)
--------------------------------------------------------------------------------
03-6月 -10 02.04.31.000000000 下午

 

时间到scn的转换

SQL> select timestamp_to_scn(to_timestamp('2010-06-03 14:04:31', 'yyyy-mm-dd hh24:mi:ss:ff')) from dual;


TIMESTAMP_TO_SCN(TO_TIMESTAMP(
------------------------------
                        755541

 

 

那么这个可以干嘛呀。

 

标识呀,这个最大的功能就是标识了。一旦某些的scn一样,那么我们就知道他们是同一次操作的了。如果不一样,就是不同次的操作了。这样这个scn号就好理解了。

 

既然是scn的作用是标识,那么他都标识在什么重要的东东上呀。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
在Golang运维开发项目实战,你可以考虑以下几个方向: 1. Linux系统管理及Shell脚本编程:掌握Linux系统管理技能,包括系统配置、服务管理、性能优化等,并习Shell脚本编程,以便自动化运维任务。 2. Golang编程基本功:熟悉Golang的语法和基本特性,包括变量、函数、数据结构等,以便编写高效可靠的运维工具和脚本。 3. Golang并发编程及并发编程进阶:习Golang的并发编程模型和相关的并发控制机制,以便处理高并发场景下的运维任务。 4. 程序测试与性能压测:掌握Golang的测试框架和工具,包括单元测试、接口测试、集成测试等,以及性能测试工具,以便保证运维工具的质量和性能。 5. Golang网络编程基础:了解Golang的网络编程基础,包括TCP/UDP通信、HTTP协议等,以便开发网络相关的运维工具和服务。 6. GolangWeb应用框架日志管理方法:习如何使用Golang的日志库,记录和管理运维工具和服务的日志,以便排查问题和监控运行状态。 7. MySQL应用深度实战:掌握Golang与MySQL的集成开发,包括数据库连接、数据操作、事务处理等,以便处理与数据库相关的运维任务。 8. GORM框架(jinzhu、gorm、xorm):习使用GORM框架进行ORM(对象关系映射)开发,简化数据库操作,提高开发效率。 以上是一些在Golang运维开发项目实战的方向,你可以根据自己的兴趣和需求选择适合的方向进行深入习和实践。\[1\] #### 引用[.reference_title] - *1* *3* [小白怎么入门Golang开发实战?看这篇就够啦!(白嫖60G资料)](https://blog.csdn.net/weixin_70257503/article/details/127059787)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [GPE(Grafana+Prometheus+Exporter)项目实战之Golang篇(上)](https://blog.csdn.net/inthirties/article/details/124923659)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值