Chanel [K]

面朝大海,春暖花开

Archive for the ‘Oracle RDBMS’ tag

Some Oracle Database Questions

with 5 comments

本文起源自dbsnake的《昨天我被问到的问题》

如果这几个问题是问到我,那么我怎么回答呢?

1. dedicated模式、非RAC、无连接池、要求支持2000个连接,在这样的条件下如何设置PGA?
根据应用程序特性的不同,SQL语句优化的程度,PGA的设置会相差很远。即使是知道专属连接方式,有2000个连接,恐怕我也无法再没有测试前就知道该设置多大的PGA。有一点默认的考虑,一个应用程序如果要支持2000个连接,那么通常不会是数据仓库系统,那么是OLTP系统的话,单个会话使用的PGA理应不需要很大。按照一般的经验值,给每个连接3M-5M,那么PGA的初始设置应该在6G-10G,然后跑测试,根据statspack或者awr report,再去判断是需要增加还是减少PGA。

2. 如何解决ORA-04031问题?
ORA-04031:unable to allocate string bytes of shared memory (“string”,”string”,”string”,”string”)
通常表示Shared Pool不足,一种情况是确实设置过小,另外一种情况是共享池碎片太多,没有足够的连续空间来放置一个稍大的空间请求,前一种情况就是增大共享池,大概到2G如果还报4031错误,那么应该是后一种情况了,而后一种情况则很可能是由于绑定变量不足导致过多的SQL Cursor存在,优化应用程序吧。再有那就可能是Oracle Database的bug了,那就五花八门不一而足了。

3. Current online redo log被删掉或者损坏后如何恢复?
当前联机日志损坏或者被删除,那么通常意味着必然会有数据损失,如果有备份,那么做full database restore,然后做不完全恢复,open resetlogs启动数据库。如果没有备份,那么利用_allow_resetlogs_corruption的隐含参数强制open数据库,做全库export,然后重建新库,做import。

4. oracle里的补丁具体分为哪几种类型?
我所知道的包括:大的Patchset,比如10.2.0.4的Patchset;Oneoff patch,修补某个bug或者某些bug的小Patch;Bundle Patch,一个时间段之后,发布的对于某一产品的集合Patch,修补一堆问题;CPU,也就是安全性Patch。dbsnake列出的其它那些,都不知道了。
其实,我的意思是这个问题有意义吗?

dbsnake – cuihua是这几年里我见到的对于Oracle数据库Internal研究最富有热情的朋友,在他的blog中有大量对于Oracle数据库内部机制的研究,比如类似于上面的第三个问题,哪怕是最棘手的数据库恢复,我相信dbsnake也是可以完成的。

Written by kamus

December 17th, 2009 at 2:15 pm

Posted in Oracle RDBMS

Tagged with

Abnormal result by “show sga” command in 11g

with 3 comments

一个有趣的现象。在11.1.0.6版本的数据库中show sga的显示结果并不正确。

KAMUS@orcl11g> SELECT * FROM v$version;
 
BANNER
--------------------------------------------------------------------------------
Oracle DATABASE 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE    11.1.0.6.0      Production
TNS FOR 32-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
 
Elapsed: 00:00:00.06
KAMUS@orcl11g> SHOW sga
 
Total System Global Area  380817408 bytes
Fixed Size                  1333340 bytes
Variable Size             289408932 bytes
DATABASE Buffers           83886080 bytes
Redo Buffers                6189056 bytes
KAMUS@orcl11g> SHOW parameter memory_target
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_target                        big integer 364M
KAMUS@orcl11g> SELECT sum(bytes) FROM v$sgastat;
 
SUM(BYTES)
----------
 271768244
 
Elapsed: 00:00:00.03
KAMUS@orcl11g> SELECT value FROM v$pgastat WHERE name='total PGA allocated';
 
     VALUE
----------
  80623616
 
Elapsed: 00:00:00.01
KAMUS@orcl11g> SELECT 380817408/1024/1024 FROM dual;
 
380817408/1024/1024
-------------------
         363.175781
 
Elapsed: 00:00:00.01

在show sga命令中显示Total System Global Area大小实际上是所有Memory的大小,包括了SGA+PGA,也就是memory_target参数的值。

将11g的新参数memory_target禁用,单独设置SGA和PGA,再看一下。

SYS@orcl11g> ALTER system SET memory_target=0 scope=spfile;
 
System altered.
SYS@orcl11g> ALTER system SET sga_target=271768244 scope=spfile;
 
System altered.
SYS@orcl11g> ALTER system SET pga_aggregate_target=113246208 scope=spfile;
 
System altered.

修改完毕以后,重新启动数据库实例。再次用show sga命令显示SGA大小。

KAMUS@orcl11g> SHOW sga
 
Total System Global Area  272011264 bytes
Fixed Size                  1332612 bytes
Variable Size             180357756 bytes
DATABASE Buffers           88080384 bytes
Redo Buffers                2240512 bytes
KAMUS@orcl11g> SELECT sum(bytes) FROM v$sgastat;
 
SUM(BYTES)
----------
 272013276
 
Elapsed: 00:00:00.10

这次show sga的显示结果正确了(有一些细微的误差,可以忽略不计)。

Written by kamus

March 13th, 2009 at 5:36 pm

Posted in Oracle RDBMS

Tagged with ,

Oracle 11gR2 New Features Highlight

with 5 comments

基本成型的Oracle 11gR2文档已经可以看到了,通览一下New Features部分,列举看上去很美妙的一些亮点。

以下仅仅是通过阅读文档得到的信息,在11gR2正式发布之前,一切都可能是会变化的。

1. RMAN Web-Services Backup

现在Oracle允许通过RMAN将数据库直接备份到Amazon S3或者其它的云计算存储解决方案中,虽然还没有明确的报价,但是可以预见一定会比自己购买带库要便宜。这里需要解决的一个是备份的效率问题,另外一个是备份集的安全性。

2. Edition-Based Redefinition
一直以来都知道在产品环境中,我们不能随便地去重定义包,函数,存储过程,视图,否则可能产生严重的锁等待,现在Edition-Based Redefinition的引入有助于在繁忙的产品环境中通过版本的控制来顺利地升级或者修改应用程序。

3. Cluster Time Service
代替NTP的东东,也许是因为NTP导致了一系列RAC的bug,所以Oracle干脆自己做一个时间同步服务,似乎这是在11gR2中安装RAC的前提条件了。

4. Columnar Compression
列式压缩,全新的压缩方式,消耗更多的CPU能力来获得更小的存储消耗,列式压缩对于应用是透明的,数据仓库系统值得去尝试一下这个新功能。

5. Data Pump Legacy Mode
在11gR2中原先的exp已经不再被支持,imp仍然允许使用。因此11gR2提供了兼容模式,允许在Data Pump中使用之前的exp和imp脚本,使客户获得更加平滑的升级体验。

6. Significant Performance Improvement of On-Commit Fast Refresh
对于物化视图刷新的改善,鼓励更多的数据仓库用户使用物化视图重写来改善应用性能。

最后也是最重量级的震撼新功能,那就是ASM全面升级,脱胎换骨。

7. Automatic Storage Management for All Data,是的,所有的数据都可以存储在ASM中,因为在11gR2中ACFS, ADVM闪亮登场了。

ASM Dynamic Volume Manager (DVM)是Oracle的卷管理软件,ASM Cluster File System (ACFS)是Oracle的集群文件系统,在这里不但可以存储以前ASM可以容纳的Oracle Datafile,同样也可以存储Oracle Binary, log file, trace file以及其它应用的程序文件,包括Oracle Clusterware需要的OCR Disk和Voting Disk现在也可以放置在ASM中了(11gR2之前必须放置在裸设备或者第三方集群文件系统中)。

期待11gR2的早日发布。

Written by kamus

March 4th, 2009 at 11:29 pm

Posted in Oracle RDBMS

Tagged with ,