Oracle数据库部分迁至闪存存储的示例分析
这篇文章给大家分享的是有关Oracle数据库部分迁至闪存存储的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
环境:Oracle 11.2.0.4 RAC(2 nodes)
说明:假设新增闪存挂载点是/flash(使用了第三方的集群文件系统),如果是使用Oracle的ASM,则本文提及的所有/flash目录都可以认定是新的闪存磁盘组是+FLASH。
1 实施需求
为提高数据库IO性能,采购了全闪存阵列存储,但由于前期预算有限,只能将部分数据迁移到闪存存储上(当然,如果条件允许,还是强烈建议将数据库整体全部迁移到闪存)。经评估,最终确认将业务高峰时刻,IO压力最大的表空间整体迁移到闪存存储上,此外,将数据库的redo和undo迁移到闪存存储上。
注:本文方案实际是我对某生产环境的真实需求而编写,由于该场景具有普适性,故脱敏后发表。
2 确认迁移表空间信息
主要根据业务高峰(以历史DBTime为主要参考指标),从对应AWR报告中的Tablespace IO Stats部分筛选出IO压力最大的表空间。比如我这里确定数据库需要迁移到闪存的表空间是TBS_D_JINGYU。
具体依据:
a.抽查平日数据库的AWR报告,根据Tablespace IO Stats部分,TOP1就是TBS_D_JINGYU,而且比其他表空间高一个数量级。
b.抽查业务高峰时段数据库的AWR报告,根据Tablespace IO Stats部分,TOP1多数情况也是TBS_D_JINGYU,但由于业务高峰期很多表空间都比较忙,不如平日明显,但综合考虑,还是选择TBS_D_JINGYU表空间。
TBS_D_JINGYU表空间大小:当前大小是2160G,预估数据量按30%的增长率,至少需要空间为2810G。
3 确认redo信息
将所有redo日志文件迁移到闪存。
很多年前,在Oracle界就一直流传一个说法:不建议将redo放在SSD上,就连Oracle官方文档都有对应的说法。所以直到现在还有很多人不敢将redo放在SSD上。而实际上,这个观点早已经过时,目前的企业级闪存卡经实际测试,是完全可以用来存放redo的。
确认redo信息,我这里是2节点RAC,redo相关信息是:一共有两个线程,每个线程有7组日志,每个日志大小为2G。总大小28G。group组号是31-37,41-47。
4 确认undo信息
确认undo信息:
TABLESPACE_NAMEFREE_SPACEUSED_SPACETABLESPACE_SIZEUSED_PERCENT-----------------------------------------------------------------------------UNDOTBS1176.6688234.331176761812.39291534UNDOTBS247.9354248.06457519548.134531657
可以看到,UNDOTBS1大小181G,UNDOTBS2大小48G。总大小229G。
5 表空间迁移到闪存
5.1 确认闪存空间符合最小需求
假设闪存挂载目录是/flash;按表空间30% 预留增长空间计算,对应闪存挂载目录空间最小值:
数据库迁移至闪存的空间最小需求:top tablespace + redo + undo =2810G + 28G + 229G=3067G
注:如果数据表空间和对应索引表空间是分开规划的,那么强烈建议将这个IO最高的数据表空间对应的索引表空间也一起迁移,这样总空间需求量就还要加上对应索引表空间的需求。
5.2 表空间迁移到闪存
使用backup as copy tablesapce来实现表空间TBS_D_JINGYU的迁移工作:
RMAN>backupascopytablespaceTBS_D_JINGYUformat'/flash/oradata/jydb5/';SQL>altertablespaceTBS_D_JINGYUoffline;RMAN>switchtablespaceTBS_D_JINGYUtocopy;RMAN>recovertablespaceTBS_D_JINGYU;SQL>altertablespaceTBS_D_JINGYUonline;
6 redo迁移到闪存
新增redo logfile,删除历史redo。
redo迁移到闪存的操作命令:
--新增redologfilealterdatabaseaddlogfileTHREAD1group11'/flash/oradata/jydb5/redo11.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD1group12'/flash/oradata/jydb5/redo12.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD1group13'/flash/oradata/jydb5/redo13.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD1group14'/flash/oradata/jydb5/redo14.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD1group15'/flash/oradata/jydb5/redo15.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD1group16'/flash/oradata/jydb5/redo16.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD1group17'/flash/oradata/jydb5/redo17.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD2group21'/flash/oradata/jydb5/redo21.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD2group22'/flash/oradata/jydb5/redo22.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD2group23'/flash/oradata/jydb5/redo23.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD2group24'/flash/oradata/jydb5/redo24.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD2group25'/flash/oradata/jydb5/redo25.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD2group26'/flash/oradata/jydb5/redo26.log'SIZE2147483648;alterdatabaseaddlogfileTHREAD2group27'/flash/oradata/jydb5/redo27.log'SIZE2147483648;--删除历史redoalterdatabasedroplogfilegroup31;alterdatabasedroplogfilegroup32;alterdatabasedroplogfilegroup33;alterdatabasedroplogfilegroup34;alterdatabasedroplogfilegroup35;alterdatabasedroplogfilegroup36;alterdatabasedroplogfilegroup37;alterdatabasedroplogfilegroup41;alterdatabasedroplogfilegroup42;alterdatabasedroplogfilegroup43;alterdatabasedroplogfilegroup44;alterdatabasedroplogfilegroup45;alterdatabasedroplogfilegroup46;alterdatabasedroplogfilegroup47;
7 undo迁移到闪存
undo迁移实质就是通过创建新的undo表空间,然后修改默认undo表空间的设置,最终删除历史undo表空间。
undo表空间迁移到闪存:
createundotablespaceUNDOTBS11datafile'/flash/oradata/jydb5/undotbs101.dbf'SIZE30G;createundotablespaceUNDOTBS21datafile'/flash/oradata/jydb5/undotbs201.dbf'SIZE24G;altertablespaceundotbs11adddatafile'/flash/oradata/jydb5/undotbs102.dbf'SIZE30G;altertablespaceundotbs11adddatafile'/flash/oradata/jydb5/undotbs103.dbf'SIZE30G;altertablespaceundotbs11adddatafile'/flash/oradata/jydb5/undotbs104.dbf'SIZE30G;altertablespaceundotbs11adddatafile'/flash/oradata/jydb5/undotbs105.dbf'SIZE30G;altertablespaceundotbs11adddatafile'/flash/oradata/jydb5/undotbs106.dbf'SIZE31G;altertablespaceundotbs21adddatafile'/flash/oradata/jydb5/undotbs202.dbf'SIZE24G;--showparameterundoaltersystemsetundo_tablespace=UNDOTBS11sid='jydb51';altersystemsetundo_tablespace=UNDOTBS21sid='jydb52';--selectSEGMENT_NAME,STATUS,TABLESPACE_NAMEfromdba_rollback_segs;(确认offline)droptablespaceundotbs1includingcontentsanddatafiles;droptablespaceundotbs2includingcontentsanddatafiles;
8 备库修改参数
数据库环境中还有一个ADG备库。
针对备库,主要需要修改db_file_name_convert和log_file_name_convert参数值,增加对新目录的映射关系。
感谢各位的阅读!关于“Oracle数据库部分迁至闪存存储的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。