Oracle11gR1 for linux x86 64位版本可以下载了

Oracle11gR1 for linux x86 64位版本可以下载了

Oracle_linux_x86_64

http://www.oracle.com/technology/software/products/database/index.html

如何识别最耗资源的SQL

一般来说,调优的第一手资料,很可能就是典型业务期的一个statspack报告,那么如何根据statspack报告来判断是哪些SQL消耗了最多的系统资源?哪些SQL是最需要调整的呢?这里给出了一个大致的优化思路。当然,思路是死的,人是活的,优化也需要随需应变。

一般来说,需要关注下面四种Top SQL

我们知道,一个语句的响应时间有个很著名的公式:

响应时间=服务时间+等待时间

其中服务时间就是CPU为执行该语句花费的时间。

服务时间=分析时间+递归时间+执行时间

分析时间是CPU用于分析语句的时间,递归时间是CPU用于语句的递归SQL的时间,剩下的则就是CPU用于执行语句的真正时间了。

[继续阅读全文]

关于non-existent objects与negative dependency

logzgh的blog上看到《在obj$基表中大量的non-existent类型对象是咋回事?》。这里简单解释下non-existent objectnegative dependency

对于Non-existent object,有两种来源,一种是drop或者rename object留下的,一种则是因为negative dendency机制。在我的试验中,这两种情况实际上都和synonym有关。

第一种情况,对于table,view等对象的drop/rename,我没有试验到non-existent的存在,但是在删除synonym时,可以看到Obj$实际上没有删除该synonym的记录,只是将其type#从5修改成10,也就是变成了non-existent

NING@ ning>create table test_synonym(i int);

表已创建。

NING@ ning>grant select on test_synonym to test;

授权成功。

TEST@ ning>create synonym test_synonym for ning.test_synonym;

同义词已创建。

SYS@ ning>select obj#,name,type# from obj$ where name='TEST_SYNONYM';

      OBJ# NAME                                TYPE#
---------- ------------------------------ ----------
     44651 TEST_SYNONYM                            2
     44652 TEST_SYNONYM                            5

其中type#=2的是table,type#=5的是synonym

[继续阅读全文]

通过standby instance实现远程归档

我们知道data guard是通过将归档或者redo传递到远程机器,然后远程机器上的备库通过应用归档来保持备库和主库的一致。也就是说,data guard其实主要执行两个动作:传递归档到备库以及在备库上应用归档。

有时候我们需要将归档日志归档到远程路径,这在unix/linux上可以通过NFS实现,据说windows上通过映射网络驱动器也可以实现,但当时我测试的时候oracle一直无法辨认映射盘,折腾了很久也没有结果。

实际上,利用standby的归档日志传递功能,可以很简单的实现归档到远程的目的。只需要在远程机器上创建一个standby instance,将instance启动到mount状态,然后在主库设置归档路径到该standby instance即可。

创建专用户归档的standby instance和我们通常创建物理备库的步骤完全一样,手工创建一个instance,创建standby的pfile,复制一份主库的Passwordfile,创建standby controfile,只是不需要从主库的备份恢复出数据文件而已。由于只是用来接收归档,standby instance的sga可以设置的非常小,也就不需要占用standby主机太多的资源。