码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • golang 解析oracle 数据文件头


    1. package main
    2. import (
    3. "encoding/binary"
    4. "fmt"
    5. "io"
    6. "os"
    7. )
    8. // Powered by 黄林杰 15658655447
    9. // Usered for parser oracle datafile header block 1 ....
    10. // oracle 数据文件头块解析
    11. // KCBlockStruct represents the structure of the Oracle block
    12. type KCBlockStruct struct {
    13. TypeKCBH byte
    14. FrmtKCBH byte
    15. RDBAKCBH uint32
    16. ChkvalKCBH uint16
    17. KCCFHDBI uint32
    18. KCCFHDBNX []byte
    19. KCCFHCSQ uint32
    20. KCCFHFSZ uint32
    21. KCCFHFNO uint16
    22. KCCFHTYP uint16
    23. KCVFHRDB uint32
    24. KSCNBAS uint32
    25. KSCNWRP uint16
    26. KCVFHCRT uint32
    27. KCVFHRLC uint32
    28. KCVFHRLS struct {
    29. KSCNBAS uint32
    30. KSCNWRP uint16
    31. }
    32. KCVFHBSBSC struct {
    33. KSCNBAS uint32
    34. KSCNWRP uint16
    35. }
    36. KCVFHSTA uint16
    37. KCVFHCPC uint32
    38. KCVFHCCC uint32
    39. KCVFHTSN uint32
    40. KCVFHTLN uint16
    41. KCVFHTNM [30]byte
    42. KCVFHPRC uint32
    43. KCVFHPRS struct {
    44. KSCNBAS uint32
    45. KSCNWRP uint16
    46. }
    47. KCVCPSN struct {
    48. KSCNBAS uint32
    49. KSCNWRP uint16
    50. }
    51. KCVCPTime uint32
    52. KCVCPThr uint16
    53. KCVCPRA struct {
    54. KCRBASEQ uint32
    55. KCRBABNO uint32
    56. KCRBABOF uint32
    57. }
    58. // Add more fields based on your structure
    59. }
    60. func main() {
    61. // Open the Oracle data file
    62. file, err := os.Open("C:\\Users\\ZMI\\Desktop\\asm-diskb\\newoasm\\SYSTEM.260.1096299059.dbf")
    63. if err != nil {
    64. fmt.Println("Error opening file:", err)
    65. return
    66. }
    67. defer file.Close()
    68. // Read the first block (assuming 8192 bytes)
    69. blockSize := 8192
    70. block := make([]byte, blockSize)
    71. // 指定要读取的块号
    72. blockNumber := 1
    73. // 计算块的偏移量
    74. blockOffset := blockSize * blockNumber
    75. // 移动文件指针到块的起始位置
    76. _, err = file.Seek(int64(blockOffset), io.SeekStart)
    77. if err != nil {
    78. fmt.Println("Error seeking to block:", err)
    79. return
    80. }
    81. _, err = file.Read(block)
    82. if err != nil {
    83. fmt.Println("Error reading file:", err)
    84. return
    85. }
    86. hexString := fmt.Sprintf("%X", block)
    87. // 打印结果
    88. fmt.Println("oracle 8kb block Hexadecimal representation:", hexString)
    89. // Parse the block using the defined structure
    90. kcBlock := parseKCBlock(block)
    91. // Print the extracted information
    92. fmt.Printf("TypeKCBH: %X\n", kcBlock.TypeKCBH)
    93. fmt.Printf("FrmtKCBH: %X\n", kcBlock.FrmtKCBH)
    94. fmt.Printf("RDBAKCBH: %X\n", kcBlock.RDBAKCBH)
    95. // Print more fields as needed
    96. fmt.Printf("KCCFHDBI: %d\n", kcBlock.KCCFHDBI)
    97. fmt.Printf("KCCFHDBNX: %s\n", kcBlock.KCCFHDBNX)
    98. }
    99. func parseKCBlock(block []byte) KCBlockStruct {
    100. kcBlock := KCBlockStruct{
    101. TypeKCBH: block[0],
    102. FrmtKCBH: block[1],
    103. RDBAKCBH: binary.LittleEndian.Uint32(block[4:8]),
    104. // Parse more fields based on your structure
    105. KCCFHDBI: binary.LittleEndian.Uint32(block[28:32]),
    106. KCCFHDBNX: block[32:40],
    107. }
    108. return kcBlock
    109. }

    ##代码执行结果:

    ##下载地址:

    oracle11g数据文件头block1解析资源-CSDN文库

  • 相关阅读:
    第十三届蓝桥杯C++B组国赛I题——齿轮 (AC)
    kivy教程之在 Kivy 中支持中文以构建跨平台应用程序(教程含源码)
    模板特化 用法
    我把问烂了的⭐MySQL⭐面试题总结了一下(带答案,万字总结,精心打磨,建议收藏)...
    C语言中文网 - Shell脚本 - 5
    基于Springboot旅游网站管理系统、Springboot旅游线路和景点网站系统设计与实现 毕业设计开题报告
    监控 5 分钟抓拍一次人脸,不够 89 次算旷工,居家办公员工:不敢去厕所
    codesys 6轴机器人正解程序
    【ICCV 2019】ACNet: 使用非对称卷积块增强CNN的卷积核骨架
    聊聊什么是SpringBoot 的自动装配原理
  • 原文地址:https://blog.csdn.net/royjj/article/details/134421174
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号