今天,DBA和大家讲解一些Oracle遇到的问题。虽然主要是针对运维和数据库管理的,但是对我们开发的来说也是收获颇丰。
-
使用合适的版本可以避免大部分不必要的坑。
版本推荐:使用最新版的上一个版本的最后一次更新。如果下载补丁,Oracle带有强烈推荐下载的补丁最好打上去。因为这个补丁会修复大量的bug。 -
升级注意事项。
不建议使用在现有的数据库上升级,风险大。推荐备份好数据,再直接升级到需要的版本,再恢复数据。如果安装补丁,不要安装网上不可信的补丁。因为曾经有公司下载过非官方的补丁,运行365天之后,里面的触发器删除了系统的表。然后再勒索你。同时,在网上查到对应错误代码的答案,最好不要马上去尝试,因为这个错误可能是由多个原因造成的,需要多看几个答案。最好去Oracle知识库查看。不过需要收费。 -
安装环境选取。
十分推荐Linux(最好6.9版本)安装Oracle,可以避免大量没有必要的问题。可以安装Oracle公司推出的linux发行版,但是不建议复用,单独运行数据库即可。如果安装windows server,推荐2008,不建议2012。再是不推荐使用云机/虚机安装Oracle。如果安装在云机/虚机上,磁盘/内存最好独占,而非共享。内存相对CPU更为重要,同样的预算,可以削减CPU,加大内存。「Vmware/XEN 为独享内存,KVM为共享内存」 -
PGA/SGA 配置。
建议半自动管理。安装时,将80%内存分配给PGA/SGA,20%留给系统。PGA/SGA由Oracle自动管理(一般是4、6开)。SGA中有buffer pool(主要用于查询结果存放,且主要服务于数量不大的查询),空间越大,性能越好。「数量大的查询将直读,不进入buffer pool」 -
REDO的配置
建议15分钟切换一次(或者一小时2~10次)。「对于重读的业务:如银行,会非常高频的切换-一分钟一次」。分组建议分8组,如果分少了,轮询时间变长,等待时间变长。
安装时,REDO的选项,会让你配置2个成员(不同的路径),目的在于备份。但是如果只有一个盘,无需配置2个成员。「因为如果只有一个盘,那么备份的意义就不大,损坏了2个成员都损坏」。配置2个成员相对于一个成员有5%~10%的性能损失。 -
表空间的配置
可以选择table space「max 32G」、Bigfile。推荐后者。如果table space空间慢了,就不断添加文件。不过在安装的时候,有一个max file num「表空间文件数量」,如果填写不合适。那么后期添加文件的时候会添加不上,因为文件数超出了这个数量。「表空间非常大的,建议使用linux」。系统表空间几乎无需管理,因为不开审计,系统表空间基本不读写。 -
UNDO、TEMP表空间
UNDO的读写不大。Temp读写大(其中排序会分发到Temp表空间)。可以针对Temp表空间进行优化。Temp表空间先使用内存,如果内存不够则下发到磁盘,所以可以将Temp表空间存放到固态中。Temp表空间损坏也是没问题的,就算是你运行过程中,直接把Temp表空间干掉也是可以的。「如果预算足够,可以将UNDO/REDO都放在SSD上」 -
SSD作为数据库二级缓存
现在有一个优化方案。将SSD作为SGA后端,因为内存中的SGA如果满了之后会删除先前的SGA,如果存放于SSD将有更大的空间存放SGA。也可以购置SSD作为数据库的二级缓存。能有10%左右的性能提升。 -
XFS vs EXT4 选择
EXT4比XFS的优势在于,能够识别存储条带,如果是直连式存储,那么这个优势就不存在。 根据网上的测试XFS 性能优于EXT4。「但是在公司环境测试,ES、GP在EXT4下读写性能比EXT4快2%左右」 -
一体机为什么快
因为一体机是全散,细分。快的查询存放快的地方,慢的查询存放慢的地方??记录不全 -
归档配置
归档主要用于数据恢复。如果会备份「推荐RMAN来备份」,可以不开归档。归档不像PAG/SGA,Oracle并不会自动管理归档。归档会一直累计,直到将存储撑满「需要手动去删除不需要的归档」。如果归档爆了,也是一件难处理的事情。建议在先将归档停了,然后将数据库拉起来,然后再恢复归档。「Oracle有一个解析归档的工具,但是不会提供。除非遇到紧急情况,联系Oracle客服」 -
版权问题
官网下载的Oracle安装包,每个小时会网一个美国的IP发送数据包。如果使用盗版,建议至少购买一个核心的授权「Oracle的授权是按照核心数来计算的」。 -
RAC「实时应用集群」方案
RAC「实时应用集群」主要是实现了Cache的互通,变相提高了缓存/CPU的能力。配置:一台机4个千兆网卡「2个网卡走心跳(同步内存),2个网卡走业务数据」,2台交换机「如果一台灭了,还有另外一台,防止数据不一致」。2台机之前的配置要一毛一样。对于熟练的配置人员,需要3个工作日去完成RAC的搭建,RAC的搭建麻烦,但是维护起来简单。因为如果宕机了,只需要将宕机的机器停掉,另外的机器能够独立处理业务,不会影响业务。然后对宕机的机器维护即可。 -
索引相关。
为什么不走索引,有时候开启了索引,但是速度相对于不开索引没有区别;这个可能是因为Orale不走索引,原因有很多;比如,针对一个int的字段的查询,如果你传入了带引号的条件,那么Oracle会帮你转换类型,而不走索引。
索引的维护。Oracle自带索引的维护,但是必须要开启。Oracle默认的应该是工作日晚上10点开始维护;或者周末早上10点维护。如果索引挂了,那么直接rebuild就可以了
索引的性能:如果发现索引的性能不佳,那么可以拆分条件,一个个条件、一步步分析,看看是哪一个条件影响了速度。如果是查询01结构(比如:是否、男女、01)的可以使用位图索引,性能会有提升。 -
导入、导出相关
txt文件导入使用SqlLoader导入,性能比较好。尽量使用expd导出,exp导出无法导出空表。可以设置expd并行导出加快导出速度。如果没有权限进入expd工具那么可以结合DBLink+expd进行导出。 -
如何让带有条件的删除更加快?
去掉表的日志。Alter table XX nologging。这样就不会产生日志,删除的数据不会放入Redo空间。没有办法恢复。 -
安装补丁。
补丁有「大版本(修复大量的bug)、季度版本(最合理、省心)、小补丁(修复一些小问题)」。不推介热补丁(不停止的情况安装补丁)。安装补丁需要一步一步来,在测试机上通过测试了再在生产环境进行。建议申请一天停机时间。 -
其他Tips
- 在使用一段时间之后,出现监听错误的问题(windows环境),推荐升级。
- 日志分析:瞄准ORA开头的错误代码就可以了。可以去看Oracle知识库。
- 优化SQL,开启调试模式,慢慢调试,看看是哪一个条件影响了速度。
- 备份使用RMAN备份,功能强大。
网友评论