大约1年前下载了Oracle Core Essential Internals for DBAs and Developers这本书的电子文档,浏览了书中内容,感觉很深奥,同时听从了一些前辈的建议,初学者不要去看这些高深的内容,就买了Thomas kyte的那本经典教材,结合E文原版一起作为入门管理的书籍。由于之前工作的主要职责还是基于PL/SQL业务逻辑开发和实现,涉及数据库管理方面的知识比较少;也就是一年前的时候,换了一份工作,工作侧重点就是数据库管理,刚开始写了一个触发器还被mentor责备了,说这不是我们DBA的工作范围。期间,上班时间都是德国时间,每天下午2点到晚上11点上班,第二天2点之前也有充足的时间,加上工作的内容不是很繁多,空余时间大部分时间就在学习ORACLE和实验操作中。时间很快就过去了,这段时间没有那么忙了,抽空回顾下过去的一年。
先说说这一年的工作吧,这边主要的工作职责就是管理德国客户的3台AIX oracle 数据库服务器和6台DB2数据库,共计60个数据库实例和对应的数据库。在客户机器上做任何变更之前都需要在自己的虚拟机上做好相关测试,工作用的笔记本上先装好两个虚拟机,一个做ORACLE,一个做DB2,后来DB2相关的任务都交给另一个同事做,我主要负责ORACLE 数据库的管理和DB2服务器的一些流程处理。接下来就是申请自己的帐号,熟悉客户的服务器环境和数据库运行状态。熟悉变更处理流程。做的第一个变更(内部说法---change),就是重启所有oracle数据库实例和监听。看起来很简单,做起来如果认真对待的话,会出事故的,(听mentor说,之前一个资深DBA做一样的change,但是忘记把监听起来了,结果第二天客户的投诉就到老板那里了,作为一个failed change 处理,这个涉及到team和个人的年底考核)。
然后就是搭建新的环境和机器。每台aix上都运行1~30个左右的数据库实例,有几个比较大的需要迁移到新的服务器上去。部署的ORACLE 软件到AIX 6.1版本上,因为这里的分工比较明细,OS、网络和存储相关的工作都有其他人员完成。我们这边将相关参数、用户和组、权限、软件包等要去和相关人员交流下就可。
接着就是部署自动备份脚本和文件系统监控,因为这边的数据库SLA要去是5*8,S1必须在有个小时内处理完成。客户机器上有oracle 9i, 10g,3台AIX 6.1。因为每台server上都运行5~30不等数量的实例,每天下班之后都需要进行备份。开始按照mentor 提供的DB2备份脚本,针对oracle 环境进行修改后部署到生产环境中去就可以了。这个看似不难,也有学问可做。比如,有个机器上运行这28个数据库实例,之前的shell备份脚本,写完28个数据库备份内容之后,上2000多行。后来使用Linux命令和shell for循环,简化脚本备份,不到200行代码就完成了。同样,对于数据库和服务器文件系统监控,每天运行几个监控脚本,查看文件系统容量和每个数据库表空间使用情况,将相关结果发送到自己的邮箱。因此,每天上班的第一件事就是查看邮件中是否有警告和备份失败的提示。
然后就是数据库升级和补丁,全部升级到oracle 11.2.0.3,数据库升级前前后后持续了将近两个月。提出升级方案,和SDM、客户交流,每天非工作时间(上午8点到下午13点之间)进行一你定数量的数据库升级,解决升级中遇到的问题;因为都是单实例的数据库,数据库最大20G左右,从9i, 10g升级到11G,加上客户允许的停机时间比较长,所以接本上采用exp/imp 这种方式完成数据升级。当时也考虑过TTS。新的环境和原有的环境是一样的,所以11g软件是通过克隆过来的,中间节省了一些时间和省略了图形界面操作。刚开始升级的时候,没有考虑AIX系统内存和CPU资源问题,结果导致第一次升级后,服务器资源差不多耗尽,所有数据库hang住了,change差点被定为failed,做RCA分析。
再就是打补丁,为了符合公司规范,每季度ORACLE公司发布相关补丁集之后,如果没特殊原因,必须打补丁。给OPatch打补丁,备份数据库和,给数据库打补丁,每次都是小心翼翼的。在这之后,对10个左右的数据库进行数据库字符集转换迁移,之前数据库基本上采用WES8ISO8859P1这个字符集,后面根据需要客户的要求,将数据库字符集转为AL32UTF8,经过和应用开发人员的调试,所有应用程序正常显示和使用。
每个季度的第一个月都要对数据库进行监控检查,检查所有用户权限、监听配置文件属性、数据文件属性和profile属性设置等方面。然后就是QVB,数据库中的每个用户必须有一个所有者,没有所有者的用户全部要删除禁用。11g数据库开始都是使用exp/expdp进行全库备份的,保留3天备份记录,后面发现如果发生S1情况。一个小时候根本不够使用数据库备份进行恢复,而且备份的数据结果太大,占用很多空间。学习RMAN备份,根据条件对数据库进行增量备份,这样恢复会比较快,备份集占用的空间减少了很多。
其他方面的工作包括用户审计结果定期检查、设置审计策略、用户密码策略、根据客户要去和平时检查结果,对部分SQL 进行调优、使用SHELL 和SQL进行编程等等,客户的环境是AIX,办公电脑是Redhat 操作系统,虚拟机也是Redhat,因此对AIX、LINUX都需要有一定的了解。后面还专门看了IBM官方网站上的技术专题,对AIX存储结构和管理方法进行深度了解。
总的来说,在这一年工作中,收获还是比较丰富的,对于ORACLE数据库管理有了一定的认识,可以说是入门了,后续的修行还得自己的努力;工作业务流程熟悉了,和SDM、客户能顺意交流和沟通。除了个人的努力,周围同事、老板和mentor 的帮助是必不可少的。