OCM exam guide – Prepair

今天开始在OU参加为期四天的Oracle 10g OCM考试的培训,这个培训是第一次在OU举办,并不是对OCM中牵涉到Oracle数据库技术进行培训而是专门针对如何应对OCM考试的培训。 OCM考试全称为Oracle Certified Master(Oracle认证大师),是在OCA(Oracle认证专员Oracle Certified Associate)、OCP(Oracle认证专家Oracle Certified Professional)之后更高一级的Oracle技术认证,也是Oracle技术认证最高的一个级别。 考试是两天的时间,全部为实际操作的考试,第一天是创建数据库和安装Grid Control,第二天是创建RAC以及部署Data Guard,其中穿插着几乎所有Oracle数据库管理需要用到的常用知识。 其实,技术上来说OCM的考试并不很难,考试涉及的内容也是很喜闻乐见的技术架构。但是问题就在于时间,一个数据库管理员用dbca这样的图形化界面在一个小时里面创建完一个数据库这基本上没有难度,但是要求你不能使用图形界面只能用命令行方式呢?你能记得所有create database的语法吗?你能记得所有storage参数的语法吗?你能记得设定ASSM属性那个四个单词的前后顺序吗? 也许有人会说,我不需要记得啊,我有Oracle Online Documentation可以查询哦,是的,没错,OCM考试允许你查询Oracle的联机帮助文档(仅仅限于联机文档而不允许使用internet去做搜索),但是你能在几分钟内定位到你想要找的内容呢?又一共有多少个知识点你需要去查文档呢?而两个小时的考试时间又允许你去查多少次联机文档呢?我个人认为我对联机文档已经颇为熟悉了,但是今天上午的经验让我必须承认,如果我不继续加以练习,我绝对无法在规定时间内创建出完全符合考试要求的数据库。而如果第一天上午考试结束的时候你没有创建出需要的数据库,那么这次OCM考试你就失败了,因为后面考试的内容是要使用到这个数据库的。 最后,只要是考试就会有压力,当时间一点一滴流逝的时候,你能确保自己在最后的半小时里面还能像刚开始考试时候那样冷静吗?本来一次就能输入正确的SQL语句,会不会就要多输错几个单词,多按几次Delete键,多看到几次ORA报错信息才能完成输入呢? 好吧,这一系列文章的目的并不是给大家施加压力,而是准备告诉大家如何应对OCM考试,这几乎已经无关乎技术,而更多的是技巧了。 1. 保持平常心和信心,这很重要,当然也要意识到信心是通过考试前多次的自我实验而逐渐累积出来的。 2. 请一定在坐到考试桌前之后,尽快检查你面前的机器,会是两台RHEL4的Linux服务器,Gnome的图形界面(喜欢用KDE的兄弟们请去熟悉一下Gnome的操作),有鼠标有键盘,检查你的键盘输入是否顺畅,检查你的鼠标移动是否顺畅,检查机器的电源插座是否插牢,检查Oracle 10gR2的软件是否已经安装,检查$ORACLE_HOME等环境参数是否已经设置好,检查联机文档是否可以正常读取。按照常理来说,这些都不应该出问题,但是万一你运气好碰到有问题的机器,一旦考试开始计时,那损失的就只能是你自己了。哦,为什么是两台机器呢?因为一台是用来创建数据库,而另外一台是用来安装Grid Control的OMS。 下面一篇文章开始正式介绍,如何快速使用命令行方式创建一个数据库,再次强调,这无关乎技术,不是告诉你create database的语法该怎么写。

Learning ODI – Sybase to Oracle

这几天,在客户处实施Sybase ASE到Oracle 10g的变化数据捕获以及数据转换的前期测试工作,问题此起彼伏,但最终效果圆满,感觉上仿佛遇神杀神,遇鬼杀鬼。不拽了,总结一下遇到的问题以及相应的解决方法。 一. ODI连接数据库阶段 1. JDBC版本 – jConnect 5.5 ODI自带的JDBC驱动无法正常连接Sybase ASE数据库。 解决方法:需要去Sybase站点上下载jConnect 5.5版本,然后将其中的jconn2.jar文件拷贝进ODI安装目录的drivers文件夹中,之后再次选择com.sybase.jdbc2.jdbc.SybDriver,才可以连接。 2. 为什么不选择jConnect 6.05 因为在jConnect 6版本以后,”getColumnName”方法返回的是列的COLUMN Name,而之前的版本都是返回列的ALIAS,而ODI使用的都是列ALIAS,因此如果选用jConnect 6.05,那么在最后执行Interface的时候,将会碰到下面的错误: com.sunopsis.sql.SnpsMissingParametersException: Missing parameter… 解决方法:使用jConnect 5.5,这也是Oracle lab test时推荐的JDBC驱动版本。 3. JDBC连接串的写法 如果写法如下: Driver是:com.sybase.jdbc2.jdbc.SybDriver 连接串是:jdbc:sybase:Tds:172.22.224.106:4100/dbemp1 连接时将碰到JZ00L错误,已经确保用户名和密码一定正确: java.sql.SQLException: JZ00L: Login failed. Examine the SQLWarnings chained to this exception for the reason(s). 解决方法:添加charset属性,修改连接串为 jdbc:sybase:Tds:172.22.224.106:4100/dbemp1?charset=eucgb 最后Physical Schema的设置应该类似如下界面(点击以后放大)。 二. Datastore创建阶段 1….

Learning ODI – Changed Data Capture

Oracle Data Integrator的一个强大功能就是通过CDC(Changed Data Capture)抓取异构数据库之间的数据变化,并将这些数据同步到目标数据库中。比如说从Sybase ASE或者IBM DB2中将大量的产品数据定期通过CDC同步到Oracle数据仓库中,反之亦可以。 以下描述最简单的在ODI中设置CDC复制的步骤,只是一个大体步骤,可能有些细节会遗漏。 1. Designer -> Models -> Datastore,创建一个源表和一个目标表的Datastore,可以通过反向工程完成。当然之前需要在Topology Manager中的相应Technologies里添加Physical Architecture和Logical Architecture。 2. 设置Model的Journalizing属性,选择合适的JKM(Journalizing Knowledge Module),当然之前需要将合适的JKM导入到ODI中来。 3. 将源表的Datastore加入CDC。 4. 启动Journal (将会在源表所在的Schema中自动创建相应的Trigger,假设我们是用Trigger的方式而不是Logminer技术的话),为了能够正常启动Journal,源表必须具有主键。 5. 在目标表的Datastore中添加Subscriber,命名最好是默认的大写SUNOPSIS。 6. Designer -> Projects -> Interfaces,创建一个Interface,在Diagram页面做好源表和目标表字段之间的Mapping关系,注意,在源表属性中勾选“Journalized Data Only”选项。 7. 启动Schedualer Agent,参看我的上一篇文章。 8. 为Interface创建Scenario,再设置Scenario中的Scheduling。注意,设置Scheduling的时候,如果计划运行间隔是一小时以上,那么使用“Defination”页面,如果计划运行时间间隔在一小时以下(比如5分钟或者10秒钟一次),那么应该使用“Execution Cycle”页面,而“Defination”页面中的Execution部分应该设置为“On startup”而不是默认的“Simple”。 9. 运行该Scenario,可以在Operator中监控Scenario的运行情况。 该文章似乎只适用于我自己的备忘,而完全不能作为他人学习的参考文档来使用,如果想从头学习ODI,请去仔细阅读安装ODI时自带的Documentation Library,非常详细,原来SUNOPSIS的文档功力也是一流。