oracle 集群中全局对象的查询
来源:互联网 发布:安卓平台c语言编译器 编辑:程序博客网 时间:2024/04/28 15:45
最近在写一个监控oracle运行状况的程序,其中对锁事件的监控 遇到了一个麻烦:
我们的数据库是采用3节点的集群,而数据库锁是存在于某一个具体数据库实例上的数据库对象,这样导致的问题就是只有当我连接到某一实例上,我才能获取该实例上有哪些锁对象及其相关信息。但是我的程序要能获取到集群中全部节点上的锁信息。显然这里是一个矛盾了。 经过一番折腾,最后演进出如下的几个办法,发现采用Oracle内建的gv视图方案是最优的。
方案一:多数据源连接
方案:在程序中建立到集群中全部节点的连接,然后遍历,将获取到的结果信息汇总叠加得出最终的全局信息。
缺点:一般而言,一个程序只会建立一个数据库连接,整个程序都依赖于这个数据库链接存取数据。另外操作起来也十分繁琐
方案二:DB_LINK+VIEW
方案:在程序中只建立到具体一个实例的连接,在这个实例上建立到其它实例的db_link,然后将监控写在view中供程序调用
优点:将对多个数据库连接从程序代码中解放出来,拿到了数据库视图中,使程序可以保持一个数据源连接;通用性强
缺点:操作上仍然感觉比较繁琐,而且程序移至时需要修改视图
方案三:使用Oracle内建的gv视图
方案:经过百度得知,Oracle内建了gv视图来支撑集群的全局查询。在单个节点上,我们会使用v$session、v$lock,到了集群环境我们可以在单个节点上使用gv$session、gv$lock
优点:完全符合通常在单个节点上的操作,把集群变成了单个节点。
缺点:由于是Oracle内建特性,因此当更换数据库时需要修改(或许这也不是什么缺点)
总结:综上可知,方案三是最优的方案,方案二次之,方案三应该放弃。
- oracle 集群中全局对象的查询
- Oracle中查询各种对象的方法小结
- ORACLE 查询表空间中对象的大小
- Oracle中查询最近修改的数据对象
- javascript中全局对象的parseInt() 方法
- javascript中全局对象的isNaN()方法
- JavaScript 的全局对象
- oracle 数据库的常用查询对象
- 在 Visual C++ 中控制全局对象的初始化顺序
- eclipse插件开发中全局对象的获取
- 游戏中产生全局对象惟一ID的方法
- javascript中全局对象的parseInt()方法使用介绍
- C++中关于全局对象的初始化顺序
- 浅析JavaScript中两种类型的全局对象/函数
- C++中关于全局对象的初始化顺序
- oracle 中查询被锁的对象,并杀死死锁进程的方法
- oracle 中查询被锁的对象,并杀死死锁进程的方法
- oracle中全局数据库名和SID的区别
- 浅谈PE文件格式
- Linux 文件内容查看工具介绍
- sql server 2005 无法安装 manager studio 的问题
- 长门组织(CMO)成立啦!
- #pragma pack(n) 用法
- oracle 集群中全局对象的查询
- C++模板编译模型:包含编译模型
- 内部排序
- xampp下安装phpunit小记
- 淘宝屏蔽百度
- VC++基础 判断键盘消息
- 破解Xcode3.2.3,部署你的应用到真机
- Linux下面 mplayer播放器报错
- 人人都为什么努力着?