ORA-600(12804)错误

Oracle 9208 RAC for AIX出现这个错误。
错误信息为:

Tue Jun 22 17:41:21 2010
Errors IN file /oracle/app/admin/orcl/udump/orcl2_ora_4293428.trc:
ORA-00600: internal error code, arguments: [12804], [kkdlgtd: bad object TYPE], [], [], [], [], [], []
Tue Jun 22 17:41:22 2010
Trace dumping IS performing id=[cdmp_20100622174122]

从错误信息上分析,这个问题发生在Oracle检查对象类型时。查询MOS文档ORA-600 [12804] [kkdlgtd: bad object type] Alter Table Add Column Or Running a Query [ID 468435.1],导致问题的原因可能有两个,一个是由于DBA_OBJECTS中缺少了对象的信息,另一个是由于在执行DDL语句的时候没有指定OWNER。
解决方法就是在OBJECT前面添加OWNER,从而避免找不到对象所引发的600错误。

Posted in BUG | Tagged , , , , | Leave a comment

ORA-600(KSSADP1)错误

客户9.2.0.8 RAC for AIX环境出现ORA-600[KSSADP1]错误。
错误信息为:

Thu Apr 19 21:16:45 2012
Errors IN file /oracle/app/admin/orcl/udump/orcl1_ora_442896.trc:
ORA-00600: internal error code, arguments: [KSSADP1], [], [], [], [], [], [], []
Thu Apr 19 21:16:45 2012
Errors IN file /oracle/app/admin/orcl/udump/orcl1_ora_442896.trc:
ORA-00600: internal error code, arguments: [KSSADP1], [], [], [], [], [], [], []
Thu Apr 19 21:16:45 2012
Trace dumping IS performing id=[cdmp_20120419211645]
Thu Apr 19 21:16:46 2012
Errors IN file /oracle/app/admin/orcl/udump/orcl1_ora_442896.trc:
ORA-00600: internal error code, arguments: [KSSADP1], [], [], [], [], [], [], []
Thu Apr 19 21:16:47 2012
Errors IN file /oracle/app/admin/orcl/udump/orcl1_ora_442896.trc:
ORA-00600: internal error code, arguments: [KSSADP1], [], [], [], [], [], [], []

与该问题最相符的描述是Bug 3030282 Dump in kssadpm_stage can occur if certain DDL/truncate is interrupted,虽然这个问题在9.2.0.5中已经解决,但并不排除问题在9.2.0.8中被重新引入。根据Oracle的描述,版本先于10.1.0.2都可能碰到这个问题。
导致问题的原因是中止了一个执行的DDL操作,显然为了避免问题的产生,应该在9i中尽量避免中止DDL尤其是TRUNCATE的操作。

Posted in BUG | Tagged , , , | Leave a comment

OEM安装报错不是内部或外部程序的解决过程

标题比较拗口,客户在安装OEM的时候碰到了“不是内部或外部命令,也不是可运行的程序或批处理文件”的错误。
客户环境是11.2.0.1 for Windows环境,以前配置过OEM,有一段时间没有使用,最近打算启用OEM,发现无法正常启动,尝试了多次后,只能将OEM清除掉。在卸载OEM并重新安装时,出现了这个错误。
详细的错误为:

Connecting TO DATABASE USING CONNECT string (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=NODE)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=DAISY))) IN home E:\app\Administrator\product\11.2.0\dbhome_1 WITH USER "SYS" ROLE "SYSDBA". 
connected TO DATABASE. 
SQL TO EXECUTE DECLARE repos_pwd varchar2(30); view_user varchar2(30); view_user_pwd varchar2(30); view_user_acc_status varchar2(30); BEGIN repos_pwd := ?; sysman.mgmt_view_priv.get_view_user(view_user); SELECT account_status INTO view_user_acc_status FROM sys.dba_users WHERE UPPER(username) = UPPER ( view_user ); IF view_user_acc_status LIKE '%LOCKED%' THEN EXECUTE immediate 'alter user ' || view_user || ' account unlock'; END IF; IF view_user_acc_status LIKE '%EXPIRED%' THEN sysman.mgmt_view_priv.set_view_user_creds ( repos_pwd ); sysman.mgmt_view_priv.GET_VIEW_USER_CREDS ( view_user, view_user_pwd ); EXECUTE immediate 'alter user ' || view_user || ' identified by ' || view_user_pwd || ''; END IF; END; 
noOfParams TO bind: 1. 
SQL EXECUTE successfully. 
2012-9-24 18:59:05 oracle.sysman.emcp.util.PlatformInterface executeCommand
配置: '??S-1-5-21-343818398-2147128839-1417001333-500' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
2012-9-24 18:59:05 oracle.sysman.emcp.util.PlatformInterface executeCommand
配置: 执行 CMD /C E:\app\Administrator\product\11.2.0\dbhome_1\sysman\admin\scripts\emca\emcaDbUtil.bat "E:\app\Administrator\product\11.2.0\dbhome_1\sysman\admin\scripts;E:\app\Administrator\product\11.2.0\dbhome_1\bin;" E:/app/Administrator/product/11.2.0/dbhome_1/perl/bin\perl.exe E:\app\Administrator\product\11.2.0\dbhome_1\sysman\admin\scripts\emca\emcaDbUtil.pl E:\app\Administrator\product\11.2.0\dbhome_1 "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=NODE)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=DAISY)))" SYS SYSDBA DECLARE repos_pwd varchar2(30); view_user varchar2(30); view_user_pwd varchar2(30); view_user_acc_status varchar2(30); BEGIN repos_pwd := ?; sysman.mgmt_view_priv.get_view_user(view_user); SELECT account_status INTO view_user_acc_status FROM sys.dba_users WHERE UPPER(username) = UPPER ( view_user ); IF view_user_acc_status LIKE '%LOCKED%' THEN EXECUTE immediate 'alter user ' || view_user || ' account unlock'; END IF; IF view_user_acc_status LIKE '%EXPIRED%' THEN sysman.mgmt_view_priv.set_view_user_creds ( repos_pwd ); sysman.mgmt_view_priv.GET_VIEW_USER_CREDS ( view_user, view_user_pwd ); EXECUTE immediate 'alter user ' || view_user || ' identified by ' || view_user_pwd || ''; END IF; END; DAISY 1 SYSMAN_PWD 时出错
2012-9-24 18:59:05 oracle.sysman.emcp.EMReposConfig unlockMGMTAccount
配置: Failed TO UNLOCK mgmt_view account
2012-9-24 18:59:05 oracle.sysman.emcp.EMReposConfig invoke
严重: 无法对所有 EM 相关帐户解锁
2012-9-24 18:59:05 oracle.sysman.emcp.EMConfig perform
严重: 无法对所有 EM 相关帐户解锁
有关详细资料, 请参阅 E:\app\Administrator\cfgtoollogs\dbca\DAISY\emConfig.log 中的日志文件。
2012-9-24 18:59:05 oracle.sysman.emcp.EMConfig perform
配置: Stack Trace: 
oracle.sysman.emcp.exception.EMConfigException: 无法对所有 EM 相关帐户解锁
at oracle.sysman.emcp.EMReposConfig.invoke(EMReposConfig.java:349)
at oracle.sysman.emcp.EMReposConfig.invoke(EMReposConfig.java:158)
at oracle.sysman.emcp.EMConfig.perform(EMConfig.java:253)
at oracle.sysman.assistants.util.em.EMConfiguration.run(EMConfiguration.java:583)
at oracle.sysman.assistants.dbca.backend.PostDBCreationStep.executeImpl(PostDBCreationStep.java:968)
at oracle.sysman.assistants.util.step.BasicStep.execute(BasicStep.java:210)
at oracle.sysman.assistants.util.step.Step.execute(Step.java:140)
at oracle.sysman.assistants.util.step.StepContext$ModeRunner.run(StepContext.java:2667)
at java.lang.Thread.run(Thread.java:595)
2012-9-24 18:59:05 oracle.sysman.emcp.EMConfig restoreOuiLoc
配置: Restoring oracle.installer.oui_loc TO E:\app\Administrator\product\11.2.0\dbhome_1\oui

本来最先定位的是Oracle的异常“无法对所有 EM 相关帐户解锁”,前台出现的也是这个错误信息。但是在MOS找了大量的案例,发现都和当前的问题不符。仔细检查数据库中用户的配置,也未发现任何的异常。
随后把疑点逐渐转移到上面“不是内部或外部命令,也不是可运行的程序或批处理文件。”信息上。并且发现这个问题并非只有在执行OEM的脚本时报错,而是起动CMD命令窗口时都会出现这个错误。
那么其实问题就很明显了,导致问题的原因并不是发生在数据库层,而是操作系统层面,显然CMD命令被进行了恶意的篡改。
详细询问了一下情况,客户以前确实中过病毒,后来通过杀毒已经将病毒清除。怀疑虽然病毒被清除,但是CMD程序并没有完全恢复原始状态,导致目前启动CMD时会寻找一个不存在的文件。
检查CMD命令的注册表信息,并未发现有异常的修改。怀疑是CMD代码层的autorun被修改:

reg ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor" /v "AutoRun" /d "" /f

通过执行上面的命令,CMD启动不会在出现前面的错误,再次安装OEM组件,安装顺利完成。
这个案例也再次反映了Windows环境下数据库健壮性的问题。

Posted in ORACLE | Tagged , , , | Leave a comment

ODA服务手册

虽然做过一些测试,也在OOW上听了一下主题,不过官方文档还是要看的。
这篇文档更像是系统组件的安装卸载手册,其中包含了CPU、内存、存储驱动、电扇模块、电源模块、AIR DUCT、DIMM、PCIer Riser、HBA PCIe Card、Boot Disk Backplane等等的安装和卸载。
看这篇文档到不是要学习硬件的安装知识,只是想要对于ODA内部包含的结构以及各个结构的功能有一个更清晰的了解。
如果有兴趣可以通过在线地址阅读该文档:http://docs.oracle.com/cd/E22693_01/doc.21/e23342/toc.htm

Posted in BOOKS | Leave a comment

网络服务参考总结

在看这篇文档之前就提到,任何看来只是用做参考的文档其实都有细读的必要。而读这篇文档恰好解决了以前的一个疑问,更加证实了这一点。
不管从哪个方面讲,这篇文档包含的内容都是非常有意义的。其中监听的相关命令是非常查用的。而连接管理器的相关命令相信大部分人都不熟悉,那么就更有必要现在开始了解。
此外listener.ora、tnsnames.ora、sqlnet.ora以及cman.ora中包含的大部分参数虽然我们一般不会去进行调整,但是一旦碰到了相关的网络问题,就需要调整其中的一个或多个参数。而如果对于有哪些参数以及对应的功能一无所知,那么即使碰到问题,也不会想得到解决方法。

Posted in BOOKS | Leave a comment

20121005结束OOW之旅

天下没有不散的筵席,持续了将近一周的OOW大会终于结束了。
这是第一次赴美参加OOW大会,自然感触颇多。最大的感触和收获自然来自Oracle Open World。虽然这次旧金山之行比较遗憾之处是没有到硅谷Oracle总部一游,但这些天参加大会,每天在听各种的Oracle技术主题,仍然给我一种“朝圣”的感觉。
从Oracle Open World开始,每天晚上一个重点就是研究第二天去听哪些Topic,由于Topic实在太多,每天在选择的时候都很痛苦。经常会发现同一个时间段,有5个以上的主题都是自己感兴趣的,而如何取舍实在是很困难的,有时因为其他事情而耽误了计划中的主题也会感觉非常可惜,以至于在4日大会结束时还有一丝遗憾,怎么OOW大会转眼间就已经结束。
Oracle Open World对于技术人员而言,绝对是一个学习提高的最佳机会。如果对技术细节不感兴趣,也可以从Oracle最新的产品以及策略来了解整个业界目前的动态。总的来说OOW已经成为一年一度最另人期待的盛会。

Posted in NEWS | Tagged , , | Leave a comment

20121004OOW大会第四天

今天是Oracle Open World结束的日子,因此也是大会主题最少的一天,一共只有四个场次,不过今天是我参加的最完整的一天,所有的主题都参加了。
虽然Keynotes是9点开始,比平常晚了一个小时,但是仍然一如既往的迟到了40分钟,不过这是由于早上酒店给我送来了CHECKOUT的账单,而我应该每天才CHECKOUT,因此耽误了一些时间。好在今天的主题是Oracle OpenWorld Keynote: See More, Act Faster: Oracle Business Analytics,对其没有太大的兴趣,因此晚一点也没有啥损失。
接着就是另人盼望已久的Tom带来的Tom’s Top 12 Things About the Latest Generation of Database Technology。
PL/SQL FROM SQL:类似在匿名块中定义过程,现在可以通过WITH语句在SQL中定义一个函数,采用这种方式可以提高SQL调用的性能。
DEFAULT提升:包括序列作为默认值;自增列;当明确插入NULL时指定默认值;METADATA-ONLY default值指的是增加一个新列时指定的默认值,和11g中的区别在于,11g的default值要求NOT NULL列。
增加了VARCHAR2、NVARCHAR2和RAW类型的长度到32K,要求兼容性设置为12.0.0.0以上,且设置了初始化参数MAX_SQL_STRING_SIZE为EXTENDED,这个功能不支持CLUSTER表和索引组织表;最后这个功能并不是真正改变了VARCHAR2的限制,而是通过OUT OF LINE的CLOB实现。
TOP N语句:可以指定前N条或前百分之多少的记录,这个语法可以使得程序员告别传统的三层嵌套ROWNUM的查询。
行模式匹配:虽然已经听了两次,但是对于这个的具体含义仍然不是很清楚,不过有一点是确定的,这是类似分析函数的功能,可以在行间进行匹配判断并进行计算。
分区提升:这个部分可以参考我第二天的分区新特性部分。
Adaptive执行计划:拥有学习功能的执行计划,Oracle会把实际运行过程中读取到返回结果作为进一步执行计划判断的输入,因此统计信息不准确或查询真正结果与计算结果不准时,可以得到更好的执行计划。
统计信息增强:动态统计信息收集增加第11层,使得动态统计信息收集的功能更强;增加了混合统计信息用以支持包含大量不同值,且个别值数据倾斜的情况;添加了数据加载过程收集统计信息的能力;对于临时表增加了会话私有统计信息。
临时UNDO:将临时段的UNDO独立出来,放到TEMP表空间中,优点包括:减少UNDO产生的数量;减少REDO产生的数量;在ACTIVE DATA GUARD上允许对临时表进行DML操作。
数据优化:数据生命周期管理,可以指定行记录的生命周期。比如可以设置某条记录的有效期到3天之后,超过有效时间,则数据无法在被查询到。该功能是通过配置ILM策略实现,个人感觉后台肯定是通过SCHEDULER来进行时间的调度。
应用连续性:这个参考第三天的RAC新特性部分。
PLUGGABLE DATABASE:在12c中,有了CDB和PDB的概念。CDB作为容器,而PDB作为可插入到容器数据库的用户业务数据库。所有的PDB都有自己的SYSTEM表空间,而所有的PDB共享CDB的REDO和UNDO以及控制文件。这个功能是Oracle在数据库层支持云架构的重要改变,因此Oracle在OOW中对于这个功能大书特书。
TOM主题之后又听了一场ODA的主题:Oracle Database Appliance Technical Deep Dive: Architecture and Internals,这是我听的第四场ODA主题,本以为不会有什么收获结果出乎意料,演讲者是ODA的产品经理,因此还是从中了解到不少新东西。比如:ODA上即将推出的OVM架构,以及ODA的ASM磁盘组在划分20块HDD磁盘时,将DATA数据存储在磁盘外圈以获得更好性能等。
最后一场安全的新特性也是Tom带来的,这应该是意外惊喜,之前预约该主题的时候并未发现主讲是Tom,主题名称为:What’s New in Security in the Latest Generation of Database Technology。
权限分析:权限分配的两个难题:在出现权限不足的错误时,无法确切得知缺少何种权限;当要收回用户的ANY权限,但是又不知道具体需要对哪些对象明确授权。这也是很多用户被过分授权的原因。在12c中解决了这些问题,通过DBMS_PRIVILEGE_CAPTURE包可以捕获用户调用的权限,通过视图DBA_USED_PRIVS可以查询捕获结果。
DATA REDACTION:对敏感数据进行转换,可以将敏感内容替换为XXX之类的文字,也可以对其进行随机替换;该功能只是对返回查询结果的转换,而不影响查询语句的WHERE条件判断。这个功能通过DBMS_REDACT包实现。这个功能和数据加密,以及DATA MASK都不相同,机密用在数据存储层,而DATA MASK用于产品数据迁移到非产品环境,DATA REDACTION则只是用于敏感数据的展示。
审计功能增强,审计记录安全性增强:多个操作可以单独进行审计,比如备份、数据泵、数据库安装、直接路径加载等。根据Tom的描述,SINGLE AUDIT TRAIL FOR EVERYTHING;
审计记录安全性表现为:创建在INSERT ONLY表空间;审计记录只能通过DBMS_AUDIT_MGMT包进行管理;以及只有管理员有权限访问等。
加密增强:数据加密的密钥KEY和KEY的管理功能进一步增强;比如在多个wallet间move key提供了导入、导出和合并的功能;比如基于wallet的keystore的自动备份功能等;此外key全面支持PLUGGABLE DATABASE,并提供了将wallet直接存储在ASM上的能力。
CODE BASED ACCESS CONTROL:论坛中很多新手会问,为什么已经有CREATE TABLE权限在存储过程中建表仍然报错。这是由于角色对于定义者权限的存储过程无效。原来的解决方法是对用户直接授权,现在可以避免这种过度授权。解决方法是为存储过程创建一个角色,为该角色授予CREATE TABLE权限,设置该角色只在过程的执行阶段生效,并把这个角色授权给需要执行过程的用户。
调用者权限:新增了两个调用者权限INHERT PRIVILEGE和INHERT ANY PRIVILEGE,增加这两个权限的主要目的是为了防止SQL注入。如果当前用户没有被授予上面两个权限,那么尝试利用调用者权限存储过程的方式执行SQL注入的操作会导致错误。这两个权限的增加将会降低通过调用者权限方式进行SQL注入的可能性。
职责分离:很多时候并不是DBA一定要使用SYS用户,而是使用SYS用户确实比较方便,而且很多用户也要求SYSDBA身份。在12c中,不再只是SYSDBA和SYSOPER两个身份,新增了SYSBACKUP用来进行RMAN备份恢复;SYSDG用来创建管理DATA GUARD环境;SYSKM用来进行KEY的管理操作。
结束了今天的主题之后,OOW大会也正式结束了。

Posted in NEWS | Tagged , , | Leave a comment

20121003OOW大会第三天

今天听了四个主题,分别是早上的Keynotes、压缩新特性、RAC新特性和PLUGGABLE DB的专家讨论会。
第一场的Keynotes介绍的是Oracle and Intel,于是Oracle的X系列依次登场。除了大家都耳熟能详的X系列之外,还介绍了以下内容:
Oracle Datacenter Fabric,简化云架构和操作的管理工作,可以有效减少70%的网络连接;
ZFS Storage Appliance:混合列压缩数据仓库有效性增加25倍,查询性能提高5倍;OEM管理ZFS storage appliance减少管理成本;Snap Manager完成65%自动化数据保护需求。Oracle Public Cloud使用ZFS总容量超过40P,22亿数据库事务每小时;2500万云用户;6674数据库实例;101企业应用;以上所有通过232 clusters实现。
硬件产品介绍完后,介绍了支持云服务的软件架构,最先介绍的是Oracle的VM,随后是Oracle的Linux,最后是新的Solaris 11。此外在介绍完Solaris 11之后,Oracle还介绍了以下Sparc T4以及明年年初即将面世的Sparc T5。
第二个主题听的是Oracle Database Compression with the Latest Generation of Database Technology。本打算听听在压缩方面12c有什么新特性,但是听完后发现12c在压缩方面并没有多大的改进,只是增加了一个高级网络压缩,用来压缩DATA GUARD的日志传输。12c压缩并没有太多新特性,不过11g的OLTP压缩功能已经足够强大了,11g中压缩对于常规DML同样生效,但并不会对单条DML进行压缩操作,采用后台批量压缩的方式对BLOCK中的数据进行压缩。根据测试在压缩后,表扫描效率提高2.5倍,空间利用率提高3倍,而DML操作OVERHEAD仅增加3%。在这个主题中,Oracle找来一些真正部署实施了压缩功能的客户来介绍成功案例,看来通过压缩来提高性能已经是11g的一个亮点了。
在两场主题之间,跑到展示大厅闲逛,发现了一个了解12c新特性的最佳地方:Moscone South展示大厅的东南角。今天在这里了解到Oracle 12c升级相关特性:无论DBUA还是命令行方式都支持并行升级,采样并行升级可以极大的缩短升级所需时间。以下版本的数据库支持直接升级到12c:10.2.0.5、11.1.0.7和11.2.0.2以上。其中10.2.0.5升级12c需要将COMPATIBLE设置到11.1.0.7以上,因此如果需要进行DOWNGRADE降级操作,则11.1.0.7是支持的最低版本。
第三个主题是What’s New in the Latest Generation of Oracle Real Application Clusters。Oracle 12c的RAC新特性包括:
应用连续性:12c之前RAC的FAILOVER只做到SESSION和SELECT级别,对于DML操作无能力为,当设置为SESSION,进行到一半的DML自动回滚;而对于SELECT,虽然FAILOVER可以不中断查询,但是对于DML的问题更甚之,必需要手工回滚。而12c中Oracle终于支持事务的FAILOVER,根据Oracle的描述,对于RAC环境,无论是计划内的还是计划外的节点关闭都不会对应用产生影响。
Flexibity ASM:ASM层更加独立,ASM负责获取ASM源数据信息,而读取数据由数据库实例直接读取。这使得在12c中,节点上的ASM实例崩溃后,当前的数据库实例可以访问其他节点上的ASM实例。
ASM功能增强:当DISKGROUP冗余度设置为NORMAL或HIGH时,ASM可以自动检测磁盘错误并自动进行修正;此外ASM磁盘组的磁盘同步和平衡能力增强,可以监视并管理同步或平衡操作的速度。
资源分配能力更强:其实基于策略配置的SERVICE用的比较少,因为一般接触的RAC很少超过4个节点。但是此功能对于EXADATA会有很大帮助。当发出需求、业务需要或系统需要时都可以在SERVER POOL间平滑的切换资源,此外提供了WHAT IF工具帮助权衡分析资源分配。
Oracle Grid Home Server(GHS):实现了安装一次,部署多次的功能;一键式升级、补丁能力;可同时对多个数据库进行升级、补丁。此外还有一个小改进,不过却带来很大的方便:现在不需要登录所有的节点只是为了执行root.sh脚本了,只需要在一个节点上就可以完成该操作。
其他改变:Utility Cluster可以集中管理数据库、CLUSTER、RAC、IP、VM和STORAGE;动态IP管理和命名解析更加容易;IPV6支持VIP;支持多个网段的VIP;支持多个SUB网络的SCAN IP;可对要注册的服务进行限制;CLUSTER节点分成两类:传统的HUP节点和轻量级的LEAF节点。
最后一个主题是Panel Discussion:Consolidating Databases with the Latest Generation of Database Technology。由一些知名公司的DBA和专家带来的PLUGGABLE DATABASE相关主题和讨论。包括AT&T、PALPAY、Pythian的Alexander Gorbachev以及Oracle的专家Bryn Llewellyn、Bill Lee、Sue-Kyoung Lee等。这些公司应该Oracle协助部署测试12c的合作伙伴,当然绝大部分客户都对于Pluggable Database给出了很高的评价。不过对于没有Oracle全力支持的普通客户而言,无论是升级到12c,还是部署Pluggable Database都还是一件比较遥远的事情。
今天错过了Kaya的优化主体第三场和一个关于AWR以及ASH使用技巧的主题,比较遗憾。
晚上是Oracle Open World的高潮:金银岛音乐节。据说请来了知名的乐队,导致一篇难求,个人对其兴趣不大,在岛上转了个把小时就回到了酒店。

Posted in NEWS | Tagged , , | Leave a comment

20121002OOW大会第二天

虽然是目前最早的一天,第一个Keynotes仍然晚了一个小时。
这个主题也是Oracle今年OOW的主题:CLOUD。Oracle通过收购和研发,已经在所有的产品线上为云提供了技术基础,下一步就是推动Oracle Cloud全面快速发展了。对于云而言,我还没有太多评论的能力,而且也没有挺全,就不过多的卖弄了,还是以后有一定的了解之后在详细介绍吧。下面还有其他的主题,且这个Keynotes显然没有短时间内结束的迹象,而且目前所讲的内容离DB的关系越来越远,因此这时目前唯一一个迟到加早退的主题。
如果不算Keynotes,那么第一场仍然是一个ODA的主题:Best Practice for Migrating Data to the Oracle Database Appliance Without Risk。这两天听ODA已经听的快吐了,所以之后的另一个ODA的案例被我换成了分区的内容。其实ODA的相关主题都大同小异,因为ODA包含的内容就那么多,不过这次演讲者没有把注意力放在ODA的配置和性能上,而是放在了数据迁移上。不过说实话,ODA的迁移方法其实和其他数据库的迁移没有什么区别,因此使用的方法也不外乎数据泵、RMAN、传输表空间、传输数据库、DATA GUARD以及GOLDENGATE。不过在这个专场中,仍然得到了一些有意义的信息,ODA的最新版本发布后,将会支持OVM以及DOUBLE MIRROR的ASM磁盘组。OVM是部署在ODA上的VM,可以使得用户将应用程序部署在独立的虚拟机上;而DOUBLE MIRROR是我期盼已久的特性,感觉TRIBLE MIRROR不但极大的减少了可用空间,还会对性能有一定的影响,而采用DOUBLE MIRROR后,ODA所能支持的容量,将会达到6T。这个数据量对于大部分中小客户就比较充裕了。
第二场听了PARTITION新特性,Tom介绍12c时没提分区,但分区的新特性还是有很多亮点:
INTERVAL-REFERENCE分区:把11g的interval分区和reference分区结合,这样主表自动增加一个分区后,所有的子表、孙子表、重孙子表、重重重…孙子表都可以自动随着外接列新数据增加,自动创建新的分区;
TRUNCATE和EXCHANGE分区及子分区:论是TRUNCATE还是EXCHANGE分区,在主表上执行,都可以级联的作用在子表、孙子表、重孙子表、重重重…孙子表上同时运行。对于TRUNCATE而言,所有表的TRUNCATE操作在同一个事务中,如果中途失败,会回滚到命令执行之前的状头。这两个功能通过关键字CASCADE实现;
在线移动分区:通过MOVE ONLINE关键字实现在线分区移动。在移动的过程中,对表和被移动的分区可以执行查询、DML语句以及分区的创建和维护操作。整个移动过程对应用透明。这个功能极大的提高了整体可用性,缩短了分区维护窗口。而且这个功能应该Tom提到的数据生命周期管理的主要实现方式;
多个分区同时操作:可以对多个分区同时进行维护操作,比如将一年的12个分区MERGE到1个新的分区中,比如将一个分区SPLIT成多个分区。可以通过FOR语句指定操作的每个分区,对于RANGE分区而言,也可以通过TO来指定处理分区的范围。多个分区同时操作自动并行完成;
异步全局索引维护:对于非常大的分区表而言,UPDATE GLOBAL INDEX不再是痛苦。Oracle可以实现了异步全局索引异步维护的功能,即使是几亿条记录的全局索引,在分区维护操作,比如DROP或TRUNCATE后,仍然是VALID状态,索引不会失效,不过索引的状态是包含OBSOLETE数据,当维护操作完成,索引状态恢复;
部分本地和全局索引:Oracle的索引可以在分区级别定义。无论全局索引还是本地索引都可以在分区表的部分分区上建立,其他分区上则没有索引。当通过索引列访问全表数据时,Oracle通过UNION ALL实现,一部分通过索引扫描,另一部分通过全分区扫描。这可以减少对历史数据的索引量,极大的增加了灵活性。
今天下午第一个主题是Oracle Database Optimizer:Harnessing the Power of Optimizer Hint。这个主题并没有介绍12c的新特性,但是介绍了很多关于HINT比较深入的知识点。此外一些在HINT基础上发展起来的技术,如OUTLINE和SQL BASELINE都有所涉及,总之在这里TOPIC中学到了不少东西。几个关键点包括:如果想要固定执行计划,光靠HINT是不够的,一定要使用OUTLINE;如果通过DBMS_XPLAN获得OUTLINE信息;如果通过10053来查看HINT提示是否正确以及是否被采用;如何使用SQL BASELINE来定制执行计划等等。
最后听了Larry的Keynotes,介绍Oracle Cloud的案例,以及大数据量实时分析能力。总的来说,Keynotes的内容对于CTO或架构师而言应该是更有吸引力,而对于DBA来说,和技术方向偏离得比较多。显然这种战略性的主题,听一两个就够了。
本来晚上还计划听一下Oracle SecureFile和Database File System的主题,不过由于和Kaya以及TechTarget的孙瑞有约,时间有所冲突,就放弃了。

Posted in NEWS | Tagged , , | Leave a comment

20121001OOW大会第一天

严格意义上将,今天OOW大会才是正式开始。Oracle的三个主会场和多个酒店中包含了大量的TOPIC,几乎每个时间段都有多个想听的主题,叫人难以取舍。
虽然起得并不算太晚,但是还是没有赶上8点开始的Oracle Open World Keynote,到了会场已经9点半,正好赶上第一场结束。于是趁这个时间逛了逛Moscone West的展示场,虽然没有发现什么太感兴趣的东西,但是在EBS厂商PANAYA的展台参加的游戏居然一下击中红心,拿到了遥控飞机的大奖。
第一个主题仍然是Oracle的Keynotes,由Mark Hurd带来了What’s Next for Oracle Database,主要介绍了12C 新特性Plugable Database,除了特性介绍,还给出了一些最佳实践,并介绍了PDB的备份、恢复以及STANDBY等相关内容。显然,Plugable DB是12c最为重要的特性,也是Oracle在数据库层实现云的基础,因此现在只要一提Oracle12c,大家都只会想到Plugable Database。当然一个新版本的推出不可能只包含一个值得称道的新特性。随后Tom登场,全面介绍了Oracle 12c的12个其他新特性,除了Plugable DB外还包括:
临时UNDO表空间:将临时段产生的UNDO放到专门的表空间,减少REDO的产生;
VARCHAR2类型扩展到32K:从刚接触Oracle DB以来,就受到VARCHAR2(4000)的限制;
安全性增强:内容太多了,Tom也没有展开;
SEQUENCE可作为表默认值:当时提到了自增列,我就在想,Oracle应该还是通过SEQUENCE来实现的,果不其然;
TOP N的语句实现:程序员终于不用和ROWNUM的三层嵌套较劲了;
SQL FROM PL/SQL性能增强:同样这是一组新特性;
ROW PATTERN MATCHING:类似分析函数的增强,使得行级处理能力更强;
ADAPTIVE执行计划:Oracle执行计划的增强;
统计信息增强:据说12c中改变了原有直方图的统计信息;
数据优化:指的是数据生命周期的管理,Oracle自动实现数据的转移;
应用连续性:具体记不清了,应该是利用Edition等技术实现的。
更多详细内容Tom将在周四的专场讲座中进行披露。今年3月Tom参加ACOUG活动时我向他提问12c的新特性。Tom受限于版本还没有发布,因此什么都没有说。没想到今天居然就是TOM来讲,算是了解了我的遗憾了。
下午的第一场和第三场都是关于ODA的专场,一方面是确实对于这个轻量级的一体机比较有兴趣,也亲自测试过一段时间;另一方面,计划在11月的OTN CHINA TOUR上给大家带来一个ODA的相关主题,因此在这里先充充电。第一个是ODA客户讲述ODA对于他们项目成功的帮助;第二个主题是Pythian的CTO Alexander Gorbachev带来的一个成功案例:介绍他们公司帮助客户成功的实施迁移到ODA的案例,以及他对于ODA的一些研究。显然在国外ODA已经被很多客户所接受,它的简化性使得Alexander将其比作IPAD。虽然我也对ODA测试了将近一周的时间,但是准备的时间比较仓卒,如果是听了这些主题之后再去准备测试,应该会有更多的收获。
下午听完第一场,正好碰上KayaHuang和Kamus,于是赶上了A Day in the Life of a Real-World Performance Engineer这个主题,听完之后个人认为这是最近几天最吸引人的主题了。由Tom,Andrew和Graham三位大牛通过幽默生动的方式演绎的真实案例,给人留下非常深刻的印象。Kaya全程后台支持,几乎一言不发是真正的背后英雄。这个主题在随后两天还有两场连载,可惜明天这个主题已经被订满,其火爆程度可见一斑。
今天听的最后一个主题是Best Practices for Dynamic SQL from PL/SQL,主要演讲者是Bryn Llewellyn,记得10年北京OOW的时候就听了他两场的SQL/PLSQL优化的主题。这次包含的内容除了部分优化相关外,更多是使用绑定变量、条件编译以及输入验证的内容。遵照这个主题的内容进行开发,可以最大程度避免SQL注入,强烈建议12306的开发人员关注学习一下。这段时间一直在看PL/SQL的文档,其中条件编译接触的时间也不是很长,这个主题的内容要抽时间好好整理吸收一下。

Posted in NEWS | Tagged , , | Leave a comment