读Plist文件
NSString *errorDesc = nil;
NSPropertyListFormat format;
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"bookmarks.plist"];
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
plistPath = [[NSBundle mainBundle] pathForResource:@"bookmarks" ofType:@"plist"];
}
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
context.bookmarksDic = (NSMutableDictionary *)[[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:&format
errorDescription:&errorDesc] retain];
keysArr = [[[context.bookmarksDic allKeys] sortedArrayUsingSelector:@selector(compare:)] retain];
if (!context.bookmarksDic) {
NSLog(@"Error reading plist: %@, format: %d", errorDesc, format);
}
写入Plist
Context *context = [Context getInstance];
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"bookmarks.plist"];
NSString *error;
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:context.bookmarksDic
format:NSPropertyListXMLFormat_v1_0
errorDescription:&error];
if(plistData) {
[plistData writeToFile:plistPath atomically:YES];
}
else {
NSLog(@"%@",error);
[error release];
}
网页浏览总次数
2011年4月20日星期三
转----如何将IPhone应用程序软件发布到应用程序商店?
首先,您要申请开发者账号。
只有Agent有上传软件到App Store的权利。(但是我没有看到添加其它用户的功能,可能需要299美元的账号类型才会有,我自己的账号登录进来就是个Agent了)。
登录开发者中心,右侧有个Portal的链接,点击进去就是自己账号的管理中心,初次进入有个向导,可以帮你创建一个开发者证书。(最好是下载它的完整的向导说明书,是一个PDF,7M多,步骤还是挺详细的。但是这本手册在网上没有见过中文版的说明,所以在这里简单介绍一下。)
这个开发者中心的用户权限分三种类型:Agent,Admin,Developer。
- Agent拥有完整的管理权限。
- Admin也可以管理用户和证书。
- Developer只能管理自己的证书和设备。
对于个人开发者,你需要完成以下几个过程:
- 申请一个Development证书 > 设置你的iPhone手机 > 创建一个App ID > 创建并下载安装一个Development Provisioning Profile。经过这几步,你写的程序就可以跑在自己的手机上了(否则只能在虚拟机里面运行)。
- 然后申请一个Distribution证书 > 创建并安装一个Distribution Provisioning Profile > 编译你的程序 > 就可以发布到App Store了。
下面详细介绍一下:(不知道有没有必要,毕竟买了证书的人都可以下载到这篇很简单的英文文档),所有的介绍以中文版的Mac OS X的菜单和程序名为准。
开发者证书安装步骤:
- 打开应用程序中的“钥匙串访问”,在菜单里点击“证书助理”下面的“从证书代理请求证书”,注意下面不要选中任何行,否则菜单会变。输入自己的注册Email,常用名称可以写详细一点,比如“Unfish Dev Key”,下面选中“存储到磁盘”,点继续,可能会出现未知错误,多试几次就OK了。然后在浏览器中进入开发者中心的Certificaties导航页面,在Development页面中最下面选择刚才创建的证书文件,点上传。然后证书就会显示出来,还要再点一下后面的Approve按钮,页面刷新后这个证书就可以下载了。下来是个cer文件,双击会自动导入,导入类型选择“登录”就可以。
- 然后是添加自己的手机设备到xcode。把手机连到电脑上,在xcode的windows菜单下打开Organizer,左边的devices下面会列出你的手机,右边的Identifier项就是你的手机的udid,复制下来,待会要用。如果这个手机还没有设置过作为开发机,这个界面上应该会有两个按钮,点一下就可以把它设为开发机,在xcode里点Build and go的时候就可以自动的安装你的程序到手机上,不需要通过ITunes了。在开发者中心的左边Devices导航页里点Add Device,起个自己认识的名字,把udid粘贴进去就可以了。(这一步只是开发证书有用,发布证书是不需要这个东西的。)
- 然后需要创建一个App ID,在开发者中心的App IDs导航页创建一个新的App ID,这个App ID需要跟程序的info.plist里面定义的程序Identifier相对应,如果这里只输入一个*,那么info.plist那里写什么都可以,建议用*。
- 然后进入开发者中心的Provisioning菜单,在Development页面创建一个新的Provisioning,需要选择所使用的证书,App ID,和对应的设备,生成以后下载这个provisioning文件,把下载下来的文件拖到Dock上的Xcode的图标上就会自动安装进去。然后退出xcode重新打开,打开你的项目,打开Project菜单下面的Edit Project Settings,进入Build页面,找到下面的Code Signing Identity,把Any iPhone OS Device项后面选中你的开发者证书,然后就可以把项目的编译目标设为Device(而不是模拟器),试一下Build and Go了。程序应该会编译完并自动安装到你的手机上,并自动启动了。
发布证书安装步骤:
- 使用钥匙串访问里面的“从证书代理请求证书”功能,输入自己的Email,名称要写购买证书时登录的公司名或者个人名,下面选中“保存到磁盘”和“让我自己选择私钥”,下一步,把证书保存下来。
- 进入开发者中心Certificates里面的Distribution页面,选择刚才保存的文件上传,然后Approve一下,下载这个证书,双击导入,类型选登录。
- 进入开心者中心Provisioning里面的Distribution页面,添加新的Provisioning,类型选App Store,(如果选了Ad Hoc,就只有你添加过udid的手机才能安装这个程序了),证书应该是自动出现的,App ID选好,创建完成,下载这个文件,拖到xcode的图标上安装完成。退出xcode再重新打开,否则加载不了你刚刚添加的那个证书,会出现Provisioning无效的提示。
- 然后打开你的项目,进入“Edit Project Settings”,进入Configuration页面,选中Release点击下面的Duplicate,复制一个新的配置项出来,命名为Distribution。然后进入Build页面,顶上的Configuration下拉框选中Distribution,下面的Code Signing Identity里面的Any iPhone OS Device后面对应的值选中你的那个Distribution的证书。然后就可以编译程序了。
(如果你之前按照类似这个教程http://www.weiphone.com/thread-222380-1-3.html 自己生成过证书并且改过Project Settings和info.plist,需要把这两个地方改回去,否则编译的时候会出现一个warning,CodeSign warning: provisioning is not applicable for product type ‘Application‘ in SDK ‘Device – iPhone OS 2.2′。删掉Project Setting里面的PROVISIONING_PROFILE_ALLOWED = NO和PROVISIONING_PROFILE_REQUIRED = NO,以及info.plist的SignerIdentity,再编译,应该就不会出错了。)
程序发布到应用程序商店的步骤:
- 在开发者中心的Distribution导航里面的App Store页面,在下面的App Store下面的Learn More展开,就可以看到Go to iTunes Connect的链接。进入以后点击Manage My Application,就可以添加自己的程序了。
- 需要选择程序的语言,国家,介绍等等基本信息,然后下一步上传程序和其它图片。这个地方上传的程序,就是把你的项目编译以后生成的那个.app的目录直接压缩成zip上传,(这个.app目录里面的任何文件都不可以更改,否则签名就不对了)。你需要准备一张512×512的png图片作为大Logo,还需要准备5张程序运行的界面截图,在这个页面上挨个选Choose file,再点击upload file,出现对号就没问题了。然后选择程序的价格,默认有很多可以选,free是免费,1是0.99美元,2是1.99美元,诸如此类。如果非免费程序,你还得准备一份购买协议。
- 再点下一步,就可以等待程序审核了。
2011年4月3日星期日
11G OCM 考试相关
試験環境
Oracle Enterprise Linux Release 5.2 (64-bit)
Oracle Database 11g version 11.2.0 (64-bit)
Oracle Enterprise Management Grid Control 10g version 10.2.0.5 (64-bit)
Oracle Enterprise Linux Release 5.2 (64-bit)
Oracle Database 11g version 11.2.0 (64-bit)
Oracle Enterprise Management Grid Control 10g version 10.2.0.5 (64-bit)
2011年4月2日星期六
转----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的语法该怎么写。
开始描述手工创建数据库的快速过程,在这个过程中你只有命令行窗口,如果不习惯使用vi的话,可以用Gnome下的Text Editor,还有本机可以访问的Oracle联机文档。
1. 设置环境变量ORACLE_SID
参照考题中需要创建的数据库SID,设置操作系统环境变量,假设要求创建的数据库的SID是TEST。
2. 创建最简单的initTEST.ora文件
在$ORALCE_HOME/dbs下可以找到一份已经存在的init.ora文件,这是一份样本(在正式考试的机器上你也可以找到)。打开这份文件可以看到很多被注释的行,让人烦躁,一行一行地修改这个文件比较耗时,使用下面的命令,把所有以#开头和所有的空行全部过滤掉,同时生成最简单的initTEST.ora初始化参数文件。
$> cat init.ora | grep -v ^# | grep -v ^$ > initSID.ora
然后修改该文件的db_name参数和control_files参数(控制文件放在哪里,需要多少份控制文件,在考题中会清楚地提出要求),其它的参数保持原状不需要修改。
3. 启动数据库到nomount状态
此时已经有可供启动的初始化参数文件了,将数据库启动到nomount状态。
SQL> startup nomount;
4. 创建spfile
实例启动以后立刻创建spfile,然后重启一次数据库,让数据库能够使用到spfile。
5. 修改其它必须的初始化参数
为什么需要先快速地将实例启动到nomount状态?因为我们需要使用show parameter命令,在记不清楚那些初始化参数具体怎么敲的时候,show parameter命令能够来帮助我们快速定位其它必须要修改的初始化参数名字的写法。
因为用到了spfile,所以此处我们已经可以使用alter system命令来修改初始化参数了。
db_create_file_dest = 考题中要求你创建数据文件时存放的目录
db_create_online_log_dest_1 = 考题中要求你创建联机重做日志文件时存放的目录
audit_file_dest = ...
background_dump_dest = ...
core_dump_dest = ...
user_dump_dest = ...
db_block_size = 考题中可能会要求创建特定block大小的数据库
不要一条命令一条命令在SQL*Plus里面敲,用vi或者Text Editor将所有的alter system命令都编辑好,然后一次执行。
执行完毕以后,关闭实例,再重新启动到nomount状态,让刚才修改的初始化参数生效。
6. 创建密码文件
用orapwd程序创建orapwTEST密码文件,如果记不清楚orapwd程序怎么用,直接敲orapwd然后回车,会告诉你语法是怎样的。
7. 创建数据库
在这里有两种方法可以选择,依靠个人喜好了。
一种就是直接编辑create database命令,将考试的各项要求在这个命令中事先编辑好。
一种是创建完默认的数据库以后再用alter database命令去逐条修改以符合考试中对于数据库的各项要求。
第一种方法的技巧在于,要快速找到例句,如果你去查SQL Reference文档中的create database的语法,时间肯定是比较紧张的,我们要查的是Administrator's Guide这本文档中第二章 Creating an Oracle Database -> Creating the database -> Step 7: Issue the CREATE DATABASE Statement,这里有完整的一条SQL语句,copy出来,然后按照考试要求去编辑相应的地方,然后执行,这样出来的命令基本上不会出现问题。
第二种方法的技巧在于,因为是10g数据库,因为我们在前面设置了db_create_file_dest和db_create_online_log_dest_1参数,所以,只需要输入最简单的“create database;”命令,回车,就会有一个可以使用的数据库创建出来,当然比如redolog的组数和member个数,比如temp表空间的名字,比如undo表空间的名字都可能会跟考试的要求不太一样,然后用alter database以及一些其它的命令逐条修改就行。要知道数据库起来了,其中的某些检查项跟考试要求不符,不会得0分。
8. 运行catalog.sql 和 catproc.sql
只需要运行这两个SQL,都在$ORACLE_HOME/rdbms/admin中,创建必须的数据字典和内置的package等,千万不要忘了执行这一步。
9. 创建监听
考试可能会要求你创建非默认端口(1521)的监听,并且要求实例自动注册到这个监听上,那么这时候需要配置listener.ora和tnsnames.ora文件,去$ORACLE_HOME/network/admin/sample目录下把示例文件copy出来,然后按照要求修改。如果考试没有要求,那么无需修改任何配置文件,直接lsnrctl start把监听启动即可。
10. 其它的一些要求
比如创建额外的表空间,比如创建临时表空间组。
此处需要注意的是,对于数据文件,考试可能都会有详细的要求,比如第一个extent应该多大,每次扩展多少,初始化时数据文件多大,最终能够扩展到多大。要求详细阅读考试的要求,至于这里的语法,如果不记得,没有什么好的办法,只能去查SQL Reference文档了。
基本上上午的工作就是这些,最后提醒一点,考试的结果是美国那边直接用脚本连到你的服务器上,通过数据字典抓取结果,然后判断你哪些错了,所以,一定要保证在最后的时候,数据库是OPEN的,监考老师说还有5分钟结束考试的时候,不要再做什么其它操作了。如果之前你创建完数据库,想要shutdown以后冷备一下的话,请估算好时间。我听到的案例是冷备刚完成,数据库还未startup,结果美国那边开始抓取考试结果,因为无法连接数据库,因此第一天上午的section得了零分。
下一篇文章介绍安装Grid Control的一些经验。
安装Grid Control
在上午安装完数据库,配置完监听之后,中午休息,记得中午休息之前把数据库备份一下。
下午的Section是安装Grid Control。在OCM考试的Linux操作系统环境中安装Grid Control应该来说是一件很简单的事情,恩,实际上是我安装Grid Control最顺畅的一次了。
每个人面前会有两台机器,一台称为奇数机(ODD),一台称为偶数机(EVEN),注意,考题上也会这样表述的,要你在ODD机器上做什么或者在EVEN机器上做什么,偶数还是奇数是依靠机器的hostname最后一位或者两位数字来定的,通常会要求你在奇数机上创建数据库,在偶数机上安装Grid Control的OMS。
偶数机上是没有Oracle软件的,因此OMS需要的Repository这个数据库也需要创建在奇数机上,再加上之后第二天会要求创建的Standby实例,总共会有三个实例运行在奇数机上,正常情况下奇数机的内存是2G,所以请预先考虑好分配给每个实例的内存。
为什么上午就要求配置监听?因为下午的考试中OMS需要通过监听来访问创建的数据库,总之,OCM考试中基本上都是这样环环相扣的,其中某一步做慢了或者没完成就很可能影响接下来的考试。
Grid Control的安装软件会预先放置在偶数机的某个目录下,考题里面会告诉你的。但是,不要着急安装,为了一次就安装成功我们需要预先做一些工作。再次强调一下,安装OMS我们基本上只有一次的机会,因为大部分的错误都会是在等待了一个漫长的Configuration过程之后再报出来,而这时候通常已经没有剩余的时间让你去找到问题发生的原因,然后清理已经安装了残迹再重新安装OMS了。
1. 按照要求,通常会创建一个新数据库在奇数机上(不同于上午的Section中要求创建的SID),用于存储OMS需要的Repository信息,下午的时候应该是已经可以使用图形界面了,所以我们可以用dbca来创建这个数据库。
2. 数据库创建完毕以后,也许仍然你习惯用手动的方法创建,所以请检查数据库里面有没有dbms_shared_pool这个package,如果没有,运行$ORACLE_HOME/rdbms/admin/dbmspool.sql来创建这个package,因为安装OMS时候某些自动的检查需要调用这个包,没有的话将会报错。
3. 快速地建立两台机器之间的ssh信任关系,如果还不会的,请务必去网上查资料并且牢记每一步操作。这里有个小陷阱,默认情况下,两台机器上的oracle用户的home目录权限是0777,也就是完全的可读些权限,但是在这种情况下,建立oracle用户的ssh信任关系,即使你完全配正确了,也同样无法正常地不输入密码就登陆到另外一台机器上。据说很多人折在这里,怎么也配不通两机的信任关系,那时候焦躁的心情应该可想而之了。 需要做的是将oracle用户的home目录权限改为0755。
4. 尽量在一台机器上操作,不要在两台机器面前一会儿敲敲这个的键盘,一会儿动动那个的鼠标。字符界面的话,用terminal ssh过去就可以了,图形界面呢?不需要费劲地去检查vnc server有没有启动,启动在哪个端口了什么的,直接用ssh -X hostname这样的方式,就可以将远程的X界面显示在本机上。
5. 安装OMS,对于Repository库是有一些初始化参数的要求的,比如java池该多大,shared pool该多大,job queue该多大,但是不要去阅读安装文档,那个浪费时间。我们需要做的就是设置SGA_TARGET = 300M,这样内存参数就自动管理了,安装OMS不会报任何错误,另外对于job queue等其它的参数,在点击开始安装之后的某个界面,会弹出一个警告框,告诉你哪些参数不符合要求,需要改为多少多少,OK,安装这个界面里的要求,依次修改数据库的参数,然后重新启动数据库,不需要退出安装界面,在重启完数据库之后,点确定,直接继续安装就可以了。
6. 要有耐心,OMS安装的时候,在Configuration那一步时会非常慢,千万不要等不及了就准备关掉重来,时刻监控安装的log文件(log文件的位置在安装界面上应该可以找到),只要不停地有输出,你就可以安心地等待。
7. OMS安装完毕,也启动成功了。还需要在奇数机上安装Grid Control的Agent,有好多种方法可以安装,但是我们需要选择最简单最快速的方法,那就是使用agentDownload.linux程序,将这个程序从偶数机的OMS安装目录中copy到奇数机的某个目录下,随便哪个目录都行。然后运行下面的命令:
./agentDownload.linux -b /u01/app/oracle/product
最后一个参数是我们希望将agent安装到的BASE目录。
用这种方法安装Agent的速度很快,而且无需任何人工参与,简直是杀人越货考取OCM的必备良器。
8. OMS也启动了,Agent也启动了,通过浏览器去检查一下Grid Control的管理界面是不是好用吧,到这里,基本上就没什么问题了,下面会是一些要求你通过Grid Control来创建一些表空间或者一些用户或者一些什么别的操作,按照要求来就好。不过,对于命令行死忠派来说,还是预先去熟悉一下图形界面的操作吧,否则到时候找个按钮都要找半天。
其实到这里就差不多了,但是还预留了一层楼,如果我不懒的话,会继续更新第二天的Section可能会碰到的题目。
考试是两天的时间,全部为实际操作的考试,第一天是创建数据库和安装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的语法该怎么写。
开始描述手工创建数据库的快速过程,在这个过程中你只有命令行窗口,如果不习惯使用vi的话,可以用Gnome下的Text Editor,还有本机可以访问的Oracle联机文档。
1. 设置环境变量ORACLE_SID
参照考题中需要创建的数据库SID,设置操作系统环境变量,假设要求创建的数据库的SID是TEST。
2. 创建最简单的initTEST.ora文件
在$ORALCE_HOME/dbs下可以找到一份已经存在的init.ora文件,这是一份样本(在正式考试的机器上你也可以找到)。打开这份文件可以看到很多被注释的行,让人烦躁,一行一行地修改这个文件比较耗时,使用下面的命令,把所有以#开头和所有的空行全部过滤掉,同时生成最简单的initTEST.ora初始化参数文件。
$> cat init.ora | grep -v ^# | grep -v ^$ > initSID.ora
然后修改该文件的db_name参数和control_files参数(控制文件放在哪里,需要多少份控制文件,在考题中会清楚地提出要求),其它的参数保持原状不需要修改。
3. 启动数据库到nomount状态
此时已经有可供启动的初始化参数文件了,将数据库启动到nomount状态。
SQL> startup nomount;
4. 创建spfile
实例启动以后立刻创建spfile,然后重启一次数据库,让数据库能够使用到spfile。
5. 修改其它必须的初始化参数
为什么需要先快速地将实例启动到nomount状态?因为我们需要使用show parameter命令,在记不清楚那些初始化参数具体怎么敲的时候,show parameter命令能够来帮助我们快速定位其它必须要修改的初始化参数名字的写法。
因为用到了spfile,所以此处我们已经可以使用alter system命令来修改初始化参数了。
db_create_file_dest = 考题中要求你创建数据文件时存放的目录
db_create_online_log_dest_1 = 考题中要求你创建联机重做日志文件时存放的目录
audit_file_dest = ...
background_dump_dest = ...
core_dump_dest = ...
user_dump_dest = ...
db_block_size = 考题中可能会要求创建特定block大小的数据库
不要一条命令一条命令在SQL*Plus里面敲,用vi或者Text Editor将所有的alter system命令都编辑好,然后一次执行。
执行完毕以后,关闭实例,再重新启动到nomount状态,让刚才修改的初始化参数生效。
6. 创建密码文件
用orapwd程序创建orapwTEST密码文件,如果记不清楚orapwd程序怎么用,直接敲orapwd然后回车,会告诉你语法是怎样的。
7. 创建数据库
在这里有两种方法可以选择,依靠个人喜好了。
一种就是直接编辑create database命令,将考试的各项要求在这个命令中事先编辑好。
一种是创建完默认的数据库以后再用alter database命令去逐条修改以符合考试中对于数据库的各项要求。
第一种方法的技巧在于,要快速找到例句,如果你去查SQL Reference文档中的create database的语法,时间肯定是比较紧张的,我们要查的是Administrator's Guide这本文档中第二章 Creating an Oracle Database -> Creating the database -> Step 7: Issue the CREATE DATABASE Statement,这里有完整的一条SQL语句,copy出来,然后按照考试要求去编辑相应的地方,然后执行,这样出来的命令基本上不会出现问题。
第二种方法的技巧在于,因为是10g数据库,因为我们在前面设置了db_create_file_dest和db_create_online_log_dest_1参数,所以,只需要输入最简单的“create database;”命令,回车,就会有一个可以使用的数据库创建出来,当然比如redolog的组数和member个数,比如temp表空间的名字,比如undo表空间的名字都可能会跟考试的要求不太一样,然后用alter database以及一些其它的命令逐条修改就行。要知道数据库起来了,其中的某些检查项跟考试要求不符,不会得0分。
8. 运行catalog.sql 和 catproc.sql
只需要运行这两个SQL,都在$ORACLE_HOME/rdbms/admin中,创建必须的数据字典和内置的package等,千万不要忘了执行这一步。
9. 创建监听
考试可能会要求你创建非默认端口(1521)的监听,并且要求实例自动注册到这个监听上,那么这时候需要配置listener.ora和tnsnames.ora文件,去$ORACLE_HOME/network/admin/sample目录下把示例文件copy出来,然后按照要求修改。如果考试没有要求,那么无需修改任何配置文件,直接lsnrctl start把监听启动即可。
10. 其它的一些要求
比如创建额外的表空间,比如创建临时表空间组。
此处需要注意的是,对于数据文件,考试可能都会有详细的要求,比如第一个extent应该多大,每次扩展多少,初始化时数据文件多大,最终能够扩展到多大。要求详细阅读考试的要求,至于这里的语法,如果不记得,没有什么好的办法,只能去查SQL Reference文档了。
基本上上午的工作就是这些,最后提醒一点,考试的结果是美国那边直接用脚本连到你的服务器上,通过数据字典抓取结果,然后判断你哪些错了,所以,一定要保证在最后的时候,数据库是OPEN的,监考老师说还有5分钟结束考试的时候,不要再做什么其它操作了。如果之前你创建完数据库,想要shutdown以后冷备一下的话,请估算好时间。我听到的案例是冷备刚完成,数据库还未startup,结果美国那边开始抓取考试结果,因为无法连接数据库,因此第一天上午的section得了零分。
下一篇文章介绍安装Grid Control的一些经验。
安装Grid Control
在上午安装完数据库,配置完监听之后,中午休息,记得中午休息之前把数据库备份一下。
下午的Section是安装Grid Control。在OCM考试的Linux操作系统环境中安装Grid Control应该来说是一件很简单的事情,恩,实际上是我安装Grid Control最顺畅的一次了。
每个人面前会有两台机器,一台称为奇数机(ODD),一台称为偶数机(EVEN),注意,考题上也会这样表述的,要你在ODD机器上做什么或者在EVEN机器上做什么,偶数还是奇数是依靠机器的hostname最后一位或者两位数字来定的,通常会要求你在奇数机上创建数据库,在偶数机上安装Grid Control的OMS。
偶数机上是没有Oracle软件的,因此OMS需要的Repository这个数据库也需要创建在奇数机上,再加上之后第二天会要求创建的Standby实例,总共会有三个实例运行在奇数机上,正常情况下奇数机的内存是2G,所以请预先考虑好分配给每个实例的内存。
为什么上午就要求配置监听?因为下午的考试中OMS需要通过监听来访问创建的数据库,总之,OCM考试中基本上都是这样环环相扣的,其中某一步做慢了或者没完成就很可能影响接下来的考试。
Grid Control的安装软件会预先放置在偶数机的某个目录下,考题里面会告诉你的。但是,不要着急安装,为了一次就安装成功我们需要预先做一些工作。再次强调一下,安装OMS我们基本上只有一次的机会,因为大部分的错误都会是在等待了一个漫长的Configuration过程之后再报出来,而这时候通常已经没有剩余的时间让你去找到问题发生的原因,然后清理已经安装了残迹再重新安装OMS了。
1. 按照要求,通常会创建一个新数据库在奇数机上(不同于上午的Section中要求创建的SID),用于存储OMS需要的Repository信息,下午的时候应该是已经可以使用图形界面了,所以我们可以用dbca来创建这个数据库。
2. 数据库创建完毕以后,也许仍然你习惯用手动的方法创建,所以请检查数据库里面有没有dbms_shared_pool这个package,如果没有,运行$ORACLE_HOME/rdbms/admin/dbmspool.sql来创建这个package,因为安装OMS时候某些自动的检查需要调用这个包,没有的话将会报错。
3. 快速地建立两台机器之间的ssh信任关系,如果还不会的,请务必去网上查资料并且牢记每一步操作。这里有个小陷阱,默认情况下,两台机器上的oracle用户的home目录权限是0777,也就是完全的可读些权限,但是在这种情况下,建立oracle用户的ssh信任关系,即使你完全配正确了,也同样无法正常地不输入密码就登陆到另外一台机器上。据说很多人折在这里,怎么也配不通两机的信任关系,那时候焦躁的心情应该可想而之了。 需要做的是将oracle用户的home目录权限改为0755。
4. 尽量在一台机器上操作,不要在两台机器面前一会儿敲敲这个的键盘,一会儿动动那个的鼠标。字符界面的话,用terminal ssh过去就可以了,图形界面呢?不需要费劲地去检查vnc server有没有启动,启动在哪个端口了什么的,直接用ssh -X hostname这样的方式,就可以将远程的X界面显示在本机上。
5. 安装OMS,对于Repository库是有一些初始化参数的要求的,比如java池该多大,shared pool该多大,job queue该多大,但是不要去阅读安装文档,那个浪费时间。我们需要做的就是设置SGA_TARGET = 300M,这样内存参数就自动管理了,安装OMS不会报任何错误,另外对于job queue等其它的参数,在点击开始安装之后的某个界面,会弹出一个警告框,告诉你哪些参数不符合要求,需要改为多少多少,OK,安装这个界面里的要求,依次修改数据库的参数,然后重新启动数据库,不需要退出安装界面,在重启完数据库之后,点确定,直接继续安装就可以了。
6. 要有耐心,OMS安装的时候,在Configuration那一步时会非常慢,千万不要等不及了就准备关掉重来,时刻监控安装的log文件(log文件的位置在安装界面上应该可以找到),只要不停地有输出,你就可以安心地等待。
7. OMS安装完毕,也启动成功了。还需要在奇数机上安装Grid Control的Agent,有好多种方法可以安装,但是我们需要选择最简单最快速的方法,那就是使用agentDownload.linux程序,将这个程序从偶数机的OMS安装目录中copy到奇数机的某个目录下,随便哪个目录都行。然后运行下面的命令:
./agentDownload.linux -b /u01/app/oracle/product
最后一个参数是我们希望将agent安装到的BASE目录。
用这种方法安装Agent的速度很快,而且无需任何人工参与,简直是杀人越货考取OCM的必备良器。
8. OMS也启动了,Agent也启动了,通过浏览器去检查一下Grid Control的管理界面是不是好用吧,到这里,基本上就没什么问题了,下面会是一些要求你通过Grid Control来创建一些表空间或者一些用户或者一些什么别的操作,按照要求来就好。不过,对于命令行死忠派来说,还是预先去熟悉一下图形界面的操作吧,否则到时候找个按钮都要找半天。
其实到这里就差不多了,但是还预留了一层楼,如果我不懒的话,会继续更新第二天的Section可能会碰到的题目。
以下内容由达人参加完考试以后亲自总结的,感谢他。
考试安排:
OCM考试一共有9个section,具体的安排如下:
第一天:
section 0:创建一个数据库 45分钟
section 1:数据库和网络配置 120分钟
section 2:Gridcontrol安装配置 120分钟
section 3:数据库备份恢复 60分钟
section 4:数据仓库管理 90分钟
第二天:
section 5:数据库管理 120分钟
section 6:数据库性能管理 120分钟
section 7:部署Oracle RAC数据库 105分钟
sectoin 8:部署dataguard数据库 60分钟
考试的内容:
#15分钟熟悉考前环境,上海的考场的机器配置很差,1G内存 1CPU的
一、手动建库
如果自己打命令创建数据库的话时间会很紧张,我采用的方法是:
1. 设置环境变量ORACLE_SID
参照考题中需要创建的数据库SID,设置操作系统环境变量,假设要求创建的数据库的SID是TEST。
2.手工创建如下目录:
$ORACLE_BASE/admin/test/cdump
$ORACLE_BASE/admin/test/bdump
$ORACLE_BASE/admin/test/udump
$ORACLE_BASE/admin/test/adump
$ORACLE_BASE/oradata/test
3. 创建最简单的initTEST.ora文件
在$ORALCE_HOME/dbs下可以找到一份已经存在的init.ora文件,这是一份样本(在正式考试的机器上你也可以找到)。打开这份文件可以看到很多被注释的行,让人烦躁,一行一行地修改这个文件比较耗时,使用下面的命令,把所有以#开头和所有的空行全部过滤掉,同时生成最简单的 initTEST.ora初始化参数文件。
$> cat init.ora | grep -v ^# | grep -v ^$ > initSID.ora
然后修改该文件的db_name参数和control_files参数(控制文件放在哪里,需要多少份控制文件,在考题中会清楚地提出要求),其它的参数保持原状不需要修改。
db_name=TEST
control_files=("/oracle/oradata/TEST/controlfile01.dbf")
sga_max_size=280M
sga_target=280M
note:删除其他内存参数
4. 启动数据库到nomount状态
此时已经有可供启动的初始化参数文件了,将数据库启动到nomount状态。
SQL> startup nomount;
5. 创建spfile
实例启动以后立刻创建spfile,然后重启一次数据库,让数据库能够使用到spfile。
6. 修改其它必须的初始化参数
为什么需要先快速地将实例启动到nomount状态?因为我们需要使用show parameter命令,在记不清楚那些初始化参数具体怎么敲的时候,show parameter命令能够来帮助我们快速定位其它必须要修改的初始化参数名字的写法。
因为用到了spfile,所以此处我们已经可以使用alter system命令来修改初始化参数了。
db_block_size=8192
background_dump_dest=/oracle/product/RAC10G/admin/test01/bdump
core_dump_dest=/oracle/product/RAC10G/admin/test01/cdump
user_dump_dest=/oracle/product/RAC10G/admin/test01/udump
audit_file_dest=/oracle/product/RAC10G/admin/test01/udump
db_create_file_dest = 考题中要求你创建数据文件时存放的目录
db_create_online_log_dest_1 = 考题中要求你创建联机重做日志文件时存放的目录
undo_management=auto
undo_tablespace=undotbs1
#创建em时需要job_queue_processes>1
job_queue_processes=5
不要一条命令一条命令在SQL*Plus里面敲,用vi或者Text Editor将所有的alter system命令都编辑好,然后一次执行。
执行完毕以后,关闭实例,再重新启动到nomount状态,让刚才修改的初始化参数生效。
7创建密码文件
用orapwd程序创建orapwTEST密码文件,如果记不清楚orapwd程序怎么用,直接敲orapwd然后回车,会告诉你语法是怎样的。
orapwd file=$ORACLE_HOME/dbs/orapwSID password=oracle entries=5
8. 创建数据库
要快速找到例句,如果你去查SQL Reference文档中的create database的语法,时间肯定是比较紧张的,
我们要查的是Administrator’s Guide这本文档中第二章 Creating an Oracle Database -> Creating the database ->
Step 7: Issue the CREATE DATABASE Statement,这里有完整的一条SQL语句,copy出来,然后按照考试要求去编辑相应的地方,
然后执行,这样出来的命令基本上不会出现问题。
注意数据文件分布到disk1~disk5
CREATE DATABASE TEST
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/oracle/oradata/test/redo01.log') SIZE 10M,
GROUP 2 ('/oracle/oradata/test/redo02.log') SIZE 10M,
GROUP 3 ('/oracle/oradata/test/redo03.log') SIZE 10M
MAXLOGFILES 30
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 200
MAXINSTANCES 2
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
DATAFILE '/oracle/oradata/test/system01.dbf' SIZE 325M REUSE EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/oracle/oradata/test/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/oracle/oradata/test/temp01.dbf' SIZE 20M REUSE
UNDO TABLESPACE undotbs1 DATAFILE '/oracle/oradata/test/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
#创建缺省表空间
CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/oracle/oradata/test1/users01.dbf'
SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
;
ALTER DATABASE DEFAULT TABLESPACE "USERS";
NOTE:修改MAXLOGFILES,undo,default
9. 运行catalog.sql 和 catproc.sql
只需要运行这两个SQL,都在$ORACLE_HOME/rdbms/admin中,创建必须的数据字典和内置的package等
optional:
connect /as sysdba
@?/rdbms/admin/catblock.sql
@?/rdbms/admin/catoctk.sql
@?/rdbms/admin/owminst.plb
connect system/oracle
@?/sqlplus/admin/pupbld.sql
@?/sqlplus/admin/help/hlpbld.sql helpus.sql
Note :section0中没有要求你运行catalog ,catproc脚本,但是如果时间有多我建议在section 0中就运行这2个脚本为下一个
section节省时间.
二、配置数据库和网络
1.修改数据库几个参数
2.按照要求创建几个表空间
3.网络配置
创建监听
考试可能会要求你创建非默认端口(1521)的监听,并且要求实例自动注册到这个监听上,
那么这时候需要配置listener.ora和 tnsnames.ora,并且修改local_listener参数
MTS配置
三、gridcontrol
#安装
每个人面前会有两台机器,一台称为奇数机(ODD),一台称为偶数机(EVEN),注意,考题上也会这样表述的,要你在ODD机器上做什么或者在 EVEN 机器上做什么,偶数还是奇数是依靠机器的hostname最后一位或者两位数字来定的,通常会要求你在奇数机上创建数据库,在偶数机上安装Grid Control的OMS。
偶数机上是没有Oracle软件的,因此OMS需要的Repository这个数据库也需要创建在奇数机上,再加上之后第二天会要求创建的Standby实例,总共会有三个实例运行在奇数机上,上海机器的内存是1G,所以一定要预先考虑好分配给每个实例的内存。
为什么上午就要求配置监听?因为下午的考试中OMS需要通过监听来访问创建的数据库,总之,OCM考试中基本上都是这样环环相扣的,其中某一步做慢了或者没完成就很可能影响接下来的考试。
Grid Control的安装软件会预先放置在偶数机的某个目录下,考题里面会告诉你的。但是,不要着急安装,为了一次就安装成功我们需要预先做一些工作。再次强调一下,安装OMS我们基本上只有一次的机会,因为大部分的错误都会是在等待了一个漫长的Configuration过程之后再报出来,而这时候通常已经没有剩余的时间让你去找到问题发生的原因,然后清理已经安装了残迹再重新安装OMS了。
1. Use DBCA
按照要求,通常会创建一个新数据库在奇数机上(不同于上午的Section中要求创建的SID),用于存储OMS需要的Repository信息,下午的时候应该是已经可以使用图形界面了,所以我们可以用dbca来创建这个数据库。
2. Check Pacakage
数据库创建完毕以后,也许仍然你习惯用手动的方法创建,所以请检查数据库里面有没有dbms_shared_pool这个package,如果没有,运行$ORACLE_HOME/rdbms/admin/dbmspool.sql来创建这个package,因为安装OMS时候某些自动的检查需要调用这个包,没有的话将会报错。
3. Implement SSH
快速地建立两台机器之间的ssh信任关系,如果还不会的,请务必去网上查资料并且牢记每一步操作。这里有个小陷阱,默认情况下,两台机器上的oracle 用户的home目录权限是0777,也就是完全的可读些权限,但是在这种情况下,建立oracle用户的ssh信任关系,即使你完全配正确了,也同样无法正常地不输入密码就登陆到另外一台机器上。据说很多人折在这里,怎么也配不通两机的信任关系,那时候焦躁的心情应该可想而之了。需要做的是将oracle用户的home目录权限改为0755。
这步是可选的有些兄弟没配置也能安装成功的
4. Transfer X Window
尽量在一台机器上操作,不要在两台机器面前一会儿敲敲这个的键盘,一会儿动动那个的鼠标。字符界面的话,用terminal ssh过去就可以了,图形界面呢?不需要费劲地去检查vnc server有没有启动,启动在哪个端口了什么的,直接用ssh -X hostname这样的方式,就可以将远程的X界面显示在本机上。
5. Follow the Error Messege
安装OMS,对于Repository库是有一些初始化参数的要求的,比如java池该多大,shared pool该多大,job queue该多大,但是不要去阅读安装文档,那个浪费时间。我们需要做的就是设置SGA_TARGET = 300M,这样内存参数就自动管理了,安装OMS不会报任何错误,另外对于job queue等其它的参数,在点击开始安装之后的某个界面,会弹出一个警告框,告诉你哪些参数不符合要求,需要改为多少多少,OK,安装这个界面里的要求,依次修改数据库的参数,然后重新启动数据库,不需要退出安装界面,在重启完数据库之后,点确定,直接继续安装就可以了。
6. Be Patient
要有耐心,OMS安装的时候,在Configuration那一步时会非常慢,千万不要等不及了就准备关掉重来,时刻监控安装的log文件(log文件的位置在安装界面上应该可以找到),只要不停地有输出,你就可以安心地等待。
7. Install Agent
OMS安装完毕,也启动成功了。还需要在奇数机上安装Grid Control的Agent,有好多种方法可以安装,但是我们需要选择最简单最快速的方法,那就是使用agentDownload.linux程序,将这个程序从偶数机的OMS安装目录中copy到奇数机的某个目录下,随便哪个目录都行。然后运行下面的命令:
./agentDownload.linux -b /u01/app/oracle/product
最后一个参数是我们希望将agent安装到的BASE目录。
用这种方法安装Agent的速度很快,而且无需任何人工参与
8. Learning GUI
OMS也启动了,Agent也启动了,通过浏览器去检查一下Grid Control的管理界面是不是好用吧,到这里,基本上就没什么问题了,下面会是一些要求你通过Grid Control来创建一些表空间或者一些用户或者一些什么别的操作,按照要求来就好。不过,对于命令行死忠派来说,还是预先去熟悉一下图形界面的操作吧,否则到时候找个按钮都要找半天。
9. Lucky
这次考试中有个兄弟特别背,考着考着鼠标就动不了了。。考着考着数据库就自己down了。。所以运气也是很重要的
#配置
新建一个管理员用户
配置email通知
创建schedule,program,windows,job
三、数据库备份恢复
丢失一个controlfile的恢复
1.创建catalog 数据库
2.rman 备份
1.set rman env
rman target sys/oracle catalog rman/rman@test1
RMAN>CONFIGURE DEFAULT DEVICE TYPE TO DISK;
RMAN>CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/oracle/oradata/orcl/backup/DB_%U';
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle/oradata/orcl/backup/cf_%F';
RMAN>CONFIGURE BACKUP OPTIMIZATION ON
Optimization does not back up a file to a device type if the identical file is already backed up on the device type.
For two files to be identical, their content must be exactly the same.
要求设置compress备份,具体命令有点忘记了。。可以查一下联机帮助
2.RMAN Online Full Database Backup
#scripts:bck_db_level0.rcv
run {
BACKUP INCREMENTAL LEVEL 0 DATABASE;
BACKUP ARCHIVELOG ALL DELETE ALL INPUT;
}
#run rman backup
rman target sys/oracle@orcl catalog rman/rman@test1 @bck_db_level0.rcv log bck_db_level0.log
recovery
datafile 1丢失的恢复
3.配置flashback 数据库
四、数据仓库
select distinct a,b from t1;
要求创建一个能够快速刷新的物化视图
创建一个可刷新的物化视图
外部表会考datapump方式的导出和导入,Oracle_loader的外部表也会考
五、数据库管理
exp,imp
transport tablespace
创建分区表
创建分区索引 global hash 和local
truncate partition
创建带clob字段的表
使用FGA对一张表做审计(可以参考联机帮助)
flashback table to before drop rename to xxx; (注意要flashback到包含某个字段的,show recyclebin)
考试内容和考纲比较吻合
六、性能管理
创建IOT表
创建bitmap Index ,function index
统计信息收集
表空间使用ASSM 以减少buffer busy wait
statspack安装
使用level 7产生snap
创建一个Job 每5分钟运行一次
按照指定路径生成report文件
outline也考了。。
七、RAC
安装crs、asm和db软件
创建 rac db
添加service
启用archive
时间应该足够,剩下的时间,我是用来将下一节中手工创建dataguard需要用到的sql和参数修改都事先编辑好
八、datagurad
1.在奇数机器上创建physical standby
2.添加standby logfile ,使用lgwr async方式
3.切换到standby ,运行一个脚本,然后在切换回,运行一个脚本
4.read only打开standby
订阅:
博文 (Atom)