存储 频道

实战:巧用磁盘管理工具给oracle提速

优化数据结构提高读写速度

    在Oracle 9i之后,oracle使用oracle磁盘管理组件(Oracle Disk Manager)来管理数据文件,提高oracle数据库的输入输出数据吞吐量。Oracle磁盘管理的原理是通过直接将用户数据拷贝到裸设备上,从而减少内核对数据文件加锁和减少多余cache,所以它基本应用在裸设备上,由oracle来管理和控制对于裸设备的读写。

    我们仍然以Veritas的磁盘管理工具软件Storage Foundation为例来说明磁盘管理工具软件对数据文件的优化。Veritas Storage Foundation的组件ODM和Oracle自带的系统优化是同样的原理,唯一不同的是,它可以将数据写在Veritas VxFS文件系统的基础上,至于该软件与Oracle自带的优化功能孰优孰劣,读者可以自己测试一下,根据笔者的经验,由于Veritas Storage Foundation本身是专业的磁盘管理工具软件,在针对Oracle数据库的系统优化上,还是有非常明显的效果。

    但是,Veritas Storage Foundation的ODM组件与Quick IO还是有所不同。他们的区别在于使用Quick IO需要转换数据库文件,然而ODM的使用对于用户来说是透明的。另外oracle 9i之前的用户只能使用Quick IO功能,并不支持ODM功能,同时Quick IO和ODM不能同时使用。

    下面我们来说明一下ODM的用法:

    1. 确认ODM的序列号已经安装;
    # /opt/VRTS/bin/vxlictest -n "VERITAS Storage Foundation
    for Oracle" -f "ODM"

    2. 确定ODM软件包已经安装(以solaris为例):
    # pkginfo |grep VRTSodm

    3. 确认odm的库文件存在:
    # ls –l /opt/VRTSodm/lib/sparcv9/libodm.so (64位操作系统)
    # ls –l /opt/VRTSodm/lib/libodm.so (32位操作系统)

    4. 确认Quick IO没有被使用
    $ dbed_checkconfig -S $ORACLE_SID -H $ORACLE_HOME

    5. 停止oracle 数据库。如果Quick IO 不存在,可以忽律步骤6-7;

    6. 将quick IO数据文件转换为ODM文件格式:
    # /opt/VRTS/bin/qio_getdbfiles -T ora –a
    得出Quick IO的数据库文件
    # /opt/VRTS/bin/qio_convertdbfiles -T ora –u
    将刚才得出的数据库文件转换为非Quick IO的文件

    7. 查看ODM是否在当前数据库已经被使用:
    $ grep ODM /oracle/admin/ORCL/bdump/alert_ORCL.log
    如果该命令得出“Oracle instance running with ODM: Veritas #.# ODM Library, Version #.#”,则说明ODM已经是启动的了;否则就是没有启动。

    8. 将原来的odm库文件用Veritas的替换:
    # mv /oracle/lib/libodm9.so /oracle/lib/libodm9.so.old
    将原有的库文件备份;
    # ln -s /opt/VRTSodm/lib/sparcv9/libodm.so /oracle/lib/libodm9.so
    用Veritas的库文件替换

    9. 因为ODM功能无法与QIO功能一起使用,所以使用ODM之前,必须关闭cache quick IO功能;
     # vxtunefs -o qio_cache_enable=0 $ORACLE_BASE/oradata
     重新启动oracle数据库

    10. 验证ODM已经启动
    $ grep ODM /oracle/admin/ORCL/bdump/alert_ORCL.log
    可以得出Veritas ODM的版本信息
    $ dbed_checkconfig -S $ORACLE_SID -H $ORACLE_HOME
    可以在输出中看到“NOTICE: It appears that your system is ODM enabled.”

    这样,oracle的ODM功能就成功启动了,至于数据库读写速度加快了多少,大家有兴趣可自行测试下,并与前面的Quick IO相对比下。

0
相关文章