zoukankan      html  css  js  c++  java
  • oracle安装最佳实践

    新人安装Oracle常见的问题是规划不合理,如果是个人或者开发用或者可以,但如果放在线上生产环境,常带来可靠性和性能的隐患,给运维增加成本。

    例如:

    1.oracle控制文件和在线重做日志没有实现多路镜像,导致数据库可靠性降低。

    2.没有依据IO负载 对数据文件进行调整,导致各磁盘IO不均衡,个别磁盘IO过高。

                            Av                    Av  
    
    Tablespace           Reads Reads/s    Writes Writes/s 
    
    -------------- ------- ------ -- -------- ---------
    
    DATALIST       539,798     152   101,605       29 
    
    TEMP           187,745      53   110,712       31 
    
    INDEXFLUX      125,182      35    25,469        7 
    
    DATAFLUX        55,270      16       852        0 
    
    DATACFG         48,725      14     5,365        2 
    
    UNDOTBS1         1,463       0    39,789       11 
    
    INDEXLIST       11,268       3    15,265        4 
    
    INDEXCFG        13,359       4     4,512        1 
    
    SYSTEM           6,557       2       325        0 
    
    DATAEXAM         3,016       1       451        0 
    
    SYSAUX           2,231       1       386        0 
    
    INDEXPATH          671       0       278        0 
    
    INDEXEXAM          405       0        19        0 
    
    DATAPATH           326       0        84        0 
    

    1.    规划原则:

    1. 将控制文件分别部署到不同的磁盘。
    2. a) Alter system set control_files='/oradata1/dbnms/ control01.ctl, /oradata2/dbnms/ control02.ctl' scope=spfile;
      b) 关闭数据库
      c) 物理移动控制文件到指定目录
    1. 在线重做日志至少分为三个组,每组至少两个成员,分别部署到不同的磁盘上。
    2. (1)增加日志组:
      
      ALTER DATABASE ADD LOGFILE GROUP <n> ‘日志文件’ SIZE <n>;
      
      (2)删除日志组:
      
      ALTER DATABASE DROP LOGFILE GROUP <n>;
      
      (3)增加日志成员:
      
      ALTER DATABASE ADD LOGFILE MEMBER ‘日志文件’ TO GROUP <n>;
      
      (4)删除日志成员:
      
      ALTER DATABASE DROP LOGFILE MEMBER ‘日志文件’ ;
      

        

    1. 将表空间按照IO负载高低均衡分布到不同的磁盘上。
    2. 重做日志和回滚表空间文件和临时表空间要放到IO速度快的磁盘上,raid10的IO比raid5好。

     [现场]

    SYS AS SYSDBA> archive log list

    数据库日志模式             非存档模式

    自动存档             禁用

    [问题]

    数据库无法恢复的风险非常高。多次数据库故障由于没有开启归档,导致恢复时间从半小时以内延长到了几个小时甚至几天。

    2.  开启归档日志

    1. 开启数据库归档模式

    1.关闭数据库
    SQL> shutdown immediate;
    2.启动数据库为mount模式
    SQL> startup mount
    3.显示和修改归档模式
    SQL> archive log list
    SQL> alter database archivelog;
    SQL> alter database open
    4.设置归档日志的格式
    SQL>alter system set log_archive_format='ARC%s%t%r.log' scope=spfile;
    6.强制切换归档日至
    SQL>alter system switch logfile;
    7.取消归档
    SQL>alter database noarchivelog;

    1. 修改数据库参数,将归档日志目录设置在空间大的磁盘分区上

    设置归档日志的存放路径
    SQL>alter system set log_archive_dest='+data/arcl' scope=spfile;
    SQL>shutdown immediate
    SQL>startup

    1. 设置好归档日志自动清除脚本,归档日志保留时间越久越好。
    2. 启动闪回数据库

    http://blog.sina.com.cn/s/blog_a3813a410101066l.html

    SQL>select FLASHBACK_ON from v$database;

    FLASHBACK_ON

    ------------------------------------

    YES

    SQL>startup mount

    SQL>alter database flashback on;

    数据库已更改。

    SQL> alter database open;

    数据库已更改。

    1. 设置闪回数据库参数

    如果设置了闪回恢复区,则log_archive_dest和log_archive_duplex_dest将不可用

    • oracle中log_archive_dest_n和log_archive_dest不能共存

    SYS AS SYSDBA> show parameters flash

    NAME                                 TYPE        VALUE

    ------------------------------------ ----------- ------------------------------

    db_flashback_retention_target        integer     1440

    SYS AS SYSDBA> show parameters recover

    NAME                                 TYPE        VALUE

    ------------------------------------ ----------- ------------------------------

    db_recovery_file_dest                string      /oracle/flash_recovery_area

    db_recovery_file_dest_size           big integer 2G

    1. 监控闪回数据库空间利用

    SQL> select * from v$flash_recovery_area_usage;
    增加闪回区(Flash Recovery Area)的大小。

    SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE =20G SCOPE=BOTH SID='*';

    3.  数据库模式

    专有模式和共享模式中要  优先选择专有模式 

    4.  参数调整

    dbfiles -> 2000          数据库的数据文件总数

    processes  -> 2000       数据库支持的服务进程数

    sessions   ->3000        数据库支持的session上限

    shared_servers -> 0      专有|共享模式开关,0-〉专有

    db_recovery_file_dest      /oracle/flash_recovery_area

    sga_max_size ->物理内存的50%

    sga_target   -> 物理内存的50%

    pga_aggregate_target   ->   2M*预计session数

    cursor_sharing    ->   EXACT

    db_writer_processes   ->   cpu核数/2

    job_queue_processes    ->   5   如果等于0,oracle的job不执行

  • 相关阅读:
    dp(传球)
    最长上升子序列
    FromData获取表单数据
    php解决高并发问题
    php抽象类、接口、traint详解
    mysql、mongodb、redis 数据库之间的区别
    phpstorm2018 安装及破解方法
    phpstudy添加redis扩展
    mysql触发器trigger 实例详解
    mysql查询系列常考问题
  • 原文地址:https://www.cnblogs.com/itfriend/p/2878176.html
Copyright © 2011-2022 走看看