zoukankan      html  css  js  c++  java
  • Exadata 高性能盘换成高容量盘

    Exadata 高性能盘换成高容量盘

    随着业务系统的快速发展,现在的数据库动辄十几或几十个TB,以前老版本的Exadata,比如X2-2或X3-2,高性能的机械盘(单块盘存储容量为600GB)的存储容量已经根本无法满足数据增长的需求,有很多的客户需要对Exadata的存储进行扩容。

    存储扩容的方案比较多,例如增加新的存储节点、高性能盘换高容量盘、1/8配置升级成1/4配置(在当前Exadata硬件支持的情况下)、增加Exadata存储扩展柜等等,本文不对存储扩容方案进行一一介绍,只列举其中的将存储节点的高性能盘更换成8TB高容量盘方案进行详细讲解。

    7.1.1 注意事项

    X2、X3、X4和X5 Exadata和存储扩展架,将Exadata存储服务器中的磁盘更换成8TB的高容量盘时,需要注意如下事项。

    n  Exadata的V1和V2系统,不支持8TB的高容量磁盘交换。

    n  不提供10TB大容量磁盘的磁盘交换服务。注意:这里不提供10TB大容量磁盘的服务并不是指在技术层面不支持这种操作,而仅仅是ORACLE公司不提供这种服务,单纯从技术而言,应该不存在问题。

    n  X2/X3/X4/X5系列的Exadata可以使用单块容量大小为8TB的高容量盘,但必须保证存储软件版本和GI集群版本也必须满足一定的要求,具体要求如下所示。

    1)       原始型号为H7280A520SUN8.0T要求Exadata 12.1.2.1.2或更高,这些驱动器已经到了使用寿命的尽头,一旦当前库存耗尽,将不再作为替换部件提供。

    2)       较新的型号为H7280B520SUN8.0T需要以下Exadata版本之一:18.x或更高版本;12.2.1.1.2或更高的12.2版本;12.1.2.3.6或更高的12.1版本。

    3)       GI集群版本需要为以下版本之一:12.1.0.2.11或更高的BP补丁或更高的版本;12.1.0.2.10及以下的BP补丁,则需要额外打21281532、21099555、28683167补丁;11.2.0.4.18或更高BP补丁;11.2.0.4.17及以下的BP补丁,则需要额外打21099555;11.2.0.3版本,则需要额外打21099555。

    n  单块容量大小为8TB的高容量盘比以前其它类型的磁盘稍大一些,如果在X3/X4/X5上更换成8TB的磁盘时,需要更换新的盘托。具体情况如表8.1所示。

    表8.1 Exadata不同机架中更新8TB磁盘是否需要托架

    Exadata类型

    原始磁盘类型

    原始磁盘大小

    新磁盘类型

    新磁盘大小

    是否需要新的磁盘托架

    X2

    高容量盘

    2TB

    高容量盘

    8TB

    N

    X2

    高容量盘

    3TB

    高容量盘

    8TB

    N

    X2

    高容量盘

    4TB

    高容量盘

    8TB

    N

    X2

    高性能盘

    600GB

    高容量盘

    8TB

    N

    X3

    高容量盘

    3TB

    高容量盘

    8TB

    Y

    X3

    高容量盘

    4TB

    高容量盘

    8TB

    Y

    X3

    高性能盘

    1.2TB

    高容量盘

    8TB

    Y

    X4

    高容量盘

    4TB

    高容量盘

    8TB

    Y

    X4

    高性能盘

    1.2TB

    高容量盘

    8TB

    Y

    X5

    高容量盘

    4TB

    高容量盘

    8TB

    Y

    n  一个存储节点中所有的磁盘都必须进行更换,不能只更换其中的一部分磁盘。

    n  如果要执行数据库在线的磁盘替换操作,至少需要4个存储节点(数据处于Normal冗余的情况下)和6个存储节点(数据处于High冗余的情况下),因为存储节点进行磁盘更换时,每次只允许操作一台,同时需要将该存储节点从磁盘组中删除,更换完磁盘并重新刷机然后添加回磁盘组中。需要更多的存储节点是为了满足Votedisk需求(Normal冗余的磁盘组中有3个副本,也即需要3个存储节点;High冗余的磁盘组中有5个副本,也即需要5个存储节点)。除非一个备用的存储节点可以合并到1/8配置或1/4配置机架中,否则这些较小的机架必须离线磁盘更换。

    n  如果是在线的磁盘替换操作,整个过程ASM需要rebalance的次数为2+存储节点个数。先将存储节点1从磁盘组中删除,此时需要发生1次ASM rebalance操作,第1次rebalance操作完成后,存储节点1上的所有磁盘进行更换,然后对存储节点1重新刷机初始化,接着将存储节点1加入到磁盘组中,加入磁盘组的同时不要触发ASM rebalance操作,同时删除存储节点2,此时才触发ASM rebalance操作,也即将存储节点1的加入和存储节点2的删除这两个动作合并成一次ASM rebalance操作,如此已往,对所有存储节点完成换盘操作。

    n  虽然可以在应用程序继续工作的情况下执行在线替换磁盘操作,但是要加快ASM rebalance操作,应该尽量对应用程序进行控制。同时,删除存储节点会导致底层存储数量减少,应用程序的性能会大幅下降,最佳的做法是将应用程序工作负载减少到几乎为零,让ASM rebalance操作使用大部分资源。

    n  如果是在线的磁盘替换操作,在磁盘更换之前,存储软件的版本如果不满足要求,则该存储节点更换完磁盘进行重新刷机时,必须使用满足要求的存储软件版本,这种方式将造成不同版本的存储软件在长时间内混合使用,也许会导致系统运行异常。建议在磁盘更换之前就将存储软件版本升级到满足要求的版本,重新刷机时保持存储软件版本不变;或者建议停机进行磁盘替换操作。

    7.1.2 换盘方式选择

    根据磁盘的选择、空闲空间和机架的大小,Exadata磁盘交换可以在线滚动方式或离线方式完成。此时,可以通过以下规则用于确定使用哪种方式来进行换盘。

    n  如果环境不超过3个存储单元,则必须离线执行Exadata磁盘交换服务,因为当机架中存在少于4个单元时,我们无法为VOTE保留所需的冗余级别,因此此时无法在线执行此交换。

    n  如果没有足够的可用空间来允许重新ASM rebalance操作,则必须离线执行Exadata磁盘交换服务。

    n  如果环境超过3个存储单元,并且有足够的空间来允许重新ASM rebalance操作,则允许在线执行操作,在交换期间,我们从每个磁盘组一次删除一个存储节点以执行Exadata磁盘交换服务。

    7.1.3 在线换盘

    本文稍后提供了一个脚本,以帮助确定ASM磁盘组可用空间量。如果存储节点个数满足要求,同时ASM磁盘组的剩余空间也满足要求,则可以执行在线更换操作。

    1. 前期检查

    在执行正式磁盘更换操作之前,请先对当前环境进行全面检查,具体检查项如下所示。

    n  检查当前环境的存储软件版本是否支持新的磁盘,具体见前面的“注意事项”章节,如果当前的存储软件版本不支持存储节点混合版本同时运行,则需要提前升级存储软件版本。

    n  调用check_diskswap_space.sql脚本检查当前环境是否存在足够的剩余空间来执行ASM rebalance操作,从MOS文档《Oracle Exadata Database Machine Disk Swap Service Process (Doc ID 1544637.1)》中获取check_diskswap_space.sql脚本。

    n  在开始正式磁盘交换之前一周,运行exachk工具,分析exachk工具生成的报告,并解决所有发现的关键问题。

    n  检查每个ASM磁盘组中的griddisk大小是否一致,在换盘之前,必须保证每个磁盘组中的griddisk大小一致,具体检查命令如下所示。

    SQL> select distinct dg.name, dgd.total_mb from v$asm_disk dgd, v$asm_diskgroup dg where dg.group_number = dgd.group_number;

    n  准备存储节点image刷机的刷机介质。

    n  收集存储节点的网络配置信息,存储节点刷机后需要进行网络配置。

    n  检查存储节点是否开启了FlashCache的write-back模式,具体检查命令如下所示。

    # dcli -g ~/cell_group -l root cellcli -e "list cell attributes flashcachemode"

    n  在ASM实例中查询gv$asm_operation视图,确保当前没有ASM rebalance操作正在运行,具体命令如下所示。

    SQL> select * from gv$asm_operation;

    n  对数据库进行完整的数据库备份,备份集必须保留到Exadata之外的存储上,确保所有备份和归档日志可用,并验证备份没有损坏。

    n  在所有存储节点上运行cellcli命令,以确定当前存储节点是否配置了SMTP和SNMP信息,如果配置了SMTP和SNMP信息,则将输出保存,后期重新对存储节点刷机后,需要重新配置这些信息,具体命令如下所示。

    # cellcli -e list cell detail

    2. 正式更换

    在线更换存储节点磁盘操作的详细步骤,请参考以下内容。

    (1)、调整ASM的power limit参数值,在不影响数据库性能的前提下,尽可能地增加power limit参数值,加快完成ASM rebalance操作。ASM的power limit参数值建议不要超过32,可参考MOS文档《Oracle Exadata High Availability Best Practices (Doc ID 1274322.1)》,也可直接运行代码清单8.1进行检查。

    代码清单8.1 设置最佳的power limit参数值

    set serveroutput on

    declare

      diskspace           number;

      cellspace           number;

      disk_rebal_time     number;

      cell_rebal_time     number;

      default_power_limit number;

      max_rate_diff_cell  number;

      max_rate_diff_disk  number;

      failgroup_name      varchar2(30);

      diskgroup_name      varchar2(30);

    begin

      dbms_output.put_line('---------------------------------------------------------------');

      dbms_output.put_line('Estimates are provided for both the current default power ');

      dbms_output.put_line('(asm_power_limit) and the recommended DBM max of 32');

      dbms_output.put_line('The current recommended default power limit for a DBM is 4');

      dbms_output.put_line(chr(10));

      dbms_output.put_line('Note these estimates are for a DBM with High Performance drives');

      dbms_output.put_line('and do not include the compaction phase of rebalance. The ');

      dbms_output.put_line('compaction phase is not required for redundancy restoration');

      dbms_output.put_line('---------------------------------------------------------------');

      select value

        into default_power_limit

        from v$parameter

       where name = 'asm_power_limit';

      max_rate_diff_cell := 32 / default_power_limit;

      max_rate_diff_disk := 16 / default_power_limit;

      for dg in (select group_number

                   from v$asm_Diskgroup

                  where group_number > 0

                    and state = 'MOUNTED') loop

        select failgroup

          into failgroup_name

          from v$asm_disk

         where group_number = dg.group_number

           and rownum = 1;

        select name

          into diskgroup_name

          from v$asm_diskgroup

         where group_number = dg.group_number;

        select round(sum(total_mb - free_mb) / 1024, 0)

          into diskspace

          from v$asm_disk

         where disk_number = 1

           and group_number = dg.group_number;

        select round(sum(total_mb - free_mb) / 1024, 0)

          into cellspace

          from v$asm_disk

         where failgroup = failgroup_name

           and group_number = dg.group_number;

        disk_rebal_time := round((diskspace / 280) * 60, 0);

        cell_rebal_time := round((cellspace / 1024) * 60, 0);

        dbms_output.put_line(chr(10));

        dbms_output.put_line('****************************************************************');

        dbms_output.put_line('Rough time estimates for rebalance of diskgroup ' ||

                             diskgroup_name || ':');

        dbms_output.put_line('DISK based rebalance at the default power of ' ||

                             default_power_limit || ': ' ||

                             disk_rebal_time * max_rate_diff_disk ||

                             ' minutes');

        dbms_output.put_line('CELL based rebalance at the default power of ' ||

                             default_power_limit || ': ' ||

                             cell_rebal_time * max_rate_diff_cell ||

                             ' minutes');

        dbms_output.put_line('DISK based rebalance at the maximum recommended power of 32: ' ||

                             disk_rebal_time || ' minutes');

        dbms_output.put_line('CELL based rebalance at the maximum recommended power of 32: ' ||

                             cell_rebal_time || ' minutes');

        dbms_output.put_line('****************************************************************');

      end loop;

    end;

    /

    (2)、如果当前系统正在运行的存储软件版本为11.2.3.2.0或更高版本,则需要确认是否开启了FlashCache的write-back模式,具体检查命令如下所示。

    # cellcli -e "list cell attributes flashcachemode"

    (3)、第一个存储节点从当前环境删除,将该存储节点中的所有griddisk从磁盘组中全部删除,具体命令如下所示。

    SQL> alter diskgroup dbfs drop disks in failgroup cell01 rebalance power 4;

    SQL> alter diskgroup data drop disks in failgroup cell01 rebalance power 4;

    SQL> alter diskgroup reco drop disks in failgroup cell01 rebalance power 4;

    (4)、检查ASM rebalance操作是否完成,具体命令如下所示。

    SQL> select count(*) from gv$asm_operation;

    如果以上SQL语句的结果输出为0,则表示ASM rebalance操作已经完成。

    同时检查该存储节点中griddisk的HEADER_STATUS和MOUNT_STATUS的状态,具体命令如下所示。

    SQL> select path, group_number, mount_status, header_status, mode_status, state, mount_date

    from gv$asm_disk

    where failgroup = '<cell name>'

    order by path;

    以上命令输出中,header_status列的状态应该为former,MOUNT_STATUS列的状态应该为closed。

    (5)、当替换磁盘的存储节点上完成了所有的ASM rebalance操作之后,删除该存储节点,具体命令如下所示。

    CellCLI> drop cell force;

    (6)、运行ipconf.pl脚本,验证当前的网络配置信息是否正确,保存正确的网络配置信息,后期对存储节点重新刷机时需要这些信息。

    # /opt/oracle.cellos/ipconf.pl -check -verbose

    (7)、停止该存储节点服务,并关闭该存储节点,具体命令如下所示。

    # cellcli -e alter cell shutdown services all

    # shutdown -h -y now

    (8)、对该存储节点更换所有的硬盘,并重新刷机,一旦对该存储节点刷机完成,执行命令检查存储节点状态是否正常,具体命令如下所示。

    # imageinfo

    # cellcli -e list cell detail

    (9)、针对该重新刷机的存储节点,手工重新创建celldisk。

    1)如果该存储节点为1/4配置或更高配置时,命令如下。

    # cellcli -e alter cell restart services all

    # cellcli -e list physicaldisk

    # cellcli -e drop flashcache

    # cellcli -e drop celldisk all harddisk force

    # cellcli -e drop flashcache force

    # cellcli -e list cell

    # cellcli -e create celldisk all

    # cellcli -e create flashlog all

    2)如果该存储节点为1/8配置或更高配置时,命令如下。

    # cellcli -e alter cell restart services all

    # cellcli -e list physicaldisk

    # cellcli -e drop flashcache

    # cellcli -e drop celldisk all harddisk force

    # cellcli -e drop flashcache force

    # cellcli -e list cell

    # cellcli -e drop flashlog

    # cellcli -e drop celldisk all;

    # cellcli -e alter cell eighthRack=true

    # cellcli -e list cell attributes eighthrack

    # cellcli -e create celldisk all

    # cellcli -e create flashlog all

    (10)、针对该重新刷机的存储节点,手工创建FlashCache,具体命令如下所示。

    1)如果该存储节点最初启用了FlashCache的Write-Back模式,在上面的步骤中收集过相关信息,则现在应该重新启用Write-Back模式,命令如下。

    # cellcli -e alter cell shutdown services cellsrv

    # cellcli -e alter cell flashCacheMode = WriteBack

    # cellcli -e alter cell startup services cellsrv

    # cellcli -e create flashcache all

    2) 如果该存储节点最初没有启用了FlashCache的Write-Back模式,则命令如下。

    # cellcli -e create flashcache all

    (11)、针对该重新刷机的存储节点,创建一个临时性的griddisk,大小为7290.0625GB。

    # cellcli -e create griddisk all harddisk prefix=tempgd,size=7290.0625g

    该临时性的griddisk只是为了临时性地从磁盘的最外圈先占用一部分空间,目的是为了创建最内圈的DBFS_DG这个griddisk时,不需要单独指定offset参数和size参数。

    (12)、创建DBFS_DG griddisks。此时不需要在creategriddisk命令中指定size和offset参数值,因为它将使用临时griddisk创建后剩余的所有空闲空间。注意:无论当前的DBFS_DG磁盘组中每个griddisk大小是多少,对于任何新替换的磁盘,DBFS_DG磁盘组中每个griddisk大小都应该是33GB。

    # cellcli -e create griddisk all harddisk prefix=DBFS_DG

    (13)、删除刚刚创建的临时性的griddisk,命令如下。

    # cellcli -e drop griddisk all prefix=tempgd force

    (14)、创建DATA磁盘组的griddisk,命令如下。

    # cellcli -e create griddisk all harddisk prefix=<existing DATA prefix>,size=<new targeted size of DATA griddisk>,cachingPolicy="default"

    创建DATA磁盘组的griddisk时,如果没有指定offset参数,则griddisk将在磁盘的外圈创建,这种griddisk的速度最快,同时指定DATA磁盘组的griddisk的大小。

    (15)、创建RECO磁盘组的griddisk,命令如下。

    # cellcli -e create griddisk all harddisk prefix=<existing RECO prefix>,cachingPolicy="default"

    创建RECO磁盘组的griddisk时,如果没有指定size参数,也即这个磁盘上剩余的空间都用来创建RECO磁盘组的griddisk。

    (16)、检验刚刚创建的griddisk,命令如下。

    # cellcli -e list physicaldisk

    # cellcli -e list lun

    # cellcli -e list celldisk attributes name, freespace

    # cellcli -e list griddisk attributes name, size, offset, status

    需要确保该存储节点上celldisk的freespace参数值为0。

    (17)、测试新存储节点上磁盘的性能,命令如下。

    # cellcli -e calibrate force

    (18)、将新的griddisk加入各自磁盘组中,指定磁盘大小为原始griddisk大小,而不是现在griddisk的大小,同时,将另外一个存储节点从磁盘组中删除,具体命令如下所示。

    SQL> alter diskgroup DATA add disk 'o/<cell ip>/DATA_*<cellname>' size <original size of griddisk> drop disks in failgroup <next cell> rebalance power 4;

    SQL> alter diskgroup RECO add disk 'o/<cell ip>/RECO_*<cellname>' size <original size of griddisk> drop disks in failgroup <next cell> rebalance power 4;

    SQL> alter diskgroup DBFS add disk 'o/<cell ip>/DBFS_*<cellname>' size <original size of griddisk> drop disks in failgroup <next cell> rebalance power 4;

    这种方式只需要ASM rebalance操作一次即可。

    (19)、检查ASM rebalance操作是否完成,具体命令如下所示。

    SQL> select count(*) from gv$asm_operation;

    如果以上SQL语句的结果输出为0,则表示ASM rebalance操作已经完成。

    同时检查新增存储节点和刚删除存储节点中griddisk的HEADER_STATUS和MOUNT_STATUS的状态,具体命令如下所示。

    SQL> select path, group_number, mount_status, header_status, mode_status, state, mount_date

    from gv$asm_disk

    where path like '%DATA_<added cellname>%' or path like '%DATA_<dropped cellname>%'

    order by path;

    以上命令输出中,新增存储节点的MOUNT_STATUS列的状态应该为cached,header_status列的状态应该为member,mode_status列的状态应该为online,state列的状态应该为normal;新刚删除存储节点的MOUNT_STATUS列的状态应该为closed,header_status列的状态应该为former,mode_status列的状态应该为online,state列的状态应该为normal。

    (20)、重复以上的第4步至第18步,依次更换剩余的存储节点。

    (21)、一旦所有存储节点更换完毕,最后来修改磁盘组中griddisk真实的大小。

    SQL> alter diskgroup <diskgroup name> resize all size <new griddisk size> rebalance power 4;

    (22)、重新配置存储节点的e-mail邮件告警信息,命令如下所示。

    CellCLI> alter cell smtpServer='******', smtpFromAddr='shiyh@oracle.com.cn', smtpUser='shiyh', smtpPwd='*******', smtpToAddr='liese.liu@oracle.com.cn', smtpPort='25', smtpUseSSL='false', smtpFrom='Exadata cell', notificationPolicy='critical,warning,clear', notificationMethod='mail';

    7.1.4 停机换盘

    如果存储节点个数不满足要求,或者ASM磁盘组的剩余空间不满足要求,则只能执行停机更换操作。

    1. 前期检查

    在执行正式停机磁盘更换操作之前,请先对当前环境进行全面检查,具体检查项如下所示。

    n  检查当前环境的存储软件版本是否支持新的磁盘,具体见前面的“注意事项”章节,如果当前的存储软件版本不支持新的磁盘,则需要提前升级存储软件版本。

    n  在开始正式磁盘交换之前一周,运行exachk工具,分析exachk工具生成的报告,并解决所有发现的关键问题。

    n  准备存储节点image刷机的刷机介质。

    n  收集存储节点的网络配置信息,存储节点刷机后需要进行网络配置。

    n  对数据库进行完整的数据库备份,备份集必须保留到Exadata之外的存储上,确保所有备份和归档日志可用,并验证备份没有损坏。

    n  在所有存储节点上运行cellcli命令,以确定当前存储节点是否配置了SMTP和SNMP信息,如果配置了SMTP和SNMP信息,则将输出保存,后期重新对存储节点刷机后,需要重新配置这些信息,具体命令如下所示。

    # cellcli -e list cell detail

    2. 正式更换

    停机更换存储节点磁盘操作的详细步骤,请参考以下内容。

    (1)、备份OCR,确定并注意OCR的当前位置,并确保存在近期的OCR自动备份。

    # GI_HOME/bin/ocrcheck

    # GI_HOME/bin/ocrconfig -showbackup

    # GI_HOME/bin/ocrconfig -manualbackup

    (2)、确认GI集群当前Votedisk的位置,具体命令如下所示。

    # GI_HOME/bin/crsctl query css votedisk

    (3)、连接到ASM实例,查询griddisk的当前大小,具体命令如下所示。

    SQL> select distinct dg.name, dgd.total_mb from v$asm_disk dgd, v$asm_diskgroup dg where dg.group_number = dgd.group_number;

    (4)、备份ASM实例的spfile,具体命令如下所示。

    SQL> create pfile='/tmp/pfile_asm.ora' from spfile;

    (5)、干净地停止数据库,具体命令如下所示。

    $ $DB_HOME/bin/srvctl stop db -d <dbname> -o immediate

    (6)、以SYSASM的方式登录到ASM实例,运行命令收集磁盘组参数,为创建新磁盘组作准备,见代码清单8.2所示。

    代码清单8.2 收集ASM磁盘组参数

    set pagesize 100

    break on dg_name skip 1

    set linesize 150

    col attrib_name form a50

    col attrib_value form a50

    SELECT dg.name dg_name, a.name attrib_name, a.value attrib_value

      FROM v$asm_attribute a, v$asm_diskgroup dg

     WHERE a.group_number = dg.group_number

       and a.name in ('compatible.rdbms',

                      'compatible.asm',

                      'au_size',

                      'disk_repair_time',

                      'cell.smart_scan_capable',

                      'sector_size',

                      'content.type')

     ORDER BY dg.name, a.name;

    (7)、停止GI集群,并关闭GI集群随操作系统自动启动。

    # dcli -g ~/dbs_group -l root GI_HOME/bin/crsctl stop crs [-f]

    # dcli -g ~/dbs_group -l root GI_HOME/bin/crsctl disable crs

    (8)、停止所有存储节点的服务,关闭所有存储节点,并更换硬盘。

    CellCLI> drop cell force;

    # /opt/oracle.cellos/ipconf.pl -check -verbose

    # cellcli -e alter cell shutdown services all

    # shutdown -h -y now

    (9)、对所有存储节点重新刷机。

    (10)、手工创建celldisk。

    1)如果该存储节点为1/4配置或更高配置时,命令如下。

    # cellcli -e alter cell restart services all

    # cellcli -e list physicaldisk

    # cellcli -e drop flashcache

    # cellcli -e drop celldisk all harddisk force

    # cellcli -e drop flashcache force

    # cellcli -e list cell

    # cellcli -e create celldisk all

    # cellcli -e create flashlog all

    2)如果该存储节点为1/8配置或更高配置时,命令如下。

    # cellcli -e alter cell restart services all

    # cellcli -e list physicaldisk

    # cellcli -e drop flashcache

    # cellcli -e drop celldisk all harddisk force

    # cellcli -e drop flashcache force

    # cellcli -e list cell

    # cellcli -e drop flashlog

    # cellcli -e drop celldisk all;

    # cellcli -e alter cell eighthRack=true

    # cellcli -e list cell attributes eighthrack

    # cellcli -e create celldisk all

    # cellcli -e create flashlog all

    (11)、针对该重新刷机的存储节点,手工创建FlashCache,具体命令如下所示。

    1)如果该存储节点最初启用了FlashCache的Write-Back模式,在上面的步骤中收集过相关信息,则现在应该重新启用Write-Back模式,命令如下。

    # cellcli -e alter cell shutdown services cellsrv

    # cellcli -e alter cell flashCacheMode = WriteBack

    # cellcli -e alter cell startup services cellsrv

    # cellcli -e create flashcache all

    2) 如果该存储节点最初没有启用了FlashCache的Write-Back模式,则命令如下。

    # cellcli -e create flashcache all

    (12)、针对该重新刷机的存储节点,创建一个临时性的griddisk,大小为7290.0625GB。

    # cellcli -e create griddisk all harddisk prefix=tempgd,size=7290.0625g

    该临时性的griddisk只是为了临时性地从磁盘的最外圈先占用一部分空间,目的是为了创建最内圈的DBFS_DG这个griddisk时,不需要单独指定offset参数和size参数。

    (13)、创建DBFS_DG griddisks。此时不需要在creategriddisk命令中指定size和offset参数值,因为它将使用临时griddisk创建后剩余的所有空闲空间。注意:无论当前的DBFS_DG磁盘组中每个griddisk大小是多少,对于任何新替换的磁盘,DBFS_DG磁盘组中每个griddisk大小都应该是33GB。

    # cellcli -e create griddisk all harddisk prefix=DBFS_DG

    (14)、删除刚刚创建的临时性的griddisk,命令如下。

    # cellcli -e drop griddisk all prefix=tempgd force

    (15)、创建DATA磁盘组的griddisk,命令如下。

    # cellcli -e create griddisk all harddisk prefix=<existing DATA prefix>,size=<new targeted size of DATA griddisk>,cachingPolicy="default"

    创建DATA磁盘组的griddisk时,如果没有指定offset参数,则griddisk将在磁盘的外圈创建,这种griddisk的速度最快,同时指定DATA磁盘组的griddisk的大小。

    (16)、创建RECO磁盘组的griddisk,命令如下。

    # cellcli -e create griddisk all harddisk prefix=<existing RECO prefix>,cachingPolicy="default"

    创建RECO磁盘组的griddisk时,如果没有指定size参数,也即这个磁盘上剩余的空间都用来创建RECO磁盘组的griddisk。

    (17)、检验刚刚创建的griddisk,命令如下。

    # cellcli -e list physicaldisk

    # cellcli -e list lun

    # cellcli -e list celldisk attributes name, freespace

    # cellcli -e list griddisk attributes name, size, offset, status

    需要确保该存储节点上celldisk的freespace参数值为0。

    (18)、测试新存储节点上磁盘的性能,命令如下。

    # cellcli -e calibrate force

    (19)、在其中一个计算节点以独占模式启动GI集群,具体命令如下。

    # $GI_HOME/bin/crsctl start crs -excl -nocrs

    (20)、创建DBFS_DG磁盘组,具体命令如下。

    SQLPLUS> create diskgroup dbfs_dg normal redundancy disk 'o/*/DBFS_DG*<cellprefix>*' attribute 'au_size' = '<attribute value for au_size for DBFS_DG diskgroup from step 6>','sector_size' = '<attribute value for sector_size for DBFS_DG diskgroup from step 6>', 'compatible.asm' = '<attribute value for compatible.asm for DBFS_DG diskgroup from step 6>', 'compatible.rdbms' = '<attribute value for compatible.rdbms for DBFS_DG diskgroup from step 6>', 'cell.smart_scan_capable' = '<attribute value for cell.smart_scan_capable for DBFS_DG diskgroup from step 6>';

    SQLPLUS> alter diskgroup dbfs_dg set attribute 'disk_repair_time' = '<value for disk_repair_time for DBFS_DG diskgroup from Step 6>';

    SQLPLUS> alter diskgroup dbfs_dg set attribute 'content.type' = '<value for content.type for DBFS_DG diskgroup from Step 6>';

    (21)、恢复OCR,具体命令如下。

    # cd <ocr backup location>

    # GI_HOME/bin/ocrconfig -restore <backup file created in step 1>

    (22)、替换voting disk,具体命令如下。

    # GI_HOME/bin/crsctl replace votedisk +DBFS_DG

    (23)、重建ASM实例的spfile文件,具体命令如下。

    SQLPLUS> create spfile='+DBFS_DG' from pfile='/tmp/pfile_asm.ora';

    (24)、重启GI集群,具体命令如下。

    # $GI_HOME/bin/crsctl stop crs [-f]

    # $GI_HOME/bin/crsctl start crs

    # $GI_HOME/bin/crsctl check cluster -all

    # $GI_HOME/bin/crsctl enable crs

    (25)、重建DATA和RECO磁盘组,具体命令如下。

    SQLPLUS> create diskgroup data_<dbm_prefix> [normal | high] redundancy disk 'o/*/DATA*<cellprefix>*' attribute 'au_size' = '<attribute value for au_size for DATA* diskgroup from step 6>','sector_size' = '<attribute value for sector_size for DATA* diskgroup from step 6>', 'compatible.asm' = '<attribute value for compatible.asm for DATA* diskgroup from step 6>', 'compatible.rdbms' = '<attribute value for compatible.rdbms for DATA* diskgroup from step 6>', 'cell.smart_scan_capable' = '<attribute value for cell.smart_scan_capable for DATA* diskgroup from step 6>';

    SQLPLUS> alter diskgroup data_<dbm_prefix> set attribute 'disk_repair_time' = '<attribute value for disk_repair_time for DATA* diskgroup from Step 6>';

    SQLPLUS> alter diskgroup data_<dbm_prefix> set attribute 'content.type' = '<attribute value for content.type for DATA* diskgroup from Step 6|DATA>';

    SQLPLUS>create diskgroup reco_<dbm_prefix> [normal | high] redundancy disk 'o/*/RECO*<cellprefix>*' attribute 'au_size' = '<attribute value for au_size for RECO* diskgroup from step 6>','sector_size' = '<attribute value for sector_size for RECO* diskgroup from step 6>', 'compatible.asm' = '<attribute value for compatible.asm for RECO* diskgroup from step 6>', 'compatible.rdbms' = '<attribute value for compatible.rdbms for RECO* diskgroup from step 6>', 'cell.smart_scan_capable' = '<attribute value for cell.smart_scan_capable for RECO* diskgroup from step 6>';

    SQLPLUS> alter diskgroup reco_<dbm_prefix> set attribute 'disk_repair_time' = '<attribute value for disk_repair_time for RECO* diskgroup from Step 6>';

    SQLPLUS> alter diskgroup reco_<dbm_prefix> set attribute 'content.type' = '<attribute value for content.type for RECO* diskgroup from Step 6|RECOVERY>';

    SQLPLUS> alter diskgroup data_<dbm_prefix> mount;

    SQLPLUS> alter diskgroup reco_<dbm_prefix> mount;

    (26)、恢复数据库,具体过程省略。

  • 相关阅读:
    迭代器和生成器
    装饰器进阶
    闭包和装饰器
    函数的嵌套
    函数的参数
    什么是粘包现象
    模拟ssh远程命令执行
    客户端与服务端代码bug修复和加入循环
    用socket实现简单的套接字通讯
    网络编程之客户端和服务端,
  • 原文地址:https://www.cnblogs.com/missyou-shiyh/p/12887056.html
Copyright © 2011-2022 走看看