阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle数据库部分迁移至闪存存储方案

195次阅读
没有评论

共计 4732 个字符,预计需要花费 12 分钟才能阅读完成。

Oracle 数据库部分迁移至闪存存储方案

  • 1. 实施需求
  • 2. 确认迁移表空间信息
  • 3. 确认 redo 信息
  • 4. 确认 undo 信息
  • 5. 表空间迁移到闪存
  • 6.redo 迁移到闪存
  • 7.undo 迁移到闪存
  • 8. 备库修改参数

环境: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_NAME                FREE_SPACE USED_SPACE TABLESPACE_SIZE USED_PERCENT
------------------------------ ---------- ---------- --------------- ------------
UNDOTBS1                       176.668823 4.33117676             181   2.39291534
UNDOTBS2                       47.9354248 .064575195              48   .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> backup as copy tablespace TBS_D_JINGYU format '/flash/oradata/jydb5/';
SQL> alter tablespace TBS_D_JINGYU offline;
RMAN> switch tablespace TBS_D_JINGYU to copy;
RMAN> recover tablespace TBS_D_JINGYU;
SQL> alter tablespace TBS_D_JINGYU online;

6 redo 迁移到闪存

新增 redo logfile,删除历史 redo。
redo 迁移到闪存的操作命令:

-- 新增 redo logfile
alter database add logfile THREAD 1 group 11 '/flash/oradata/jydb5/redo11.log' SIZE 2147483648;
alter database add logfile THREAD 1 group 12 '/flash/oradata/jydb5/redo12.log' SIZE 2147483648;
alter database add logfile THREAD 1 group 13 '/flash/oradata/jydb5/redo13.log' SIZE 2147483648;
alter database add logfile THREAD 1 group 14 '/flash/oradata/jydb5/redo14.log' SIZE 2147483648;
alter database add logfile THREAD 1 group 15 '/flash/oradata/jydb5/redo15.log' SIZE 2147483648;
alter database add logfile THREAD 1 group 16 '/flash/oradata/jydb5/redo16.log' SIZE 2147483648;
alter database add logfile THREAD 1 group 17 '/flash/oradata/jydb5/redo17.log' SIZE 2147483648;

alter database add logfile THREAD 2 group 21 '/flash/oradata/jydb5/redo21.log' SIZE 2147483648;
alter database add logfile THREAD 2 group 22 '/flash/oradata/jydb5/redo22.log' SIZE 2147483648;
alter database add logfile THREAD 2 group 23 '/flash/oradata/jydb5/redo23.log' SIZE 2147483648;
alter database add logfile THREAD 2 group 24 '/flash/oradata/jydb5/redo24.log' SIZE 2147483648;
alter database add logfile THREAD 2 group 25 '/flash/oradata/jydb5/redo25.log' SIZE 2147483648;
alter database add logfile THREAD 2 group 26 '/flash/oradata/jydb5/redo26.log' SIZE 2147483648;
alter database add logfile THREAD 2 group 27 '/flash/oradata/jydb5/redo27.log' SIZE 2147483648;

-- 删除历史 redo
alter database drop logfile group 31;
alter database drop logfile group 32;
alter database drop logfile group 33;
alter database drop logfile group 34;
alter database drop logfile group 35;
alter database drop logfile group 36;
alter database drop logfile group 37;

alter database drop logfile group 41;
alter database drop logfile group 42;
alter database drop logfile group 43;
alter database drop logfile group 44;
alter database drop logfile group 45;
alter database drop logfile group 46;
alter database drop logfile group 47;

7 undo 迁移到闪存

undo 迁移实质就是通过创建新的 undo 表空间,然后修改默认 undo 表空间的设置,最终删除历史 undo 表空间。
undo 表空间迁移到闪存:

create undo tablespace UNDOTBS11 datafile '/flash/oradata/jydb5/undotbs101.dbf' SIZE 30G;
create undo tablespace UNDOTBS21 datafile '/flash/oradata/jydb5/undotbs201.dbf' SIZE 24G;

alter tablespace undotbs11 add datafile '/flash/oradata/jydb5/undotbs102.dbf' SIZE 30G;
alter tablespace undotbs11 add datafile '/flash/oradata/jydb5/undotbs103.dbf' SIZE 30G;
alter tablespace undotbs11 add datafile '/flash/oradata/jydb5/undotbs104.dbf' SIZE 30G;
alter tablespace undotbs11 add datafile '/flash/oradata/jydb5/undotbs105.dbf' SIZE 30G;
alter tablespace undotbs11 add datafile '/flash/oradata/jydb5/undotbs106.dbf' SIZE 31G;

alter tablespace undotbs21 add datafile '/flash/oradata/jydb5/undotbs202.dbf' SIZE 24G;

--show parameter undo
alter system set undo_tablespace=UNDOTBS11 sid = 'jydb51';
alter system set undo_tablespace=UNDOTBS21 sid = 'jydb52';

--select SEGMENT_NAME ,STATUS ,TABLESPACE_NAME from dba_rollback_segs;(确认 offline)
drop tablespace undotbs1 including contents and datafiles;
drop tablespace undotbs2 including contents and datafiles;

8 备库修改参数

数据库环境中还有一个 ADG 备库。
针对备库,主要需要修改 db_file_name_convert 和 log_file_name_convert 参数值,增加对新目录的映射关系。

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149975.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4732字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中