Oracle® Solaris 11.2 可调参数参考手册

退出打印视图

更新时间: 2014 年 12 月
 
 

为 Oracle 数据库进行 ZFS 调优

建议单一实例模式下的所有 Oracle 数据库版本都使用 ZFS。当 ZFS 作为 NFS 共享文件系统提供时,可以与 Oracle RAC 数据库结合使用。

要为 Oracle 数据库进行 ZFS 调优,请查看以下建议:

  • 验证是否运行的是最新的 Oracle Solaris 发行版

    从最新的 Oracle Solaris 10 或 Oracle Solaris 11 发行版开始,将 Solaris 10 9/10 发行版作为最低起点。

  • 为 ZFS 存储池创建 LUN(如果需要)

    使用存储阵列工具创建要向 ZFS 存储池提供的 LUN。或者,考虑对镜像 ZFS 存储池使用整个磁盘。有关更多信息,请参见在 Oracle Solaris 11.2 中管理 ZFS 文件系统 中的第 3  章 管理 Oracle Solaris ZFS 存储池

  • 为表、索引、撤消和临时数据的数据文件创建存储池

    考虑创建一个镜像存储池以提供更高级别的数据冗余。例如:

    # zpool status dbpool
    pool: dbpool
    state: ONLINE
    scan: none requested
    config:
    
    NAME                     STATE     READ WRITE CKSUM
    dbpool                   ONLINE       0     0     0
    mirror-0                 ONLINE       0     0     0
    c0t5000C500335F95E3d0    ONLINE       0     0     0
    c0t5000C500335F907Fd0    ONLINE       0     0     0
    mirror-1                 ONLINE       0     0     0
    c0t5000C500335BD117d0    ONLINE       0     0     0
    c0t5000C500335DC60Fd0    ONLINE       0     0     0
    
    errors: No known data errors

    对于恢复日志活动较多的数据库(如提交次数较多的典型的 OLTP 数据库),请对单独日志设备使用单独 LUN。

  • 为归档日志创建存储池

    如果可用,系统的内部磁盘即可处理此类负载。archivelog 文件系统也可以是 dbpool 中的文件系统。

    # zpool create archivepool c0t5000C500335E106Bd0
  • 使用以下原则创建 ZFS 文件系统和设置特定的文件系统属性

    使用以下记录大小为重做、归档、撤消和临时数据库组件创建单独的文件系统:

    • Oracle Solaris 11 和更早的发行版-128K

    • Oracle Solaris 11.1 和更晚的发行版-1M

    一般规则是将包含 Oracle 数据文件的文件系统设置为 recordsize = db_block_size。对于表数据和索引组件,创建一个记录大小为 8 KB 的文件系统。同时,考虑使用 primarycache 属性向数据库文件系统提供元数据高速缓存提示。有关 ZFS 文件系统属性的更多信息,请参见在 Oracle Solaris 11.2 中管理 ZFS 文件系统 中的介绍 ZFS 属性

    • 为表数据文件和索引数据文件创建文件系统,其中 recordsize 为 8 KB。使用 primarycache 的缺省值。

      # zfs create -o recordsize=8k -o mountpoint=/my_db_path/index dbpool/index
      # zfs set logbias=throughput dbpool/index
      # zfs get primarycache,recordsize,logbias dbpool/index
      NAME            PROPERTY      VALUE         SOURCE
      dbpool/index    primarycache  all           default
      dbpool/index    recordsize    8K            local
      dbpool/index    logbias       throughput    local
      
    • 为临时表空间和撤消表空间创建文件系统

      对于 Oracle Solaris 11 及更早的发行版,请使用缺省的 recordsizeprimarycache 值。

      # zfs create -o mountpoint=/my_db_path/temp dbpool/temp
      # zfs set logbias=throughput dbpool/temp
      # zfs create -o mountpoint=/my_db_path/undo dbpool/undo
      # zfs set logbias=throughput dbpool/undo
      

      对于 Oracle Solaris 11.1 及更晚的发行版,请使用以下 recordsize 值和缺省的 primarycache 值。

      # zfs create -o recordsize=1m -o mountpoint=/my_db_path/temp dbpool/temp
      # zfs set logbias=throughput dbpool/temp
      # zfs create -o recordsize=1m -o mountpoint=/my_db_path/undo dbpool/undo
      # zfs set logbias=throughput dbpool/undo
      
    • 使用单独的日志设备为恢复日志创建一个存储池。对于恢复日志活动较多的数据库(如提交次数较多的典型的 OLTP 数据库),请使用单独的日志设备 LUN。

      将磁盘分区为两个分片,小分片 s0,大小范围介于 64 到 150 MB 之间,用于单独的日志设备。分片 s1 包含剩余的磁盘空间,用于恢复日志。

      # zpool create redopool c0t50015179594B6F11d0s1 log c0t50015179594B6F11d0s0
      # zpool status redopool
      pool: redopool
      state: ONLINE
      scan: none requested
      config:
      
      NAME                       STATE     READ WRITE CKSUM
      redopool                   ONLINE       0     0     0
      c0t50015179594B6F11d0s1    ONLINE       0     0     0
      logs
      c0t50015179594B6F11d0s0    ONLINE       0     0     0
      
      errors: No known data errors
    • 为恢复池中的恢复日志创建文件系统。

      对于 Oracle Solaris 11 及更早的发行版,请使用 recordsizeprimarycache 的缺省文件系统值。

      # zfs create -o mountpoint=/my_db_path/redo redopool/redo
      # zfs set logbias=latency redopool/redo

      对于 Solaris 11.1 及更早的发行版,请使用以下 recordsize 和缺省 primarycache 值。

      # zfs create -o recordsize=1m -o mountpoint=/my_db_path/redo redopool/redo
      # zfs set logbias=latency redopool/redo
      
    • 为归档池中的归档日志文件创建文件系统。

      对于 Oracle Solaris 11 和更早的发行版,使用 recordsize 的缺省值设置压缩,并将 primarycache 设置为 metadata

      # zfs create -o compression=on -o primarycache=metadata -o mountpoint=
      /my_db_admin_path/archive archivepool/archive
      # zfs get primarycache,recordsize,compressratio,compression,available,
      used,quota archivepool/archive
      NAME                 PROPERTY       VALUE         SOURCE
      archivepool/archive  primarycache   metadata      local
      archivepool/archive  recordsize     128K          default
      archivepool/archive  compressratio  1.32x         -
      archivepool/archive  compression    on            local
      archivepool/archive  available      40.0G         -
      archivepool/archive  used           10.0G         -
      archivepool/archive  quota          50G           local

      对于 Solaris 11.1 及更晚的发行版-启用压缩,将 primarycache 设置为元数据并使用以下 recordsize 值:

      # zfs create -o compression=on –o recordsize=1M \
              -o mountpoint=/my_db_admin_path/archive archivepool/archive
      # zfs get primarycache,recordsize,compressratio,compression,\
              available,used,quota archivepool/archive
      NAME                 PROPERTY       VALUE        SOURCE
      archivepool/archive  primarycache   all          local
      archivepool/archive  recordsize     1M           local
      archivepool/archive  compressratio  1.32x        -
      archivepool/archive  compression    on           local
      archivepool/archive  available      40.0G        -
      archivepool/archive  used           10.0G        - 
      archivepool/archive  quota          50G          local 
      
  • 请考虑设置配额,使数据库文件系统具有足够的磁盘空间来运行,并生成数据库文件系统的快照。此外,在伪文件系统上设置一个保留,以便保留 10-20% 的池空间来保持池性能。

    # zfs set reservation=20gb dbpool/freespace
  • 有关存储阵列和内存资源调优的其他信息,请参阅白皮书 http://www.oracle.com/technetwork/server-storage/solaris/config-solaris-zfs-wp-167894.pdf

  • 其他 Oracle 数据库配置建议