Maclean’s Oracle Database Tech Blog Archives

  • Exadata FAQ——Exadata IOPS是怎样计算的?

    原文链接: http://www.dbaleet.org/exadata_how_to_caculate_iops/ Thomas Zhang 同学曾经提到一个很有意思的话题:Exadata datasheet的IOPS是怎样计算的?这个问题我想很多Exadata用户都会有同样的困惑,客户隐含的意思就是主机和存储我打过的交道也不少,你这个数据在我看来应该是有水分的,厂商嘛,都喜欢吹吹牛。 比如1/4配的Exadata,使用的是HC(High Capacity)的磁盘。也就是说3个存储节点,每个节点12个7200rpm 3TB SAS盘。官方给的数据是6000 IOPS。那么这6000是怎么得到的?下面简单的做一下推测: 从上图可以看到, HC和HP的IOPS是分开计算的。 为了说明问题简单的列一下表格:   Exadata Rack Disk Type Disk Count Disk Model IOPS FULL(1/1) HP 14*12=168 15000rpm SAS 600G 50000 HC 7200rpm SAS 3T 28000 HALF(1/2) HP 7*12=68 15000rpm SAS 600G 25000 HC 7200rpm SAS 3T 14000 QUAR(1/4) HP 3*12=36 15000rpm SAS 600G 10800 HC 7200rpm…

  • Exadata FAQ——闪存卡使用寿命估算

    http://www.dbaleet.org/flash_card_lifespan_calculation/ 随着近年来闪存技术的不断成熟,基于闪存介质的低功耗,随机访问速度快等特点在企业级市场也越来越受到厂商及用户的信赖。几乎是一夜之间,传统的存储厂商例如EMC, HDS, Netapp都开始推出了其各自的固态盘或者混合盘的高端存储。ERP巨人SAP甚至推出了基于“内存计算” (In Memory Computing)概念的实时分析一体机 SAP HANA, 走在了行业的前头。 当然Oracle也不甘示弱, 首先在Exadata X2中大量采用了flash技术。除了传统Oracle Database 11.2中的Database Smart Flash Cache以外,并且针对Exadata研发了Exadata Smart Flash Cache和Exadata Smart Flash Logging, 大大增强了flash在Oracle数据库上的威力。从Exadata X3开始Database In-Memory Machine,除了进一步对flash技术进行增强,可以打开FlashCache的WriteBack模式(X2也可以做到,但是需要升级到特定版本),另外flash加速卡的容量也从X2的单条96G增加到了单条400G。 每台存储节点有4个flash卡,也就是说,单个存储节点的flash容量从366G上升到1.6T,满陪从原来X2的5.3T,增加到22.4T。这里先不谈论具体的技术本身,而是如此大规模的使用flash,到底可靠吗? 首先可以肯定的是, 不会对数据库的可用性造成很大的影响。仔细观察不难发现,Exadata在flash的使用上是持谨慎态度的。虽然大面积的使用了flash,但是flash上默认存放的都是非核心的东西,或者说flash在Exadata中扮演的就是“锦上添花”这一类的角色。即使flash卡损坏,也不影响数据库本身的使用,从flash卡的官方名字“Flash Accelerator F20 PCIe card ”(X3升级到F40卡) 就能看出来。 那么为什么客户会有对f使用flash技术的担忧呢?其实是可以理解的。电信,金融行业的客户把数据的可靠性看得比什么都重要,所使用的技术也比较稳健,对新技术的使用存在很不信任的因素,以银行为例,尽管传统存储厂商EMC, HDS宣称自己的固态盘的高端存储能达到多高的IOPS,但实际几乎没有哪家大的银行客户采用这种技术。 闪存目前最大的一个问题在于其使用寿命。那么闪存的寿命又是如何计算的呢? 宏观上来说,闪存的寿命取决于三个主要的因素:第一是NAND技术, 容量以及应用本身的使用模型。通常闪存的寿命可以通过以下公式进行估算:(以下公式来自Dell网站: http://www.dell.com/downloads/global/products/pvaul/en/Solid-State-Drive-FAQ-us.pdf)     Life [years] = (Endurance [P/E cycles] * Capacity [physical, bytes] * Overprovisioning…

  • Exadata FAQ——谁偷走了我的空间?

    原文链接: http://www.dbaleet.org/exadata_faq_who_stoled_my_space/ 在Exadata安装完成以后,几乎每个客户都会问到一个问题: ” 我们公司购买的是你们的Exadata X2-2 1/4配, 使用的是600G高性能盘。现在有3个存储节点,每个节点有12个盘。 这样计算那么我应该得到这么多空间: 600G×12×3=21600GB, 也就是说裸盘一共有大约21.6TB的空间。然后使用了ASM做了normal冗余,最后得到净可用空间应该在10.8TB,扣掉一点开销,我认为最后可用空间应该在10个TB左右,  当初你们的销售告诉我们能用的空间也是10个T, 为什么现在我在ASM中看到可用空间只有6.5TB, 是不是弄错了呀,难道选成了High冗余呀? 什么? 没有? 难道是你们每个盘都预留了一点空间? 这样不行呀, 空间本来对于我们本来就非常紧张, 这个结果对于我们来说是不可接受的!”   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 NORMAL N 512 4096 4194304 15593472 15220648 5197824 5011412 0 N DATA_DM01/ MOUNTED NORMAL N 512 4096 4194304…

  • 记一次Exadata DSKM hung故障的处理经过

    原文地址: http://www.dbaleet.org/a_troubleshooting_experience_for_exadata_dskm_hung/ 话说某年某月某日,当我还在人民银行处理一例紧急的故障,另外一个客户通过电话找到了我,这个客户只有Exadata和我有一些交集,虽然我们私交还不错,但是客户一般不轻易打我个人电话。看来情况有点严重,不出所料,电话那头客户果真有些焦急: “刚才我们Exadata出问题了,现在每个节点都在产生大量dump文件,没多久就快要把本地磁盘空间给占满了。“ “日志中有看到报错吗?” “报错倒是没有看到,只看到第四个DB节点的alert日志中有一句DSKM进程好像挂起了,具体什么原因也不清楚,然后DB节点就开始生成大量的dump,现在数据库的状态也好像也不大正常,已经影响到正常业务了。” “是不是DSKM进程异常导致diag在做systemstate dump呀?” “嗯, 应该是的” “ASM和cell节点的alert中有看到错误吗?” “没有看到!” “你能不能临时处理一下,把这个dump文件备出来,然后把这个文件删掉?然后看空间有没有释放出来,如果情况比较紧急,就把第四个DB节点的CRS重启下?”  我意识到自己有些说漏嘴了,赶紧补充道:“这样吧,我现在在客户现场,我跟另外一位同事说一声,让他帮忙处理下”, 因为人行这边在开故障处理汇报小会,我也无暇顾及只能跟同事说完以后就继续忙我自己的事情了。 次日,因为同事刚好今天有事,我就让客户把之前的一些日志发到我邮箱,继续查找问题的原因。因为Exadata的内存较大,所以产生的systemstate dump也非常大,单个dump文件足有好几G,压缩以后也无法用邮件发送,只能让客户先保存到网盘,然后我再从网盘下载。 拿到日志以后,我首先检查了一下DB的alert日志,其它节点基本没有发现什么异常,但是第四个DB节点果然印着DSKM process hung的字样。 Wed Mar 13 11:55:12 2013 DSKM process appears to be hung. Initiating system state dump. Wed Mar 13 11:55:12 2013 System State dumped to trace file /u01/app/oracle/diag/rdbms/exadb/exadb4/trace/exadb4_diag_19389.trc 费力老鼻子的劲,终于把exadb4_diag_19389.trc这个dump文件从网盘取下来了(东北话)。这个时候发现自己犯难了,因为这个文件实在太大了,用vim打开了半个小时依然无果,还好我用的是Linux,用split命令根据进程号对这个文件进行简单的分割以后,这个庞然大物就被我肢解为成百上千个小文件。然后运用egrep匹配DSKM字样找到DSKM进程的进程号,根据这个进程号找文件DSKM进程的systemstate dump信息(因为大部分systemstate dump的信息量巨大,很多与这个case没有什么干系,所以以下只列出一小部分)。 有了systemstate dump问题就好办了,首先就是找到当时的shortstack: Short stack dump: ksedsts()+461<-ksdxfstk()+32<-ksdxcb()+1782<-sspuser()+112<-__restore_rt()<-semtimedop()+10<-…

  • Exadata FAQ: Exadata与10G以太网?

    原文链接:  http://www.dbaleet.org/exadata_faq_exadata_and_10g_ethernet 问题一:Exadata是否能够使用万兆以太网? 答:Exadata V2不支持万兆以太网,从X2开始, Exadata自带万兆以太网的网口。 请看以下X2-2和X3-2的datasheet的关于以太网部分的描述:     可以看到Exadata X2-2每台DB节点包含了4个千兆以太网接口以及2个万兆以太网网口. 以下简单介绍一下这些网口的用途: 4个千兆以太网口的作用分别为: ILOM为port 0, 为ILOM Port , 连接到Exadata自带的Cisco交换机。 Net0 为port 1, 管理网口(Admin Port),对应eth0,连接到Exadata自带的Cisco交换机 Net1 为port2, 生产网口(Client Port), 对应eth1. Net 2 port 3, 为备用网口(Spare Port),对应eth2, 通常eth1和eth2使用模式1进行绑定为bondeth0, 连接到客户的生产网络交换机。 2个万兆以太网口分别对应Net3 备份网(Backup):Intel 82599控制器,从intel 82599的datasheet来看, 这个控制器本来就是双口(dual-ports),1G/10G自适应的。也就是说如果Client不做绑定,就可以使用这个网口与Net2(spare)进行绑定为千兆网。这个网口主要用于RMAN备份以及Data Guard之类的DR。 这里的万兆以太网网口并不是开箱即用的,这里仅仅只是包含万兆以太网的网口,如果是需要使用万兆以太网,客户同时需要购买对应的sfp+光纤模块以及对应的线缆。   Exadata X3的以太网网口与X2大同小异,惟一一点不同的是原来4块千兆网口,换成了千兆/万兆自适应的网口,但是这里明确地标注了介质cooper——铜缆。那么为什么需要标记copper呢?如果有了解过网络的读者就知道。万兆以太网10 G Ethernet 包含了很多类标准,不仅仅可以使用光纤通道,同时也包括铜制的双绞线。在10GBASE-T标准中,需要使用6a类(超六类)铜制双绞线才能达到万兆的速率,线缆的最大长度为100米, 当然5e类线(超五类)或者6类线(六类)也是可以的,但是其传输的最大长度被限定在50米左右。当然这里只提到了线缆,如果需要达到万兆的速率,同时也是需要万兆的以太网交换机做支撑的。 问题二:为什么Exadata不自带sfp+光纤模块? That is a good question  很简单,四个字:…

  • Exadata存储架构概述

    原文链接: http://www.dbaleet.org/overview_of_exadata_storage_architecture/ 本文旨在简单介绍Exadata存储的架构,通过阅读本文能对Exadata Storage有一个初步的了解。 Exadata的磁盘层次结构非常清晰, 自第向上依次是 Physicaldisk=>LUN=>celldisk=>griddisk=>ASM disk     注1:其中上图表示操作系统所在的磁盘(一般为前两块磁盘)的架构;下图表示非操作系统盘的存储架构。(剩余没有进行分区的十块盘)。 注2: griddisk在RDBMS层面对应的是ASM disk, griddisk和ASM disk实际是同一个东西,但是是分别站在Exadata Stroage和RDBMS的角度来看的。 注3: 当前Celldisk与Griddisk的对应关系为1:m,即一对多。但是Kevin Closson提到准确的应该是多对多的关系,但是为了理解上的简单,可以认为是celldisk和griddisk是一对多的关系。 we (Exadata development) considered supporting celldisk creation from HW RAID volumes but opted for a 1:1 relationship instead for many reasons. Griddisks are the virtualization of celldisks (the presentation form to ASM). To that end there is a M:M…

  • Oracle DRM技术的变迁 (五)

    Oracle BDE team的Michael Polaski 写了一个用于诊断DRM问题的SQL脚本,此脚本可以用来收集所有DRM问题诊断所需要的信息,大幅简化了诊断DRM问题的流程。以下纯粹是从MOS文档 Script to Collect DRM Information (drmdiag.sql) [ID 1492990.1] 中拷贝过来的。适用的版本为11.2.0.1+ 将以下脚本复制并保存为DRMDIAG.sql,然后使用sysdba用户登录以后执行。执行成功以后会在本地目录下生成一个drmdiag_<timestamp>.out 的文件。 — NAME: DRMDIAG.SQL — ———————————————————————— — AUTHOR: Michael Polaski – Oracle Support Services — ———————————————————————— — PURPOSE: — This script is intended to provide a user friendly guide to troubleshoot — drm (dynamic resource remastering) waits. The script will create…

  • ASMlib for RHEL 6 finally

    http://www.dbaleet.org/asmlib_supports_rhel6_finally 是的,你没有看错。 当然更大的可能性是你我可能out了。 这行的行业惯例从来都是上层对底层进行认证.当然asmlib也并不例外。当然更多的人还是习惯性的说法依然是asmlib支持rhel 6而非rhel 6 支持asmlib。具有讽刺意味的是asmlib在rhel平台确实需要redhat来支持。 同时无休止的口水仗终于可以告一个段落了。负责Oracle Linux的高级副总裁 Wim Coekaerts曾因为客户的指责大呼冤枉,并写下这篇长篇大论把所有矛头都指向redhat。他告诉客户SLES支持asmlib, Oracle Linux支持aslib。RHEL 6不支持asmlib责任全在redhat身上。 在Oracle的MOS文档Oracle ASMLib Software Update Policy for Red Hat Enterprise Linux Supported by Red Hat [ID 1089399.1] 中关于Red Hat Enterprise Linux 6 (RHEL) x86-64的一段已经由: Red Hat Enterprise Linux 6 (RHEL6) For RHEL6, Oracle will only provide ASMLib software and updates when configured with a…

  • 如何一步步搭建Exadata虚拟机——Cell节点

    原文链接:http://www.dbaleet.org/how_to_build_an_exadata_simulator_step_by_step_1_build_a_cell_node overmars同学在四月初就询问过我具体应该如何搭建一套Exadata虚拟机,当时我的回答是在五月前我会写一篇如何搭建Exadata虚拟机的文章,请到时关注我的blog。这里得向overmars同学道歉,因为由于一些个人的原因爽约了。 Anyway,Just hope it is not too late。 我知道很多Oracle DBA对学习Exadata有兴趣,却一直苦于身边没有一套可以学习测试Exadata的环境。要知道Exadata是Oracle是软硬件结合的一体机,单纯是通过自己的个人电脑是永远无法模拟出来真实的Exadata环境。所以这里说的Exadata虚拟机说白了只是按照猫话出来的老虎。Exadata虚拟机在Oracle内部一直就存在,但是仅限于Oracle University或者Oracle Internal用来培训或者学习Exadata之用,在Oracle内部的网站中这个虚拟机标识为“ Internal Use Only, Strict Confidential” 的字样。本人无意违反O记的policy,所以需要自己从头到尾开始构建。 好了废话不多说了,要构建一套Exadata虚拟环境,至少需要两台虚拟机,一台用于Cell节点,一台用于DB节点。 首先您的机器需要较高的配置: CPU Intel Core i3以上(或者AMD Athlon II X4以上), 推荐Core i5 (AMD Phenom II X4) ; 内存(Memory)至少4G以上,推荐配置8G; 磁盘(Harddisk)空余至少在40G以上,当然如果有SSD更好  安装好虚拟机, 推荐使用Oracle Virtualbox (https://www.virtualbox.org/); Oracle Linux 5.7安装介质。 可前往 https://edelivery.oracle.com/下载,下载前需要进行注册,注册是免费的。Oracle  Linux 5.7的介质名为V27570-01.zip, 解压后的文件名为OracleLinux-R5-U7-Server-x86_64-dvd.iso Exadata 11.2.3.2 Cell的安装介质。可前往 https://edelivery.oracle.com/下载,下载前需要进行注册,注册是免费的。Exadata 11.2.3.2的Cell介质名为V33693-01.zip解压后文件名为cellImageMaker_11.2.3.2.0_LINUX.X64_120713-1.x86_64.tar; Oracle Clusterware 11.2.0.3以及Oracle database 11.2.0.3的Linux x86_64的安装介质,文件名为:p10404530_112030_Linux-x86-64_1of7.zip p10404530_112030_Linux-x86-64_2of7.zip p10404530_112030_Linux-x86-64_3of7.zip 最新的补丁工具Opatch。…

  • 如何一步步搭建Exadata虚拟机——DB节点

    原文链接: http://www.dbaleet.org/how_to_build_an_exadata_simulator_step_by_step_2_build_a_db_node 上一篇文章介绍了如何搭建一台Exadata Cell节点(存储节点)的虚拟机,本篇则继续介绍如何搭建一台DB节点(计算节点)的虚拟机。 总的来说, 搭建DB节点虚拟机的难度比搭建Cell节点虚拟机的难度要小很多,因为绝大多数过程都与在Linux下安装Oracle Clusterware/Database 11gR2的步骤一样,所以我这里不会特别详细的介绍如何搭建一套标准的11gR2的oracle环境。对11gR2 Clusterware/Database安装不熟悉的同学建议观看ML同学的视频教程:Maclean教你一步一步使用Vbox在Linux 5上安装Oracle 11gR2 RAC。 值得一提的是这里DB节点并不是仅局限于使用RAC。 例如我这里就使用 Grid Infrastructure for a Standalone Server的方法(主要原因是我的机器太烂 )此链接提供了一个简单的安装文档可做参考。OK, Let get started. 首先需要安装一个Linux虚拟机,建议内存为1.5G以上,操作系统还是使用Oracle Linux 5.7。   安装的时候手工配置使用静态ip地址分配:我的网络配置如下:     [root@db ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 db localhost.localdomain…