应客户要求,需要写一篇《数据库运维注意事项和案例讲解》,正好自己也可以把近来这段时间中碰到的运维问题总结一下。同时也分享给大家。记之
----------------------
1. 数据库运维工作目标
数据库的运维工作目标是保证服务范围内的数据库正常运行,用好、管好现有的已交付数据,在数据生命周期中,达到数据库安全性、可用性、可靠性等几个目标。
2. 数据库运维工作范围
数据库运维范围主要是管理维护数据库,在数据库出现异常的时候,有时往往是应用人员或者部门提出查询缓慢、或者不能正常使用等问题,有时可能原因出在使用人员的客户端机器或者网络部分,比如有以下情况出现:
同一部门或者同一应用使用者没有问题,但有个别应用人员提出应用不能正常使用的现象。原因可能如下:
1) 原来使用正常,但是安装其他的安全软件,屏蔽了数据库连通的端口,导致应用不能使用。
2) 所在的网络终端可能出现问题,使用ping命令,查看是否有丢包现象。
3) 开始能正常使用,但是有个长时间的处理之后,整个应用就不能用了,有可能是因为某些软件对应用端口的使用做了超时连结控制的结果。
根据以上的一些情况,首先要判断问题出现在哪个环节,然后再进行数据库的处理,当然对于数据库服务器问题,查看alter日志是最有效和直接的,因为一旦是数据库服务器出现问题,在alter日志中都会有记录。
3. 数据库运维工作内容及相关案例
数据库运维工作内容很多,从工作内容复杂性和常用性方面可以分为日常运维管理、高级运维管理,从达到目标分安全性、可用性、可靠性方面,具体内容如下。
3.1. 安全性
安全性包括数据访问安全和数据安全备份恢复方面的工作。
1. 数据安全访问
作为数据库访问安全,主要是对于数据库用户及其权限的管理工作。访问计算机系统时需要遵循的重要的安全原则是“最小权限”原则(即用户应当只拥有执行其任务所需的最小权限,并且禁止所有未被特别允许的权限)。Oracle数据库遵循了最小权限原则,在默认情况下,只有用户SYS和SYSTEM才拥有所有权限.其他用户甚至都无法连接数据库。采用一些安全策略来对用户的权限进行管理,比如:更改dba用户名,禁用sys和system用户等。
其次可以采用审计功能来提高数据访问安全的审计倒查来防范一些非法访问或者非法操作等。
2. 数据安全备份恢复
数据安全备份恢复主要采用Rman对数据库进行增量备份恢复策略,并有计划的进行恢复测试,以便保证数据备份文件的有效性。或者采用DataGuard进行实时数据保护等。这些一般是数据库大级别的安全备份恢复,作为日常工作中,对于一个重要表进行操作时,还是需要进行表级备份的,这样才能做到数据的安全性,不至于出现数据误删或者误更新操作。但是目前已经有flashback闪回操作,也能增加其数据的安全性。方法很多,但是重在数据安全意识。
3.2.可用性
数据库可用性的日常维护包括很多,如:系统的可用磁盘空间、表空间的可用空间监控、回滚表空间、临时表空间的监控、在线redo监控、归档日志监控清理、对象的有效性等,如果后期用ASM进行管理,还要监测ASM的可用磁盘空间,并考虑其不同数据的增量,预估出表空间和磁盘大小,及时扩展,以便避免因为表空间或者磁盘空间不足而导致的数据库问题。
案例1:由于没有及时清理归档日志导致磁盘空间耗尽,引起数据库挂起。
案例2:由于没有及时扩展表空间,导致数据无法增加和插入,引起应用异常。
案例3:由于redo日志过小或者日志组过少,导致redo日志切换过快,引起应用数据插入和更新。
案例4:由于磁盘或者ASM空间耗尽,引起数据库服务挂起。
案例5:由于数据库对象失效,或者索引失效,引起应用无法正常使用,或者查询数据响应缓慢的问题。
3.3. 可靠性
可靠性是指数据库能不间断的运行,即使是做其他数据处理的时候也能保证数据库的正常使用,这样就要保证数据的安全性和实例的有效性,oracle rac和oracle dataguard提供了这一功能。
在对于可靠性的维护方面,一般是在oracle RAC环境下进行维护的,其中包括了cluster的维护和数据库实例以及ASM实例的维护。
3.4. 故障排除
针对故障排除方面,遵循以下思路,一般故障出现之后,在alter日志中都有记录,根据alter日志中的错误号和提示信息,来判定数据库出现的错误是什么,定位错误环节:数据库整体环节(如:redo、archivelog、undo表空间、temp表空间、session等)、应用环境(如是否是存储过程问题、或者触发器、视图等)或者是系统级问题。定位好问题之后再做进一步处理。
3.5. 故障分析及解除总结
略。。。总结自己这段时间遇到的ORA-XXX错误信息和分析思路、解决方法。
4. 日常运维管理任务及知识点
4.1. 日常运维管理任务
序号 |
工作内容 |
周期 |
备注 |
1 |
确认所有的INSTANCE状态正常 |
日 |
|
2 |
检查文件系统的使用(剩余空间) |
日 |
|
3 |
检查日志文件和trace文件记录 |
日 |
|
4 |
检查数据库当日备份的有效性 |
日 |
|
5 |
检查数据文件的状态 |
日 |
|
6 |
检查表空间的使用情况 |
日 |
|
7 |
检查剩余表空间 |
日 |
|
8 |
监控数据库性能 |
日 |
|
9 |
检查数据库系统性能 |
日 |
|
10 |
日常出现问题的处理 |
日 |
|
11 |
监控数据库对象的空间扩展情况 |
周 |
|
12 |
监控数据量的增长情况 |
周 |
|
13 |
系统健康检查 |
周 |
|
14 |
检查无效的数据库对象 |
周 |
|
15 |
Analyze Tables/Indexes/Cluster |
月 |
|
16 |
检查表空间碎片 |
月 |
|
17 |
寻找数据库性能调整的机会 |
月 |
|
18 |
数据库性能调整 |
月 |
|
19 |
提出下一步空间管理计划 |
月 |
|
4.2. 相关知识点
日常运维需要了解的知识点也比较多,具体如下:
序号 |
知识点 |
基本 |
具体工作 |
1 |
ORACLE数据库部署 |
日常 |
|
2 |
ORACLE数据库创建 |
日常 |
|
3 |
ORACLE SQL语言 |
日常 |
|
4 |
ORACLE体系架构 |
日常 |
|
5 |
ORACLE用户管理 |
日常 |
|
6 |
ORACLE实例管理 |
日常 |
|
7 |
ORACLE数据文件数据块 |
日常 |
|
8 |
ORACLE对象管理 |
日常 |
|
9 |
ORACLE UNDO表空间管理 |
日常 |
|
10 |
ORACLE 在线归档日志维护管理 |
日常 |
|
11 |
ORACLE 安全管理 |
日常 |
|
12 |
ORACLE RMAN 基本备份恢复 |
日常 |
|
13 |
ORACLE数据库闪回 |
日常 |
|
14 |
ORACLE DATAPUMP |
日常 |
|
15 |
ORACLE数据库升级 |
中级 |
|
16 |
ORACLE数据库迁移(涵盖 ORACLE ASM 磁盘组之间数据库的迁移) |
中级 |
|
17 |
ORACLE数据库日常 |
中级 |
|
18 |
备份策略制定和备份恢复 |
中级 |
|
19 |
ORACLE数据库坏块修复 |
中级 |
|
20 |
ORACLE数据库数据块编辑 |
中级 |
|
21 |
ORACLE数据库日常健康检查 |
中级 |
|
22 |
ORACLE数据库日常性能巡检 |
中级 |
|
23 |
ORACLE数据库日常运维监控 |
中级 |
|
24 |
ORACLE 高并发和高可用即 |
高级顾问 |
|
25 |
ORACLE REAL APPLICATION CLUSTERS和ORACLE DATAGUARD, |
高级顾问 |
|
26 |
做为集中数据库运维监控的ORACLE GRID |
高级顾问 |
|
27 |
ORACLE数据仓库 |
高级顾问 |
|
28 |
ORACLE高并发与高可用综合应用 |
高级顾问 |
|
29 |
ORACLE高级安全设计 |
高级顾问 |
|
30 |
ORACLE SQL 优化 |
高级顾问 |
|
31 |
ORACLE性能优化 |
高级顾问 |
|
32 |
ORACLE数据库系统综合并发压力测试 |
高级顾问 |
|