教你轻松掌握DB2 9.5的数据库内存保护

 
   | |

导读:在DB2 9.5版本中,数据库引擎转变为线程模式,都在一个地址空间下。不正确数据页会在不察觉的情况下被写入磁盘。可以通过在保护模式下运行用户自定义函数解决。

关键词:DB2 数据库引擎 线程模式 地址空间 数据页 磁盘 函数

正在加载数据...

  在DB2 9.5版本中,数据库引擎由基于过程模式转变为线程模式,这将意味着整个数据库引擎都在一个地址空间下(任何代码段都可以访问任何全局变量)。这自然是有利也有弊。其中一个有利的方面是线程比过程更“轻”,这表示DB2的性能更好。有人做过测试显示DB2 9.5的性能在负荷运行情况下比相同状态下的DB2 9.1提升了2%到5%。

  而不利的方面是,在任何与缓冲池无关的任何db2代码路径中的任何db2错误都有可能会破坏数据页。此外,和db2共享相同地址空间的非保护模式下的用户自定义函数(unfenced UDF)也有可能会破坏内存页。而后,这些不正确数据页就会在毫不察觉的情况下被写入磁盘里,而你很可能永远都不会知道这些数据已经出现了不一致。线程模式还会产生与非保护模式下的用户自定义函数相关的安全问题,因为线程模式在潜在情况下会允许恶意用户代码在没有得到授权的情况下读写数据页。如果在保护(fensed)模式下运行用户自定义函数,这些问题就都不成问题,用户代码会通过一个子过程执行并且会通过IPC与DB2进行交流,唯一的问题就是这样做比在非保护模式下运行要慢很多。

  在IBM的Power6 CPU上市的时候,也带来了一项用于内存保护的新技术就是用户级别存储键技术。这里不是说的内核级别存储键,这个已经存在了一段时间,而用户级别的存储键则是个新东西。存储键能够使应用程序锁定内存页,防止对其进行任何形式的读写组合操作。

  必须支持CPU上的存储键是因为内存访问的速度非常之快(达到纳秒级),在软件水平是无法做到的。存储键使在用户空间执行的DB2引擎能够防止代码段对缓冲池数据页进行无授权的读写操作。当然,如果你是在AIX上运行Power6处理器,那这只是其中一个可选的保护措施。启动该功能需要5%到6%的性能开销。用下面的语句启动该功能:

db2set DB2_MEMORY_PROTECT=yes 
RESTART YOUR INSTANCE

  你需要运行AIX 5.3 ML6(或更高版本)或AIX 6.1版操作系统。

  假如你还在AIX上开发c或c++代码,而且并不适用Java的话,你可以选择使用ukey_protect( address, size, UKEY_PRIVATE)函数来协助保护数据内存结构。

 
来源:赛迪网    作者:Alice    
 
 
 
 
 

DB2安全

 
尽管DAM被大肆炒作,但它仅能对数据安全起到微弱的影响,最终工作需要交由数据库供应商来完成,从而使得IT审计活动变得容易起来。

热门技术手册排行

 

在本次的技术手册中,我们为您提供了PL/SQL的基础知识以及专家指导,包括了PL/SQL中的数据类型简介、PL/SQL函数与触发器以及PL/SQL中的存储过程等,相信您无论是高手还是菜鸟都可以获得有帮助的信息。

 

本系列文章由三部分组成,为Oracle数据库管理员(DBA)面试成功的必备手册。本专题内容囊括从DBA最初的面试开始,从写“杀手简历”到求职信、到面试过程到Oracle认证再到上升到公司高层最后到你成为公司里的明星DBA。专家为你一一指点迷津,最终让你登上成功的宝座。

 

要成为一名DBA,你需要具备哪些素质?DBA的薪酬待遇如何?DBA的职业道路究竟可以走向何方?我们将在本次的技术手册中为您一一解答。

 

在本次技术手册中,我们将对SQL Server存储过程的调试进行详细的介绍,包括了基础的调试方法和在调试过程中出现的T-SQL性能问题和解决方法。

 

本技术专题主要围绕sql server设计这个话题展开,侧重介绍了sql server集簇索引的设计、如何创建sql server索引、如何优化索引、索引的能与不能、处理sql server 2000索引碎片技巧以及维护sql server索引以实现查询优化等等。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录