此文谨以记念咱们曾经失去的青春ios
在节前(端午节)就收到了甲骨文的电话,说我投递的简历被选中,邀请来面试,分别是两个部门,在深圳总部打过来的全球化支持部(工做地点依然为北京)和北京总部打过来的公有云事业部,职位都是高级DBA。面试
因为全球化支持部涉及英语口语要求较高,我的仍是更倾向于公有云事业部,可是先接到了前者的面试邮件,约定6月18日下午去面试,在软件园里的甲骨文总部大楼~数据库
到了软件园大门,之前熊熊一直觉得东门口那个十号楼上写的Oracle甲骨文的就是甲骨文总部了,还以为那里挺小的了,邮件中提到的是24号楼,因而进入十号楼问了保安,才知道要走很远(一开始没在乎,后来才知道,真的好远)缓存
沿着路一直往软件园深处走去,真的好远啊,沿途通过了一个中欧国际工商学院,那种别墅似风格的教学楼,不高,就2-3层,可是应该很奢华,楼下停着不少的豪车(奔驰、宝马、奥迪,都是进口高系),啥时候熊熊才能来这里学习呢,嘻嘻~安全
走了大约25分钟的路程,终于来到了24号楼,甲骨文北京总部所在地,真的很壮观,就像一个小型社区,在门口照了张相,把甲骨文的Logo照了进来,找到右手边的T2楼,进去到前台,说明来意,问是否预定好,回答是的。服务器
前台保安让熊熊给联系人打个电话,这时才想起,联系人根本没有给熊熊留电话。因而在前台小姑娘那里查联系人的电话,结果由于甲骨文都是英文名字的缘由,我只知道对方中文名称,没法查到,正在着急中,对方正好打电话过来,告知她已经到楼下,说稍等片刻,下来接熊熊~网络
见面之后,一个长相很通常的女生,气质和亲和度也不是特别赞,填好表格之后,由她领上3楼,到了一间小会议室,过很少久,进来一位30来岁的高级工程师(也许就是manager)模样的男人,面试正式开始~session
也没有浪费时间让熊熊作什么简单的自我介绍,只是问了一下如今工做主要作什么,可能熊熊答的有点简单,让对方感受是普通的运维DBA,因而针对熊熊的问题开始了深刻面试运维
Q:你在工做中主要负责哪块业务如今ide
A:主要负责总体数据库的平常维护,保证数据库的稳定、可靠、高效运行
Q:那大家一般如何来巡检,有哪些工具手段?
A:由于银行方面没法使用OEM或者GC(Grid Control)这种图形化工具,所以咱们的平常巡检都是用AWR、ASH、ADDM、RDA等一系列工具来作的,若是有具体的问题,也会经过一些动态视图来具体查看,包括查看alert日志以及抓trc进行分析等等。
Q:那大家不能使用OEM这种的话,如何保证这个监控的频度,仍是说每次都必须本身手工上去生成报告看一下?
A:是这样的,有一些重要的监控指标,咱们在Nagios里作了脚本进行监控,好比数据库的监听情况、RAC节点的健康情况、表空间的增加率等等,若是出现问题,经过Nagios报警会直接发送到个人手机上
Q:既然大家要进行平常监控,若是感受数据库跑得很慢,从哪些地方能体现出来
A:这个须要具体问题具体分析,看看究竟是OS层面问题,仍是数据库自己问题,亦或是网络或者ASM存储的问题,若是是OS层面的问题,看看CPU的负载高不高,若是高的话,考虑是否是应用层与数据库层面的链接瓶颈(好比内存溢出等问题),若是CPU负载正常,可是I/O瓶颈比较高(这是数据库常常遇到的问题),那么有多是SGA内存分配不合理,或者SGA内存不足,甚至是总体物理内存不足,那么须要考虑的状况有不少种,有多是数据库的DML操做过于频繁,有多是SQL写的不合理(好比没有使用绑定变量,共享游标等等,好比SQL写法不规范,好比没有使用索引,或者索引设定不规范致使大量全表扫描),这些能够从AWR报告里的等待事件中看到一些问题。
Q:你刚刚提到了AWR报告,那么若是是数据库比较慢,好比你说的I/O问题这种,在AWR报告中会怎么体现出来?
A:首先是各类target的指标监控(那个说实话熊熊真忘了是怎么说,可是解释一下,就是那个各项性能满分是100%那个),这里能够看到一些好比字典缓存命中率,库缓存命中率等等低不低,若是不低再看看SQL的执行重复率低不低,若是低,证实SQL设计不合理,固然,有不少好比数据文件顺序读,直接路径读/写这种,都是形成大量User I/O的缘由
Q:那这个User I/O,在AWR报告中的显示是什么?
A:(挠头),额,这个我真不知道,我英语太烂了,不知道怎么说这个,可是若是AWR报告发给我,我真的能够看出来的
Q:若是AWR报告中报日志的频繁切替,是什么问题?
A:那有多是日志组过少,而后日志组里的日志成员过多,并且日志设定的大小太小,好比就设定了20M,而后DML操做过于频繁,会形成大量的日志写入,写满了就会切替,过多的切替就会形成日志频繁写入,影响数据库性能
Q:你刚刚提到的频繁写日志,包括脏块写入到dbf中,事务没有提交的话,脏块或者日志会不会写入到相应文件中?
A:这个确定不能够的啊,事务要遵循ACID原则,事务只能被提交或者被回滚,不能自我中断的,不过若是脏块把buffer cache写满,不管事务提交与否,都会写到datafile中,不写日志,就算脏块写到了datafile里,这时候若是数据库重启,由于日志里没写,pmon就不能还原,这样就能够理解为:由于没有commit,这个事务就不成立。
Q:OK,你在工做中都是单实例仍是有RAC?
A:是这样的,咱们有一个小机,上面跑了五个单实例的库,另外还有两套RAC环境
Q:大家的RAC是两个节点的?
A:是的,之前也作过4个节点的
Q:那么你如何来查看RAC的状态?
A:经过crs命令就能够查看了
Q:具体命令是什么呢?
A:crs_stat –t就能够查看到节点状态
Q:那么你如何知道RAC中有几个节点呢?
A:使用刚才那个命令其实就能够看到有几个节点了
Q:你说的这是全部节点正常启动的状况,若是不是呢?
A:是这样,有一个比较笨的方法,我使用DBCA命令中的instancemanager来看个人节点信息,只要节点的OCR信息没有被破坏,那么均可以看到的
Q:你刚才提到OCR信息被破坏,那么若是OCR信息被破坏了,该怎么作?
A:咱们能够经过重建OCR来修复
Q:具体怎么作呢?
A:经过修改ocr.loc和paramfile.crs文件进行设置,而后经过命令进行重建
Q:什么命令?
A:额,那个,唉,想不起来了,不过若是作的话,我知道该如何作的,除了重建OCR,咱们也能够删除节点的OCR信息再添加,效果是同样的,只是OCR重建更方便些
Q:大家装RAC用的是ASM吗?
A:是的
Q:ASM里有个au_size参数,你知道吗?
A:这个真没接触过(回来之后熊熊仔细看了这个参数,Oracle 10g是默认的1m大小,不能修改,11g之后能够手工修改,因此熊熊不知道)
Q:若是单实例变成RAC,有什么方法吗?
A:可使用DG的standby复制出一个节点,而后添加节点的OCR信息等,用rman克隆应该也能够的
Q:你提到DG,你有没有作过DG?
A:这个是有的
Q:那你说说DG都须要配置哪些?
A:首先在主库开启归档和辅助日志,而后设置一些参数,好比log_archive_dest里添加主库和备库的信息,fal的两个参数要设置(fal_client与fal_server),而后若是有文件转换须要设置convert(包括db和log),将主库的spfile转化成pfile,传送pfile和密码文件到从库机器上修改相应参数,主库能够经过RMAN作一个全备,而后可使用RMAN的辅助数据库功能在从库进行恢复,10g的物理DG只能是mount模式,11g能够是open read only模式,这样能够将此库设置为只读查询库,来实现读写分离
Q:大家工做中有没有用到DG
A:咱们用到的是GG(GoldenGate)
Q:你能简单说一下GG的设置吗
A:先在两个节点上(主备库)分别按照ogg软件,设置mgr进程,而后在主库上设置抽取进程和采集进程,在备库上设置采集进程,像咱们上次迁移新查询库,首先用rman进行全库备份,而后使用克隆技术克隆出一个库,再经过GG将增量数据抽取过来,就能够了,为了安全起见,禁用了GG的DDL同步功能,若是要是双向复制,就须要在备库再建立一个抽取进程和采集进程,相应在主库在添加一个采集进程便可。
Q:像RMAN在执行中会占用到SGA的large pool,那么GG在运行中是本身独立的进程,仍是也会占用Oracle的进程
A:data pump的话应该会占用到Oracle的进程吧,感受GG应该是也会占用large_pool,可是具体的没有研究过那么深,因此不知道对错
Q:若是是一个SQL产生了死锁,有什么方法能看出来?在OS层面
A:是这样的,首先可使用top来看一下CPU和内存的状况(根据每一个进程),而且结合ps –ef | grep ora命令来查找,若是真的是死锁的话,那么经过v$session中的lockwait显示出来的sid和OS上的pid是会对应的。
Q:死锁有什么解决办法?只能人工杀死吗?
A:具体问题具体分析,若是是latch,不须要管他,他是抢占式的,若是是lock,那么要看究竟是事务占用了(好比排他锁会产生排队),仍是真的死锁(好比应用层断开链接或者没响应了),若是是排队,那么将死掉的事务提交或者回滚,剩下与其排队的死锁会自动解开,若是是失去响应了,就须要手工干预了
Q:OS层面除了top,还有啥能够查看系统或者数据库性能情况的命令,从系统级
A:iostat、vmstat、sar、uptime等等,还有不少了
Q:若是查看系统的内核版本用哪一个命令
A:uname,-a或者-r均可以
Q:若是查看系统版本号怎么办?
A:查看/ect/redhat-release文件便可
Q:如何查看一个服务器上有多少个实例
A:这个用查监听情况应该能够
Q:若是service用的其余名字或者用其余端口呢,这都不肯定的
A:若是查/etc/oratab文件也是能够的其实,固然,有可能里面没有写,那么查ORACLE_HOME/dbs/initSID.ora或者spfileSID.ora是能够的。
Q:嗯,你英文不太好是吧
A:额,是啊,很烂,丢人
Q:那你能用英文作个简单的自我介绍吗?
A:对不起,这个真的没有准备(不是第二轮才英文面试吗,郁闷)
Q:哦,那你看还有啥须要问咱们的?
A:(本身又问了一些技术问题,主要是12C新技术方面和Oracle将来发展方向的,那我的很耐心的给熊熊解答了,感受很好)
Q:还有吗?
A:没有了,很是感谢
Q:好的,咱们会再通知你
A:好的,谢谢
今天的面试就结束了,那个女生把熊熊送下楼的时候提到由于面试结果要呈报美国的那个manager审核,由他来决定是否能够进入第二轮面试,同时她也提到,这个部门对英语仍是很看重,因此这点仍是很重要的。
总结一点,基本上技术大方向仍是能答出来,可是细节和深度仍是不够,有些问题应该是很清晰的,面试时候仍是有些紧张了,整体来讲,这次面试受益不浅,就算失败,也是一次颇有意义的经历,感谢甲骨文给出的此次机会,会让我很是受用~