优化数据结构提高读写速度
在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相对比下。