发表于: 2005.05.05 17:14
分类: Oracle is anything
出处: http://bitirainy.itpub.net/post/330/28684
---------------------------------------------------------------
比如AIX下control block 为4k,则当我们在LVM中做了stripe ,假定为64k,而oracle的block我们假定使用8k,则oracle实际使用的raw device从 offset 4k开始,也就是说,在条带化的第一个磁盘的64k中只能容纳7*8+4 个block(64k - 4k = 60k),这样将有一个oracle block 跨越在两块磁盘之间。由于control block的存在,使得oracle在每一个stripe size 的磁盘单元上都会有一个 1/2 oracle block。这样一方面固然对性能有一些影响,另一方面更重要的是oracle block在io的时候跨越在多个磁盘上,这时如果掉电,就可能使得正在写入的这种oracle block不一致(一块磁盘完成另一块没完成)。 如果恰好是system 表空间的重要block,则数据库将无法启动。
由此看来,若 control block 小于oracle block,或者不是oracle block的整数倍,再结合有些大小的stripe size ,则可能造成这个问题。在AIX lvm 中,创建vg若是 big vg,则可以通过 -T O 参数在其中创建LV,这样在lv头部就不存在control block。从而避免这个问题。
参考如下:
mkvg -B -s 32M -y dbvg01 hdisk10 hdisk11 hdisk12 ...
mklv -y ocn_128m_01 -T O -S 64k -C 4 -t raw dbvg01 4
mklv -y ocn_128m_03 -S 64k -C 4 -t raw dbvg01 4
我们在两个raw device上都创建spfile:
create pfile='/opt/oracle/oradata/ocndb/test10' from spfile='/dev/rocn_128m_01';
create spfile='/dev/rocn_128m_03' from pfile='/opt/oracle/oradata/ocndb/test10' ;
我们通过dd来看前面4k的内容
下面是没有使用 -T O (注意这个大写的O而不是数字0),这样前面4k记录了control block 信息
dd if=/dev/rocn_128m_03 bs=4096 count=1|more
AIX LVCBraw00c07fec00004c0000000103ocn_128m_03Thu May 5 14:15:18 2005
Thu May 5 14:15:18 2005
07FEC4C00nxms^P^P^ANone^P^Q82c666fc.114
+Standard input: END0 records in.
1+0 records out.
下面是使用了 -T O 创建的lv,前面4k就已经是记录了 spfile信息,没有control block信息。
dd if=/dev/rocn_128m_01 bs=4096 count=1|more
^E^B^B^Ci!:a,*.background_dump_dest='/opt/oracle/admin/ocndb/bdump'
*.compatible='9.2.0.0.0'
*.control_files='/opt/oracle/oradata/ocndb/control01.ctl','/opt/oracle/oradata/ocndb/control02.ctl'
*.core_dump_dest='/opt/oracle/admin/ocndb/cdump'
*.db_block_size=8192
*.db_cache_size=8589934592
*.db_domain='db.alibaba.com'
*.db_file_multiblock_read_count=16
*.db_name='ocndb'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name='ocndb'
*.java_pool_size=20971520
*.large_pool_size=52428800
*.open_cursors=300
*.pga_aggregate_target=4395630592
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=524288000
*.sort_area_size=524288
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/opt/oracle/admin/ocndb/udump'
+Standard input: END0 records in.
1+0 records out.











