Archive for April, 2009

>oracle10g和9i性能差异?

>前天一个客户反映相同的dump文件,导入不同的数据库版本中(oracle9i和oracle10g),发现同一条sql执行时间差异很大,在oracle9i中为6.7秒,在oracle10g中为1.7秒,经查,基本参数也是相同的,oracle9i的磁盘时raid5,理论上应该更快一点。
难道是版本原因导致的差异,是以记之~~

Comments

>RedHat as 4 Enterprise 安装 rar

>

1.在以下网址下载对应rar

http://www.rarlab.com/download.htm

2.安装rar

#unzip rarlinux-3.7.1.tar.zip

#cd rar

#make

#make install

3.如果出现依赖的glibc没有装

rar: /lib/tls/libc.so.6: version `GLIBC_2.4′ not found (required by rar)

不要理这个句话。。

找你解压的文件里面有没有rar_static

#cp rar_static /usr/local/bin/rar

就可以了

–end–

Comments

>发现一款装修软件Sweet Home 3D

>眼看房子快要交房了,开始准备装修的事情了。想找一款好点的设计软件,太专业的学习成本高,还是简单实用的好。
发现了一款开源的小软件Sweet Home 3D(有中文版),感觉还不错。
官方网站
直接下载

Comments

>ORACLE 10G 如何使用超过1.7G的内存

>如果你的ORACLE 版本是32位的,如果不做一些配置你是无论如何使用不到1.7G以上内存的。

软件环境:
Oracle 10.2.0.1
OS:Windows 2003 Server SP2 32bit

硬件环境:
内存:4G
CPU:Intel Core(TM)2 6300 1.86Ghz

这个环境很重要,特别是ORACLE的版本,跟ORACLE9i的配置肯定是不一样的。

1) 操作系统配置AWE,主要是修改boot.ini文件

右击”我的电脑”,选择”属性”–>高级选项卡,找到“启动与故障恢复”,单击“设置”,然后单击“编辑”,加/PAE选项,修改后的文件如下:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS=”Windows Server 2003, Enterprise” /noexecute=optout /fastdetect /pae
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Microsoft Windows XP Professional” /fastdetect /NoExecute=OptIn

2) 配置oracle可以使用的内存,修改注册表。
找到ORACLE的注册表项HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1,再你的机器上KEY_OraDb10g_home1不是这个名称,
添加一个字符串值项:AWE_WINDOW_MEMORY ,这个值是你准备分配给数据库用的最大内存数(以BYTE为单位),例如你想分配4G,那这个值就是
4*1024*1024*1024

取可编辑的ORACLE初始化参数文件
Windows 命令行

Sqlplus “/ as sysdba” REM (如果登陆不进去将当前用户加入到ora_dba组中)

SQLPLUS>CREATE PFILE=’初始化参数文件的路径’ from spfile

SQLPLUS>Shutdown immediate

SQLPLUS>exit

4) 编辑ORACLE初始化参数文件
请用Ulatra editor(当然其他的也可以,但是千万不要用记事本) 打开在第三步生成的初始化参数文件(最好能备份一下,以便出现差错的时候还可以使用最初的文件启动)

第一注销掉以下行:
sga_max_size
sga_target
DB_CACHE_SIZE

修改或者添加以下参数
*.db_block_buffers=262144  #等于原来的DB_CACHE_SIZE/db_block_size, 例如你希望DB_CACHE_SIZE的大小是2G,则此值是2*1024*1024K/8K= 262144
*.SHARED_POOL_SIZE=419430400 #是以byte为单位的 400M(这个参数设置过大会报错的,因为ORACLE AWE的配置不是针对他的)
*.log_buffer=73400320 #是以byte为单位的 70M(这个参数设置过大会报错的,因为ORACLE AWE的配置不是针对他的)
*.use_indirect_data_buffers=true # 这个参数的含义是我们是通过设置db_block_buffers来计算得到DB_CACHE_SIZE

5) 启动ORACLE,并重新创建spfile。
Windows 命令行下运行:
Sqlplus “/ as sysdba”
SQLPLUS>Startup pfile=’第四步修改后的初始化参数文件的路径’
SQLPLUS>Create Spfile from pfile=’第四步修改后的初始化参数文件的路径’   #你会发现在你的ORACLE HOME/Database目录下新生成了一个文件SPFILEOracleSID.ORA
SQLPLUS>Shutdown immediate

6) 将第三步生成的文件ORACLE HOME/Database/SPFILEOracleSID.ORA 复制到ORACLE HOME/dbs下

前面两步的目的是恢复缺省的以spfile参数文件方式启动数据库,否则你的设置都将无效

7) 重新启动Oracle
Windows 命令行
Sqlplus “/ as sysdba”
SQLPLUS>Startup

Comments

>Oracle内存分配建议

>

关于SGA设置的一点总结
本总结不针对特例,仅对服务器只存在OS + ORACLE 为例,如果存在其他应用请酌情考虑
写这个也是因为近来这种重复性的问题发生的太多所导致的

首先不要迷信STS,SG,OCP,EXPERT 等给出的任何建议、内存百分比的说法
基本掌握的原则是, data buffer 通常可以尽可能的大,shared_pool_size 要适度,log_buffer 通常大到几百K到1M就差不多了

设置之前,首先要明确2个问题
1: 除去OS和一些其他开销,能给ORACLE使用的内存有多大
2:oracle是64bit or 32 bit,32bit 通常 SGA有 1.7G 的限制(某些OS的处理或者WINDOWS上有特定设定可以支持到2G以上甚至达到3.7G,本人无这方面经验)

下面是我的windows2000下的oracle :

SQL> select * from v$version;

BANNER
—————————————————————-
Oracle8i Enterprise Edition Release 8.1.7.0.0 – Production
PL/SQL Release 8.1.7.0.0 – Production
CORE 8.1.7.0.0 Production
TNS for 32-bit Windows: Version 8.1.7.0.0 – Production
NLSRTL Version 3.4.1.0.0 – Production

SQL>

windows上存在32bit的限制,如AIX、HP UNIX 等有明确的64BIT OS and ORACLE的版本,32bit oracle可以装在64bit os 上,64 bit oracle不能装在32 bit OS上

不管oracle是32 bit ORACLE还是 64 bit 的,假定应用存在没有很好的使用bind var 的情况,也不能设置 shared_pool_size 过大,通常应该控制在200M–300M,如果是 ORACLE ERP 一类的使用了很多存储过程函数、包 ,或者很大的系统,可以考虑增大shared_pool_size ,但是如果超过500M可能是危险的,达到1G可能会造成CPU的严重负担,系统甚至瘫痪。所以shared_pool_size 如果超过300M还命中率不高,那么应该从应用上找原因而不是一味的增加内存,shared_pool_size 过大主要增加了管理负担和latch 的开销。

log_buffer : 128K —- 1M 之间通常问题不大,不应该太大

large_pool_size :如果不设置MTS,通常在 RMAN 、OPQ 会使用到,但是在10M — 50M 应该差不多了。假如设置 MTS,则由于 UGA 放到large_pool_size 的缘故,这个时候依据 session最大数量和 sort_ares_size 等参数设置,必须增大large_pool_size 的设置,可以考虑为 session * (sort_area_size + 2M)。这里要提醒一点,不是必须使用MTS,我们都不主张使用MTS,尤其同时在线用户数小于500的情况下。

java_pool_size : 若不使用java,给30M通常就够了

data buffer ,在做了前面的设置后,凡可以提供给oracle的内存,都应该给data buffer = (db_block_size * db_block_buffers)
在9i 中可以是 db_cache_size

还有2个重要参数我们需要注意

sort_area_size and hash_area_size
这两个参数在非MTS下都是属于PGA ,不属于SGA,是为每个session单独分配的,在我们的服务器上除了OS + SGA,一定要考虑这两部分

(****) : OS 使用内存+ SGA + session*(sort_area_size + hash_area_size + 2M) < 总物理RAM 为好

这样归结过来,假定oracle是 32 bit ,服务器RAM大于2G ,注意你的PGA的情况,,则建议

shared_pool_size + data buffer +large_pool_size + java_pool_size < 1.6G

再具体化,注意满足上面(****) 的原则的基础上可以参考如下设置
如果512M RAM
建议 shared_pool_size = 50M, data buffer = 200M

如果1G RAM
shared_pool_size = 100M , data buffer = 500M

如果2G
shared_pool_size = 150M ,data buffer = 1.2G

物理内存再大已经跟参数没有关系了

假定64 bit ORACLE

内存4G
shared_pool_size = 200M , data buffer = 2.5G

内存8G
shared_pool_size = 300M , data buffer = 5G

内存 12G
shared_pool_size = 300M—–800M , data buffer = 8G

以上仅为参考值,不同系统可能差异比较大,需要根据具体情况调整。建议在设置参数的同时,init中使用 lock_sga ,在不同的平台上可能有不同的方式,使得SGA锁定在物理内存中而不被放入 SWAP 中,这样对效率有好处

关于内存的设置,要再进行细致的调整,起的作用不大,但可根据statspack信息和v$system_event,v$sysstat,v$sesstat,v$latch 等view信息来考虑微调

Comments

>我 数据库 生活

>其实顺序应该这么排:
我 生活 数据库
O(∩_∩)O哈哈~

Comments