OTN China Tour 2011

OTN China Tour

OTN Tour是每年一度的全球巡回演讲主题活动,而今年是第一次走进中国,ACOUG是这次活动在国内的组织者,也得到了ITPUB,IT168以及OTN中国的大力支持,这次活动在国内我们称之为Oracle技术嘉年华,将会集结数十位国内外Oracle技术专家,在两天时间内分享交流Oracle、MySQL、Java等方面的技术知识。

从7月份开始筹划,短短三个月时间,到10月份能够如期举办,我只能说这是一个奇迹。这绝对是一次高水准的技术分享盛会,相信参会人员都会从中有所收获。不管你信不信的,反正我信了。 😀

作为一个对于数据库很关心的从业者,下面这些演讲是我个人非常期待的。

Clonedb: The quick and easy cloning solution you never knew you had – Tim Hall
应该很多人都知道www.oracle-base.com网站,这个网站上有大量详尽的Oracle新功能评测,更新及时,信息量非常大,曾经一度是我探索Oracle数据库新功能必去浏览的网站之一,而Tim Hall正是该网站的主人,他同时也是Oracle ACE Director,还是OrkTable Network的成员。他的演讲绝对值得期待。

Virtualized Oracle 11g/R2 RAC Database on Oracle VM: Methods/Tips – Kai Yu
Oracle VM 3.0 – Patanjali Venkatacharya

虚拟化是现在的潮流,云技术也同样离不开虚拟化,而Oracle VM则是基于Xen技术的企业级虚拟化产品,特别是其对于Oracle数据库,中间件的完美支持更是成为其值得一试的理由。这两个主题一个偏重实战经验,一个是对最新版本的Oracle VM 3.0的介绍,偏重理论,正好相辅相成。

Exploiting Oracle tools & Utilities for Monitoring and Testing Oracle 11g RAC – Muralli Vallath
Muralli是印度Oracle用户组创办者,也是毋庸置疑的RAC专家,他对于Oracle 11g RAC的监控和测试的心得一定是值得我们学习的,中国现在的企业数据库似乎很少不上RAC,那么就更值得一听。

Oracle Security Tips : Some easy ways to make your DB more secure! – Francisco Munoz Alvarez
安全一直是企业级用户所关心的问题,但是说实话,在中国现在真正对于数据库安全做了实施的用户恐怕是少之又少,繁琐恐怕是其中的原因之一,那么如果有一些简单的方法就可以让数据库更加安全,听上去就很吸引人。

后oracle时代互联网企业数据产品技术—淘宝数据魔方技术架构 – 李金波(介然)
在当今这个言则电子商务的时代,商业数据分析恐怕是能够运筹帷幄、制胜千里的唯一方法。淘宝平台亿万数据是如何整合,如何分析,如何指导商业运作的,淘宝数据魔方的后台技术架构到底会有怎样的独特之处?

Some Oracle Database Questions

本文起源自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也是可以完成的。

Abnormal result by “show sga” command in 11g

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

KAMUS@orcl11g> select * from vversion;

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 vsgastat;

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的显示结果正确了(有一些细微的误差,可以忽略不计)。