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_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参数值,增加对新目录的映射关系。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android技术分享

Android ContentProvider实例详解

ContentProvider(内容提供者)是Android的四大组件之一,管理android以结构化方式存放的数据,以相对安全的方式封装数据(表)并且提供简易...

29620
来自专栏飞总聊IT

飞总聊IT的2019年

2019年转眼就过去两周了。两周前写完2018年总结的时候,我就问自己的2019年的公众号要做什么不要做些什么。两周以来伴随我对公众号的更新,这个问题也有了比较...

18750
来自专栏CWIKIUS

手动升级 Confluence - 开始升级之前

在本指南中,我们将会帮助你使用 zip / tar.gz 文件将你的 Confluence 安装实例在 Windows 或者 Linux 版本中升级到最新的版本...

9520
来自专栏Linyb极客之路

面试官:你有过一线的MySQL实战经验,能给我详细聊聊吗?

本文来自一线的实战经验,主要针对DBA和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。

12730
来自专栏CWIKIUS

手动升级 Confluence - 规划你的升级

使用下面的表格来确定最佳的升级路径来让你的Confluence 从当前版本升级到最新的 Confluence 版本。

10240
来自专栏华章科技

2019全球开发者调查:仅2%的人996,Python并不是最受喜爱的语言

导读:开发者社区正在发生哪些变化?Stack Overflow 的最新调查获得了一些预料之外的结果:Java 语言开发者的平均收入不到 35 万元人民币,成为了...

13930
来自专栏cmazxiaoma的架构师之路

删库跑路不怕,用mysqldump和mysqlbinlog进行数据恢复

1.创建douyin数据库、tbl_douyin_author数据库表、插入测试数据。

13110
来自专栏PHPer 进击

MySQL - 扩展性 2 扩展策略:氪金氪脑任君选

如果将应用的所有数据简单地放在一台 MySQL 服务器实例上,就不用谈什么扩展性了。但是业务能稳定持续的增长,那么应用肯定会碰到性能瓶颈。

7920
来自专栏Nicky's blog

Oracle AWR报告生成和性能分析

对于SQL调优,局部SQL,我们可以直接使用执行计划等直接调优,而对于整个系统来说?这时候就可以用Oracle系统自带的报告对系统进行整体分析了,Oracle提...

14730
来自专栏Linyb极客之路

Spring ShedLock指南

Spring为定时任务提供了一个易于实现的API。在没有部署应用程序的多个实例之前,它很有效。默认情况下,Spring无法处理多个实例上的调度程序同步,而是在每...

16330

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励