记一次Oracle控制文件分析情况

前端之家收集整理的这篇文章主要介绍了记一次Oracle控制文件分析情况前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近两天在从头看一些与DBA有关的书籍,有一章讲到了控制文件,现在整理一下有关的知识点及实际对照生产库对比的情况

  • 实际对比一个生产库来看一下
    我们先执行命令:
    select name from v$controlfile;
    输出结果:

    sql> select name from v$controlfile;
    NAME
    --------------------------------------------------------------------------------
    /oradata/orcl/control01.ctl
    /oradata/orcl/control02.ctl

    接下来我们登陆到服务器路径下,看一下说的是否跟书上一样。

    [oracle@oradb1 orcl]$ du -ks *
    9616    control01.ctl
    9616    control02.ctl

    这里发现,2个控制文件,大小是一样的。

    之后按照书上的说法,目前看来,这2个控制文件都在一个目录下,是有安全隐患的,如果磁盘坏了的话两个控制文件都没办法访问了,那么数据库就启动不了了。(注意,这里同理,Redo文件也一样需要在不同的磁盘下)

  • 接下来问题来了
    我们怎么知道实际在Linux下,这些文件系统都挂载在哪些盘上了呀?好像印象中,我们都是做的Raid1或者Raid5,并且这台生产系统,还是在云上的虚拟机,貌似没办法知道哪个磁盘是给我们这台服务器用的,这样的话,这个风险岂不是很高么?
    关于这里,我询问了比较懂Linux存储的同事,也上网找了一下相关资料,得到如下结论:

    在oracle文档上强烈建议将使用多个控制文件并放置在不同的硬盘上。这样的建议和架构对控制文件的保护上没错,但是在实际的生产系统中这样的架构似乎并不合理。加入放在两个硬盘上,那么两块硬盘中有故障的概率要比一块硬盘大。而在oracle系统中,无论哪个contorlfile失效都会导致系统宕掉。这可能到增加了系统故障的可能。所以达不到高可用的要求。而一些实际的系统架构是依赖于硬件的冗余,比如raid1或者raid5/raid6的配置来保证系统的高可用运行和controlfile在硬盘出现故障时不会丢失
    另外,对controlfile的备份也需要重视。

    看起来Oracle官方的推荐,跟实际生产情况还是有差异的,我们能做到的就是在备份数据库的时候,一定要注意把控制文件备份出来,这样不管通过什么方式恢复了数据库,如果磁盘有问题的话,我们可以拿备份的控制文件来用。

猜你在找的Oracle相关文章