作者归档:Lunar

使用coe脚本固定执行计划和手工指定profile的outline的方式有什么区别?

测试目的: 1,假设下面的两个语句分别为A语句和B语句: A语句: select count(*) from lunar where extent_id=1; B语句: select /*+ FULL(lunar) */ count(*) from lunar where extent_id=1; 2,使用coe的脚本(在SQLT中可以知道整套coe脚本)手工为A语句指定B语句的执行计划,看看什么效果 (即,让原本正常走索引的A语句使用全表扫描的B语句的执行计划) 3,使用dbms_sqltune.import_sql_profile为A语句指定执行计划,看看什么效果 首先,做一个测试表: 在extent_id列上创建非唯一索引: 可以看到下面的语句正确的使用了索引(把这条语句称之为A语句): 我使用hint指定该语句必须走全表扫描,姑且把这条语句称为B语句: 找到A语句和B语句的sql_id: 使用coe的脚本来固定执行计划,291688323是B语句的执行计划: 根据提示执行COE_XFR_SQL_PROFILE_fvrmp2a2t38dc_291688323.sql脚本: 再次查询,验证一下A语句是否已经按照我们指定的那样采用了B语句的全表扫描的执行计划: 结论:我们的猜测是错误的,使用coe的脚本固定执行计划,必须是从该sql_id的已经有的所有执行计划中挑选其一,而不能凭空指定一个你认为合适的。 下面,我们使用其他方法固定SQL的执行计划。首先找出B语句的执行计划和outline: 使用下面的脚本为A语句指定B语句的outline: 结论: 1,使用coe的脚本固定执行计划,必须是从该sql_id的已经有的所有执行计划中挑选其一,而不能凭空指定一个你认为合适的。 因此,如果需要从某条sql已经执行过的执行计划中挑选一个合适的,那么coe的脚本简单轻巧,非常合适。 2,如果要手工构造一个该SQL语句从未使用的执行计划,可以采用dbms_sqltune.import_sql_profile的方式手工设置outline,从而改变执行计划。 在这种需求下,coe的脚本是无能为力的。

发表在 Performence Tuning | 标签为 , , | 5 条评论

打赌结果——12.1.0.2.0曾经可以这样

今天跟深圳小兄弟打赌,内容不详述了,结果如下,当事人和当时围观的人自然清楚,不清楚的我也不便解释了,O(∩_∩)O哈哈~ 其实这个测试我本来不用做的,因为飞总早在几个月前已经测试过了,但是兄弟不相信,我不得不再弄一次,O(∩_∩)O哈哈~ 先看下当前环境,注意,这里的信息都足以证明是一个非exadata环境…… 下面我们来测试in-memory option功能(注意版本): 猜猜,谁赢了,O(∩_∩)O哈哈~

发表在 ORACLE 12C | 标签为 , | 留下评论

DUL第二篇——使用DUL抽取dmp文件内容

dul常用命令: DUL> unload database ; DUL> unload user ; DUL> unload table ; DUL> scan database; DUL> scan tables; 记录一下测试表的记录数目: 其余的配置参数,参考第一篇DUL 第一篇 —— DUL是什么? 启动DUL,然后直接执行unpump header,之后就可以抽取了: 这里我们看到17634 行记录全部抽取出来了,如果你想测试的更好玩,可以dd掉其中的一部分数据,然后测试看dul怎么工作。 然后直接导入数据,就这么简单,O(∩_∩)O哈哈~ 这里我们看到全部的17634 行数据都导入表中了。

发表在 DUL ODU | 标签为 , | 2 条评论

DUL 第一篇 —— DUL是什么?

最近打算陆续研究一些DUL的东西,这个在互联网上已经有太多了,我本人用的不多,主要是确实很多时候用不上(运维做得好,这些其实都几乎用不上……) 不过这些东西涉及了很多对于Oracle的运行机制和原理的理解,玩玩还是很有意思的 :) DUL是Oracle Internal工具,专供Oracle Support使用,请勿自行在工作环境操作,否则后果自负!! 第一篇 DUL是什么?

发表在 DUL ODU | 标签为 | 留下评论

Exadata上,ASM的Req_mir_free_MB 是如何得到的?

Exadata上,ASM的Req_mir_free_MB 是如何得到的? 首先,我们都知道,可通过v$asm_diskgroup来查看required_mirror_free_mb: 这里看到,实际上lsdg的输出跟v$asm_diskgroup是一致的(注意,早起的数据库版本由于rebalance时的bug,可能造成显示不一致,例如 Bug 7699985) 由于Exadata上,没有外部冗余,数据完全通过ASM镜像,那么就要考虑当磁盘故障或者cell故障时的数据保护,需要相应的根据Normal Redundancy或者High Redundancy来考虑分别两种情况: 1,在Normal Redundancy时,要考虑1块磁盘损坏或者1个cell不能启动时,如果修复时间超过缺省的3.6小时,需要使用现有系统中可用磁盘空间做Rebalance 2,在HighRedundancy时,要考虑2块磁盘损坏或者2个cell不能启动时,如果修复时间超过缺省的3.6小时,需要使用现有系统中可用磁盘空间做Rebalance Oracle根据内部算法,使用一个调解因子做系数,比如,不同版本的Oracle,评估方法不同: 如果数据库是11.2.0.3或者11.2.0.4,那么这个调解因子为1.10,如果是低于这个版本的数据库,调解因子是1.5(具体该因子的算法尚未知道) 对于每一个磁盘组,他们需要调解的空间大小(即,预留空间)=v$asm_diskgroup.required_mirror_free_mb * 调解因子 然后根据不同的镜像(Normal或者High),以及不同的Exadata配置(1/8,1/4、1/2,满配)再分别乘以一个系数,下面的代码根据每个磁盘组的最大的failgroup的大小来确定需要保留的空间: 然后,计算出来总共的需要“预留的空间”按照不同配置的Exadata乘以一个比例,就是我们这看到的 REQUIRED_MIRROR_FREE_MB: 对于Normal Redundancy: 对于High Redundancy: 完整的代码可在这里下载

发表在 ASM, FAQ, 内部机制 | 标签为 , , | 留下评论

Exadata和非Exadata平台上,ASM的可用空间如何计算?

曾经很多次,有客户问到ASM上可用的空闲空间问题,实际上,由于ASM带有3中冗余设置方式,分别应对不同场景的数据冗余情况,因此,通常在Exadata上的选择和非Exadata上的选择是不同的。 . 在非Exadata的环境中,通常我们会使用RAID,比如RAID10,因此ASM中使用External Redundancy,例如: ASMCMD> lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 4096 1048576 51200 45862 0 45862 0 N CFARCH1/ MOUNTED EXTERN N 512 4096 1048576 51200 47653 … 继续阅读

发表在 ASM, FAQ, 内部机制 | 标签为 , , | 2 条评论

我在Oracle的第二个ppt——Exadata运维交流

在Oracle工作8年了,这是第二个ppt,最满意的我学会了修改ppt模板,O(∩_∩)O哈哈~ 本次交流的主要能容源于本网站,主要是跟同事一起交流Exadata运维中的常见问题,以及如何更好的为客户做好Exadata的相关服务。 Exadata运维交流

发表在 日常运维 | 2 条评论

Exadata上的进程-Diskmon进程

Master Diskmon是Oracle Clusterware 11.1.0.7版本引入的一个新的进程(主要是为了Exadata Storage Server软件而设计的),该进程作为缺省安装的一部分随着Oracle Clusterware的安装就存在了。 Master Diskmon主要负责监控cell,并负责跟数据库节点的diskmon进程通信。该进程还参与IO fencing机制和IORM(IO Resource Manager)。 Master Diskmon进程是一个单独的进程,他跟ocssd进程通信,即便是非Exadata环境,该进程也是存在的(只是非Exadata环境,Diskmon进程没有什么作用,后面会解释这个)。 在11.1.0.7中,/bin/sh /etc/init.d/init.cssd 会启动2个diskmon相关进程,即: root 1717 0.0 0.0 6716 1368 ? Ss 11:43 0:07 /bin/sh /etc/init.d/init.cssd fatal <span>root 2799 0.0 0.0 6720 1364 ? S 11:44 0:00 … 继续阅读

发表在 FAQ | 标签为 , | 留下评论

Exadata上的Writeback和Writethrouth-4-X3和X4上的Flash Card

从X3开始采用 Flash Accelerator F40 400GB Solid State Memory ,每个cell上有4块F40卡,每个卡上有4个100GB的FDOM(每个F40的容量为4*100GB=400GB),这样,每个cell的总Flash容量为1.6T。可见从容量上已经突飞猛进了。 这里,我们再回来思考上一篇《Exadata上的Writeback和Writethrouth-4-V2和X2上的Flash Card》中提到的一个问题:是否可以将Exadata上的Flash Card作为ASM disk使用? Exadata上的Writeback和Writethrouth-4-X3和X4上的Flash Card

发表在 FAQ, 体系架构 | 标签为 , , , | 留下评论

Exadata上的Writeback和Writethrouth-3-V2和X2上的Flash Card

从V2和X2的机器上硬件带有4块写缓存功能Sun Flash Accelerator F20 PCIe Card卡,每个F20上有4个FMOD模块,每个FMOD模块是24G(每个F20为24*4=96GB容量)。因此V2和X2的每台存储服务器上可以支持4*96GB=384GB的缓存,如图: Exadata上的Writeback和Writethrouth-3-V2和X2上的Flash Card

发表在 FAQ, 体系架构 | 标签为 , , , | 留下评论