单从“客体重用”的概念来说,它指的是在对客体初始指定、分配或再分配一个主体之前,撤销该客体所含信息的全部授权,当主体获得对一个已被释放客体的访问权时,当前主体不能获得原主体活动所产生的任何信息。
数据库客体(主要指数据库对象、数据文件、缓存区)回收后不做处理,直接分配给新来的请求,但是有些窃密者会利用这一点编写特殊的非法进程通过数据库管理系统的内存泄露来获取数据库系统的信息,这是极为不安全的。
为防止非法进程利用数据库客体的内存泄露来攻击数据库,DM 主要从内存和文件两个方面进行了处理:
内存重用:DM 从系统分配内存及释放内存时均对内存内容进行清零,以保证不利用内存中前一进程所残留内容,且不泄漏 DM 的内容给其他进程。
文件重用:DM 在系统生成、扩展及删除文件时,对文件内容也进行了清零。
DM 提供了 INI 参数 ENABLE_OBJ_REUSE 用来控制是否启用客体重用功能,将该参
数置为 1 表示启用客体重用,0 表示不启用,默认为 0。
系统管理员可通过查询 V$PARAMETER
动态视图查询 ENABLE_OBJ_REUSE 的当前值。
SELECT * FROM V$PARAMETER WHERE NAME='ENABLE_OBJ_REUSE';
ENABLE_OBJ_REUSE 为静态参数,管理员可通过使用 DM 系统过程
SP_SET_PARA_VALUE 来修改该参数值,也可以使用 DM 控制台 Console 工具对该参数进行配置,不过配置后都需要重新启动 DM 数据库服务器才能生效