oracle中的asm文化

从oracle中ASM的发展来看,到今天的普及使用,应该可以算做一种文化,因为这体现的不仅是ASM技术在实际工作中的成功普及,而且从某种程度来说,都代表了一个新生事物的发展历程,无论是java的发展还是各种开源项目的普及,都有着相似的痕迹。
asm从Oracle 10g版本推出,是作为grid的一部分鼓励使用的。而在这段漫长的时间里面,其实asm就在逐渐完善。
就如同你去公司内部推广一套很新技术的时候,人家肯定得衡量你的东西是不是足够好,如果性能指标能够达到指数级的提升,或者操作能够简化到极致,而且稳定,那么很多人都会不由自主的去使用。
而从Oracle的发展来说,涉足存储领域,而且直接推出自动化存储管理,着实是一个大手笔。Oracle 10g版本之前,在Linux,unix系统中大体都是在操作系统层面设置逻辑卷LVM,然后把LVM分成多个卷组,在各个卷组上去划分相应的逻辑卷,最后在逻辑卷上安装文件系统,挂载后就可以提供文件的管理。
同时裸设备技术也在大量使用,因为性能确实很好,在磁盘上不用创建文件系统就尅使用Oracle实例来直接读写磁盘。
无论采用文件系统还是裸设备都是实现的方式,但是都有一定的缺点或者限制,文件系统中的更多的是性能的考虑,而在裸设备中则是管理带来的不便,一旦在裸设备上创建文件,文件名和大小都不能再改了。

ASM在这个基础上做了一个折中,即提高性能,抛弃了文件系统,然后又提供了方便的文件管理,当然还有更多的难点和痛点,这些都是已有方案的弊端和不方便不完善之处。
我也搜集了一些。大体有下面的一些方方面面。
      1. 对于归档日志和备份,操作系统供应商不提供共享磁盘文件系统。

  2. 逻辑卷管理器隐藏了文件的位置,使得很难管理磁盘I/O和提供良好的统计。

  3. 当磁盘数超过100时,现有的lvm不能工作得很好。

  4. 当数据库有1000以上的数据文件时,操作系统和Oracle不能很好地处理数据库。

  5. 当有大量数据文件时命名就变得很困难了。

如果从技术层面来说有些问题忍了就忍了,可以规避,但是如果把这些缺点都利用起来,当做改进的一些专攻点,这样缺点不足就成为了优势。
说起ASM,不得不提到他的初始架构师bill bridge,对于asm的规划其实在很早就开始了,可以追溯到上个世纪1996年左右,那时候互联网还在起步阶段,sun还是原来的sun,其中肯定也有更多的曲折,最大的障碍应该是挑战权威,让已有的方案存在危机感和改进空间,不管怎么样,最后总算是在1999年正式审批了这个项目。
最初的定位从PSM,ODM,OSM,到了最终的ASM,PSM从字面来看就是parallel storage manager,还是和ops有一定联系,而odm(oracle data manager),OSM(oracle storage manager)到ASM(automatic storage manager),从名字也能看出一个发展的历程,也是逐步在改善,没有一步到位。
从我在10g开始接触到asm,也是带有很多的顾虑,更多的都是矫情。大体的理由如下:
    1.asm又做了一层抽象,还是感觉文件系统中的文件踏实
    2.老是怕asm有问题,如果出了问题,更加黑盒了。
    3.新技术,新风险
    4.缺乏了解,会有一种莫名的排斥感。
我觉得很多人应该和我有着差不多的想法,但是技术就是这样与时俱进,最终的目的当然还是简化工作,提高效率,而且ASM确实做到了。
普通文件系统的数据库迁移到ASM下步骤也简化了很多,感觉文件系统中的文件更加踏实,其实实际中我们也很少直接去管理这些文件,就算拿到文件也是二进制文件,我们还是什么都做不了。要说风险,肯定是有的,我记得一个老师曾经这么说过,如果说asm存在风险,损坏的可能性,那么它损坏的可能性和文件系统式一样的。如果说在课余自己接触下新技术,可能心态就很开放,但是到了实际的工作中,就马上严肃认真,就得好好评估,企业数据的安全是DBA存在意义所在。是不是在内心也在打退堂鼓,也是这样也就越来越会存在一些距离感,排斥感。
如果说在10g中asm不够成熟,也有一定的道理,asm是作为grid在10g推出,也算是新特性的试水,但是在11g中开始做了更多的加强和改进,所以使用起来还是会有不少的亮点,比如在10g中asm和oracle用户时放在一起的,可能会造成一些误操作和管理的不够方便,在11g中把asm纳入了grid infrasture这个体系中,原本在10g中的dbca来配置管理asm在11g中就有了新的命令asmca,在11g中把asm和数据库层面做了一种隔离,当然这些都是改进,到了exadata中,就赋予了asm更多的使命,做为exadata的标配,这个时候多个asm就可以管理更多的exadata单元。把原本rac中的共享存储的单点损坏做了加强,可以提供更高更完善的冗余机制,也是对rac的一种补充。
说到接受新事物,让我想起一件事,记得前几天我爸问我说,怎么银行要扣银行卡上的钱,只用发个短信验证码就能直接扣款,自己就感觉卡上的钱不安全了,就想去重新办一张卡,这样应该就安全了。然后我就耐心的给他解释,这是xx公司和银行之间的一个协定,他们会给你发送短信信息进行验证,然后得到本人的确认才能扣款,而且他们扣款也不是直接拿入自己腰包,就跟京东刷卡支付一样,送货员也没法多刷你一分钱,对他们来说就是一个单号。所以换了张卡也不管用,然后又解释了一通,他才明白了,就没有再办卡。
很多时候我们在接受新事物也是这种类似的态度,技术变更再快都是以提高效率和工作方式,如果某个软件再开源,功能复杂不好用,性能提升不高,那么接受它的难度和成本就有些太高了。所以从asm算是成功接受了时间的考验。自己也要多花点精力关注关注,看看我们能够做些什么,在技术发展的道理上能够添砖加瓦。

时间: 2024-09-26 16:01:34

oracle中的asm文化的相关文章

oracle中rename asm diskgroup的例子

在11.2之后,已经可以rename asm diskgroup了,而不必再新建diskgroup之后,再做image copy. 在11.2.中的gi home中,自带了一个命令renamedg,看下面的例子: renamedg phase=<both|one|two> dgname=<old_diskgroup_name>  newdgname=<new_diskgroup_name> [asm_diskstring='<path_name>' ] [v

Oracle中的ASM DISK HEADER 备份与恢复

最近遇到几次ASM DATA HEADER出问题导致DISK GROUP 不能正常的MOUNT,是的数据库不能正常工作,从来带来了无穷的麻烦,这个时候心想,如果我做了ASM DATA HEADER的备份该多好啊,可惜世上没有后悔药,建议大家检查下自己的ASM库,ASM HEADER是否已经做了备份,如果没有请及时处理下.这里试验提供了dd和kfed备份和恢复ASM HEADER 查询ASM相关信息 SQL> select group_number,name,state,total_mb,free

oracle中ADHU(ASM Disk Header Utility)—asm disk header备份恢复工具

adhu(ASM Disk Header Utility)作为oracle asm中和kfed,amdu齐名的asm三大恢复神器之一,没有被oracle大力推广(属于内部工具),随着kfed功能增强和asm disk header自动备份功能的完善,adhu oracle基本上停止的开发支持,可以用来作为10.2.0.5之前asm版本的磁盘头保护工具 adhu预览 这里可以通过shell封装的utildhu调用adhu程序,实现更加人性化和自动化操作,它含有install,check,repai

Oracle数据恢复: 50TB ASM crash例子

某客户50 TB的ASM发生故障,经过合力拯救,恢复正常,在此简单记录一下!实际上最后发现比我想象中的简单的多.如下是关于该故障的详细描述情况. –db alert log信息 Mon Jul  6 15:17:43 2015 Errors in file /oraclehome/admin/xxxx/udump/xxxx_ora_262606.trc: ORA-27063: number of bytes read/written is incorrect IBM AIX RISC Syste

Oracle中REGEXP_SUBSTR函数

Oracle中REGEXP_SUBSTR函数的使用说明:   在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合.   REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier) __srcstr     :需要进行正则处理的字符串 __pattern    :进行匹配的正则表达式 __position   :起始位置,从第几

RMAN恢复归档但是归档放到ASM中,ASM已经挂掉的情况

RMAN恢复归档但是归档放到ASM中,ASM已经挂掉的情况   RMAN> recover database; Starting recover at 21-SEP-13using channel ORA_DISK_1 starting media recovery channel ORA_DISK_1: starting archived log restore to default destinationchannel ORA_DISK_1: restoring archived logar

Oracle中的并行

Oracle中的并行 一Oracle中的并行 首先Oracle会创建一个进程用于协调并行服务进程之间的信息传递这个协调进程将需要操作的数据集例如表的数据块分割成很多部分称为并行处理单元然后并行协调进程给每个并行进程分配一个数据单元.例如有四个并行服务进程它们就会同时处理各自分配的单元当一个并行服务进程处理完毕后协调进程就会给它们分配另外的单元如此反复直到表上的数据都处理完毕最后协调进程负责将每个小的集合合并为一个大集合作为最终的执行结果返回给用户.并行处理的机制实际上就是把一个要扫描的数据集分成

关于java判断oracle中的表是否存在,不存在则创建一个表的问题

问题描述 关于java判断oracle中的表是否存在,不存在则创建一个表的问题 代码如下try{ Class.forName(""oracle.jdbc.driver.OracleDriver""); String url = ""jdbc:oracle:thin:@""+localhost+"":""+port+"":""+dbname; con

用sqoop将oracle中的表导入hadoop出现如图问题 求解决方案!

问题描述 用sqoop将oracle中的表导入hadoop出现如图问题 求解决方案! 解决方案 http://www.linuxidc.com/Linux/2014-02/96678.htm 照这个链接再搞一下 解决方案二: 我当初就是照他的方案弄得 不知道为什么连接不上去