使用C语言直接访问SGA

作者介绍:

姜刚 云和恩墨技术顾问

2017年3月加入云和恩墨,熟悉shell、perl脚本等。

为了加深对ORACLE数据库结构的了解,我们今天从C语言的角度,讲解如何使用C语言直接访问SGA。

基于的事实:

1、数据库启动后会分配共享内存(在ORACLE中称为System Global Area[SGA])

2、数据库中X$开头的表都是内存映射表

3、在Linux/Unix下提供了C的Lib库可以访问共享内存(shmat,shmdt,shmget等)

以GV$SESSION_WAIT为例

查看GV$SEESSION_WAIT的定义

通过上述创建视图信息,我们知道v$session_wait是建在X$KSUSECST和X$KSLED两个内存映射表上的,其访问路径是类似下图:

共享内存结构

获取SGA起始地址语句如下:

select ‘0x’||addr from X$KSMMEM where rownum<2;

X$KSUSECST在内存中的位置

获取X$KSUSECST起始地址:

Select min(addr) as BEGIN_ADDR from X$KSUSECST

获取在内存中的记录数:

Select count(*) as RECORD_SZ from X$KSUSECST

X$KSUSECST在内存区域的范围

每个记录数的长度:

Select to_dec(e.addr)-to_dec(s.addr) as LENGTH from (select min(addr) as addr from X$KSUSECST where rownum<2) s, (select max(addr) as addr from X$KSUSECST where rownum<3) e

获取每个字段的偏移量:

通过上述几个信息收集,我们获得了以下信息:

附录

C语言代码:

参考资料:

http://www.doc88.com/p-113695303367.html http://oraperf.sourceforge.net/

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-09-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Linux驱动

8.中断按键驱动程序之poll机制(详解)

本节继续在上一节中断按键程序里改进,添加poll机制. 那么我们为什么还需要poll机制呢。之前的测试程序是这样: while (1) { read(fd, &...

1756
来自专栏好好学java的技术栈

http简介看这篇就够了

协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要...

952
来自专栏大内老A

ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存

.NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中。对于...

22310
来自专栏腾讯移动品质中心TMQ的专栏

运用AOP思想更优雅地进行性能调优

在软件测试中,如果想在一个耗时严重的操作中找出其耗时的瓶颈时,一般采用的方法是在每个被调用的函数中写进测试代码,在运行时打出日志。如果该操作涉及到的业务逻辑特别...

1789
来自专栏Golang语言社区

GO语言异常处理机制panic和recover分析

Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错误,与 error 不同,panic-recover 一...

2878
来自专栏大学生计算机视觉学习DeepLearning

c++ 网络编程(七)TCP/IP LINUX下 socket编程 基于套接字的标准I/O函数使用 与 fopen,feof,fgets,fputs函数用法

原文链接:https://www.cnblogs.com/DOMLX/p/9614820.html

1124
来自专栏瓜大三哥

Yaffs_guts

Yaffs_guts ? 1.Chunk的读写擦除 2.文件地址映射 3.文件系统对象 1.Chunk的读写擦除 我们知道,NAND Flash的基本擦除单位是...

18810
来自专栏土豆专栏

Java面试之基本概念(二)

当两个线程竞争同一资源的时候,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。

2025
来自专栏瓜大三哥

XDC

## Timing Assertions Section # Primary clocks # Virtual clocks # Generated clock...

20410
来自专栏lulianqi

在物理内存中观察CLR托管内存及GC行为

虽然看了一些书,还网络上的一些博文,不过对CLR托管内存细节依然比较模糊。而且因为工作原因总会有很多质疑,想要亲眼看到内存里二进制数据的变化。

843

扫码关注云+社区