ASM 磁盘组也可以当成AIX的VG来用

Monday, July 21st, 2008

当多台AIX连接相同的SAN存储时,存储lun可以同时输出到各个主机,这样VG可以在各个主机自由的切换,
为拷贝转移文件提供了极大的便利,现在发现ASM也可以这么做
我们的RAC环境是4个linux接点加一个linux standby
存储输出是4个lun ,disk[1,2,3,4],每个512G,每个lun都同时输出到5台主机,
其中disk1,disk2作为4个RAC接点的共享磁盘,做了裸设备,并创建了asm磁盘组 mydiskgroup
disk3,disk4作为standby的磁盘,也做了asm磁盘组 diskgroupstb
现在rac里面已经导入了点数据,数据库有400G,要做standby,走网络拷贝到备机上感觉太慢了,就试了下上面的想法
1.备机上卸载磁盘组diskgroupstb
@>shutdown immediate;
ASM diskgroups dismounted
ASM instance shutdown
2.4个rac接点的ASM参数文件修改asm_diskstring
@>alter system set asm_diskstring=’/opt/oracle/oradata/myasm/disk[1,2,3,4]‘ scope = spfile;
System altered.
3.重起asm,并挂上diskgroupstb
@>startup force;
ASM instance started
Total System Global Area  283930624 bytes
Fixed Size                  2143704 bytes
Variable Size             256621096 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted
@>show parameter string
NAME                                 TYPE        VALUE
———————————— ———– ——————————
asm_diskstring                       string      /opt/oracle/oradata/myasm/disk
                                                 [1,2,3,4]
@>alter diskgroup diskgroupstb mount;
Diskgroup altered.
ASMCMD> ls -l
State    Type    Rebal  Name
MOUNTED  EXTERN  [...]

Oracle 11G RAC环境的load balance + TAF配置

Monday, July 14th, 2008

一.客户段的load balance + TAF
sword =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = hack1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = hack2-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = hack3-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = hack4-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (FAILOVER = ON)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME [...]

我的一些分析

Wednesday, July 9th, 2008

今天一个QQ朋友告诉我,他的数据库有点问题,’Checkpoint not complete’。我叫他ALTER文件传过来,下面是我的一些分析:
1:日志切换太频繁,几乎是1分钟不到,就切了(还是归档模式,50M一个)。建议加大日志组成员,另建议问问开发,到底在跑什么?因为晚上11点的LOG,还是很频繁;
2:他说查询很慢,我看了ALTER文件,发现才1.1G的SGA,data buffer就1G,但是PGA倒是有400多M,
如果内存不多的话,还不如PGA小点,多给点databuffer.
我不相信,他的数据库命中率有100%,估计也不可能,因为写日志太频繁了,根据LRU来说,总是有写data buffer要换进换出。
PS:因为我只看到了ALTER文件,所以只能这样定性了。人家没给STATSPACK。
好像有点武断的成分,但是确实也只能这样了。

ORACLE RAW类型的存储

Wednesday, July 9th, 2008

最近我管的数据库,上了一套新的系统:《工作流引擎――JBPM》。表上使用了一种很孤僻的类型: RAW。
开发就是把一个对象直接存入到DB里了,额的神啊。。。。这样设计上是方便了,DB这边就不方便了啊。说实话,用不用RAW类型,Donny和我最最关心的还是数据本身的存储,担心RAW和LOB类型的字段一样,存储在别的Segment上。验证了下一下,这种担心不必了。验证如下:
@>SELECT DISTINCT segment_type FROM user_segments;
SEGMENT_TYPE
——————
INDEX
TABLE
@>desc JBPM_BYTEBLOCK
 Name                                                                                Null?    Type
 ———————————————————————————– ——– ——————————————————–
 PROCESSFILE_                                                                        NOT NULL NUMBER(19)
 BYTES_                                                                                       RAW(1024)
 INDEX_ 
 

看样子全文索引,还需要定期BUILD

Monday, July 7th, 2008

今天有人告诉我数据库上有如下错误:

很明显是全文索引的错误,我接下去做了rebuild ,还不能REBUILD ONLINE,FT~···
 
@>alter index SFA_ACCOUNT_COM_CTXIND rebuild online;
alter index SFA_ACCOUNT_COM_CTXIND rebuild online
*
ERROR at line 1:
ORA-29874: warning in the execution of ODCIINDEXALTER routine
ORA-29960: line 1,
DRG-10595: ALTER INDEX SFA_ACCOUNT_COM_CTXIND failed
DRG-10562: missing alter index parameter
 
 
@>alter index SFA_ACCOUNT_COM_CTXIND rebuild;
Index altered.
 
接下去,一切正常了:
 
查了METALINK:
Bug# 3039404   See Note 3039404.8
      OERI[12406] using NOT CONTAINS with local partitioned TEXT index
      Fixed: 9.2.0.5, 10.1.0.2

Oracle version explain

Wednesday, June 4th, 2008

See figure:
 

关于PGA的大小

Monday, June 2nd, 2008

前几天MSN上有个朋友的数据库PGA设置了4G,忽然整个os里,PGA占了10多个G。这个问题我一直耿耿于怀,记得Donny曾经说过,今天终于在聊天记录找到了。
“In the latest release 10.2 Oracle changed these default values. The memory allocated to a single SQL operator  (_smm_max_size) is limited to:

for P_A_T <= 500MB   the parameter _smm_max_size = 20% of P_A_T
 

for P_A_T between 500MB and 1000MB the  parameter _smm_max_size = 100M
 

for P_A_T betweeen 1001MB and 2560MB (2.5GB) the parameter _smm_max_size =  10% of P_A_T
 

for [...]

When Rebuild INDEX?

Monday, May 26th, 2008

大家都知道analyze来分析统计信息,但是很少用来分析表或者索引是否有坏块。(主要是指逻辑坏块,不是介质坏块)。
其实analyze index?xx validate structure;对于DBA来说,还有另外的作用,就是何时该REBUILD INDEX;
范例如下:
@>analyze index ZEUS_CUSTOMER_AI1_OI_IND validate structure;
Index analyzed.
@>select name,height,lf_rows,del_lf_rows from index_stats;
NAME?????????????????????????????? HEIGHT??? LF_ROWS DEL_LF_ROWS
—————————— ———- ———- ———–
ZEUS_CUSTOMER_AI1_OI_IND??????????????? 3???? 941235???????? 691
@>
lf_rows表示这个INDEX有多少的叶子节点;
del_lf_rows表示有多少个叶子节点被删除了。
PS:说实话,在我管的几个系统里,物理删除真的很少,很少。

DBA