eygle.com   eygle.com
eygle.com  
 
留言簿 - Oracle Life - Powered by Eygle.com
eygle.com 我要留言
唯书有色,艳于西子 唯文有华,秀于百卉
昵称
内容 页: 1 - << < 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 > >> - 403
# 44624
azhen




To: 盖老师
  盖老师,您好,请问在VS2005+Oracle10g环境下能够设置ConnectionTimeOut的值吗,从msdn上看这个值是只读的,而且OracleConnection 不支持 ConnectionTimeout 属性(默认为0)。
  盖老师,如果ConnectionTimeOut不能设置的话,怎样才能实现对连接响应时间的控制呢,目前我的应用中每次尝试连接的时间很长,满足不了实际需求。
From: azhen
2010.07.05 00:48

版主选项: 回复 编辑
# 44623
ora_study




To: 盖老师
  盖老师
您在书上说
“结合dba_extends,可以查询到这些热点Buffers来自哪些对象
select e.owner, e.segment_name,e.segment_type
from dba_extents e,
( select * from
 (select addr, ts#, file#,dbarfil, dbablk, tch from x$bh order by tch desc )
 where rownum < 11 ) b
where e.relative_fno = b.dbarfil and
 e.block_id <= b.dbablkand
 e.block_id + e.blocks > b.dbablk


我想请教一下这个SQL?
Question 1: x$bh 中 dbablk 的具体含义?
Question 1: 下面这个查询条件 您是如何推理得出的
  “
where e.relative_fno = b.dbarfil and
 e.block_id <= b.dbablkand
 e.block_id + e.blocks > b.dbablk

From: ora_study
2010.07.02 00:26
To: ora_study
  dbablk 是 数据块号

where e.relative_fno = b.dbarfil and
 e.block_id <= b.dbablk and
 e.block_id + e.blocks > b.dbablk

这个between就找到了这个数据块属于哪个对象。
From: eygle
2010.07.09 06:08

版主选项: 回复 编辑
# 44622
etl2007




To: 盖老师
  " 从一个包含100个BH的Bucket上找到一个数据块快,还是 从一个包含1个BH的Bucket里找一个数据块快呢?

Search时间因为BH数量的减少 ,大幅缩减了,Latch也可以更快的被释放,性能为何不提升呢?
"
真的感谢大师指点,我终于又向真相前走了一步。
但是我想继续请教一下
按照书上的说法


从oracle 8i 开始, _db_block_hash_buckets 的数量较以前增加了8倍,而 _db_block_hash_latches 的数量增加有限。 这意味着每个Latch 需要管理多个Bucket,但是由于Bucket 数量的多倍增加,每个Bucket 上的Block数量得以减少,从而使得少量Latch 管理更多Bucket成为可能。

下面说下我的理解
假设 原先是一个bucket下面是下挂80个BH,即对应80个数据块
那么现在是每个bucket下挂挂10个BH,即对应10个数据块
那么查询一个数据块,时间较之以前提高了8倍,
但是修改呢?
因为latch并不是成倍增加,所以不再是“一个bucket对应一个latch”。
现在我们假设一个latch对应2个bucket
那么过去时一个latch是管80个BH,现在一个latch管20个BH
修改速度较之前提高了4倍,
但是按照复杂度而言,虽然这连一个数量级的提升(即10倍的提升)也没有达到
但是应当也很不错了。

不知我这段理解是否正确

From: etl2007
2010.07.01 01:51
To: etl2007
  这应当是性能提升的一部分,这与全部情形如何,不得而知了。
From: eygle
2010.07.09 06:08

版主选项: 回复 编辑
# 44621
etl2007




To: 盖老师
  盖老师
昨天我问了你这个问题

在Oracle 8i之前,_db_block_hash_latches的数量和Bucket的数量是一致的,每个Latch管理一个Bucket;从Oracle8i开始每个latch需要管理多个Bucket,由于每个Bucket上的
Buffer数量大大降低,所以Latch的性能反而得到了提高

请问这个结论“由于每个Bucket上的
Buffer数量大大降低,所以Latch的性能反而得到了提高

我感觉实在不能明显的“由于”然后“所以”出来啊
过去是一个Bucket对应一个latch,假设一个Bucket下挂100个BH
那么就是一个latch控制100个BH
假设现在是2个Bucket对应1个latch,一个Bucket下挂50个BH
那么依然是 一个latch控制100个BH(2*50)
所以性能并没有提升啊

  To: etl2007
  你这种假设的状况可能永远不会出现,所以还是性能提升了。
原来的Bucket数量是buffers/4,现在是buffers*2,你很难见到Hash碰撞了。
 
对于您的答复,我还是不很理解,我依然有下面的疑问
例如过去一个 Bucket 下挂100个BH,假设 对应的是1到100这100个data block
 同时因为一个Latch控制一个1个Bucket,
 那么我们可以认为一个Latch控制1到100这100个数字
但是到了现在,假设现在是2个Bucket对应1个latch,一个Bucket下挂50个BH
那么依然是 一个latch控制100个BH(2*50)
我理解的“hash算法的不同”导致的结果只能是这样
过去这个latch是控制1到100这100个data block,现在因为算法不同
顶多变成了控制 1到50,450到500这5个数据块(或者更加分散,例如1到30,350到400,631到700;诸如此类情况),但是注意,此时一个latch控制的数目并没有变,只是控制数据块的内容变了。
但这从算法的角度,查询的复杂度依然是一致的。既然如此,那么又何来性能的提升呢?
From: etl2007
2010.06.30 23:41
To: etl2007
  从一个包含100个BH的Bucket上找到一个数据块快,还是 从一个包含1个BH的Bucket里找一个数据块快呢?

Search时间因为BH数量的减少 ,大幅缩减了,Latch也可以更快的被释放,性能为何不提升呢?
From: eygle
2010.07.01 01:00

版主选项: 回复 编辑
# 44620
etl2007




To: 盖老师
  盖老师
在Oracle 8i之前,_db_block_hash_latches的数量和Bucket的数量是一致的,每个Latch管理一个Bucket;从Oracle8i开始每个latch需要管理多个Bucket,由于每个Bucket上的
Buffer数量大大降低,所以Latch的性能反而得到了提高

请问这个结论“由于每个Bucket上的
Buffer数量大大降低,所以Latch的性能反而得到了提高

我感觉实在不能明显的“由于”然后“所以”出来啊

我说下我的理解吧
过去是一个Bucket对应一个latch,假设一个Bucket下挂100个BH
那么就是一个latch控制100个BH
假设现在是2个Bucket对应1个latch,一个Bucket下挂50个BH
那么依然是 一个latch控制100个BH(2*50)
所以性能并没有提升啊

From: etl2007
2010.06.29 20:32
To: etl2007
  你这种假设的状况可能永远不会出现,所以还是性能提升了。

原来的Bucket数量是buffers/4,现在是buffers*2,你很难见到Hash碰撞了。
From: eygle
2010.06.30 21:35

版主选项: 回复 编辑
# 44619
guojianjun




To:
  老师,你好,请问ORACLE是如何确定控制文件是从备分中恢复的呢?
今天我对比了两种方式:
1.mount状态下备份通过alter database backup 备份控制文件
然后关闭,更改control_files,启动到nomount状态下,restore恢复刚才备份的控制文件,
然后再mount,open这时提示需要resetlogs
2.更改control_files路径,启动到nomount状态下,restore恢复正在使用的控制文件,
然后再mount,open正常打开。
说明前一种方式,ORACLE从一些信息中得知其控制文件是从备份中恢复的。那是什么呢?数据库从未打开过,到底哪里改变了呢?

From: guojianjun
2010.06.28 05:28
To: guojianjun
  Open那个阶段,要根据数据文件的Header信息来校验控制文件,很容易就发现控制文件的Checkpoint / SCN等信息 < file header信息。
From: eygle
2010.06.28 08:24

版主选项: 回复 编辑
# 44618
azhen


来自: 北京


To: 盖老师
  盖老师您好,我在工作中面临Oracle10g数据库访问速度慢的问题。
现在有两台服务器,一台安装的是Windows XP系统,2G内存,Oracle9i数据库,另外一台安装的是Windows Server2008,磁盘阵列Raid10,16G内存,4核CPU,Oracle10g数据库。数据库采用的是C/S结构。
  我在同一台远程客户端使用C#通过存储过程向这两个数据库写数据,表结构和插入内容一摸一样,我使用循环插入了10000条数据,在Oracle9i的数据库上耗时10s左右,但是在Oracle10g数据库却耗时40s,有时甚至接近两分钟。
  同样的代码,同样的数据,怎么会差距这么大呢。
From: azhen
2010.06.28 04:52
To: azhen
  有很多其他因素的影响

如,日志大小等。你可以在10g中生成AWR报告,这样可以看到性能数据。
@?/rdbms/admin/awrrpt


From: eygle
2010.06.28 08:22

版主选项: 回复 编辑
# 44617
lixiao




To:
  盖老师,您好!
之前我装了ORACLE9I服务端,后来又装8I客户端,卸载8I客户端,原9I数据库就不能访问了,
一直报ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME,请问该问题要如何解决呀?
From: lixiao
2010.06.28 03:06
To: lixiao
  你可以检查和修改一下监听器配置。


From: eygle
2010.06.28 08:20

版主选项: 回复 编辑
# 44616
etl2007




To: 盖大虾
  请教一个问题:
就是我在看了您的书之后
觉得
SGA_MAX_SIZE没有多大意义吗?
 
因为SGA_MAX_SIZE表示是SGA_TARGET所能调节的最大范围
但是因为Oracle 申请内存的时候已经按SGA_MAX_SIZE的大小申请下来,那么即使只用SGA_TARGET大小内存,多出的那部分也不能还给操作系统啊?
举例而言,就是假设我们设置
SGA_MAX_SIZE=3000M,SGA_TARGET=2500M
那么还有500M(3000-2500)的剩余,请问这500M要是Oracle不用,能够还给操作系统吗?
明显不能啊?因为Oracle向操作系统申请的就是3000M,这多余的500M你不用,就等于是空着啊。

所以我觉得到Oracle11g的时候,总是将设置SGA_TARGET=SGA_MAX_SIZE
就是基于这个原因。
其实我们在生产环境,通常也就是把SGA_TARGET,SGA_MAX_SIZE
设置为一致吧


From: etl2007
2010.06.27 19:42
To: etl2007
  通常服务器如果只运行数据库,那么这两个参数意义不大。

但是如果允许Swap,会有所不同的。
From: eygle
2010.06.28 08:19

版主选项: 回复 编辑
# 44615
baiya


来自: 福建


To: 盖老师
  您好!最近在学习data block的物理结构。
alter system dump datafile x block x
可是看不懂dump文件里面的内容。
请问您有什么文章介绍这方面的内容的吗?
谢谢!
From: baiya
2010.06.21 18:49
To: baiya
  这方面的内容没有专门的书讲,Oracle的Metalink上会有些说明。

再加上Google上的资源,可以获得不少信息。我的网站上有部分内容,可以通过搜索得到。
From: eygle
2010.06.22 18:44

版主选项: 回复 编辑

页: 1 - << < 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 > >> - 403
我要留言
Copyright © 2003~2012 eygle.com All Rights Reserved.
Powered by: www.eygle.com