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

Oracle数据库部分迁至闪存存储方案的更多相关文章

  1. Oracle 数据库、实例、表空间、用户、数据库对象

    Oracle是一种数据库管理系统,是一种关系型的数据库管理系统.通常情况了我们称的“数据库”,包含了物理数据.数据库管理系统.内存.操作系统进程的组合体,就是指这里所说的数据库管理系统. 完整的Ora ...

  2. Oracle数据库体系结构-Shared Pool

    Oracle数据库简单介绍 对象关系型数据库 重点:一致性+性能 一致性优于性能 处理模型:C/S模型 Client:用户和用户进程             Server:服务器进程,实例,数据库本身 ...

  3. Oracle数据库、实例、用户、表空间、表之间的关系

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...

  4. Oracle数据库迁移至PostgreSQL数据库问题及解决

    Oracle数据库迁移PostgreSQL数据库问题及解决 目录 如何计划迁移数据库(现状及问题分析) 统计系统表及表功能 解耦公共表 建立数据库 迁移表结构 导入表数据 改SQL语法 保证数据时效性 ...

  5. Oracle - 数据库的实例、表空间、用户、表之间关系

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Ora ...

  6. 【转】Oracle - 数据库的实例、表空间、用户、表之间关系

    [转]Oracle - 数据库的实例.表空间.用户.表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机 ...

  7. Oracle数据库的一些重要概念

    一.oracle数据库的结构 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Ora ...

  8. oracle 数据库相关名词--图解

     通过下图,我们可以更好的理解oracle的结构关系. 知识拓展: 知识点及常用的命令如下: 1)通常情况我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据.数据库管理系统.也即物理数据.内存 ...

  9. oracle 数据库中(创建、解锁、授权、删除)用户

    上文我们已经建立了名为orcl66的数据库. 想要在数据库中创建.修改用户需要我们以管理员权限登录到数据库中. 首先我们通过sqlplus命令登录连接数据库. 输入sqlplus命令--用户名: sy ...

随机推荐

  1. webpack 3.X学习之图片处理

    CSS中图片处理 在src目录下新建一个images目录,把图片放入images文件夹中:在index.html文件中增加一个div标签: /src/index.html: <div id=&q ...

  2. 基于docker+reveal.js搭建一个属于自己的在线ppt网站

    前言 最近热衷于Docker,由于这段时间使用Docker来折腾自己的服务器,越来越感觉这是一种及其被应该推广的技术,因此想在公司内部也做一次技术分享.当然,如果只是做的PPT,我就不写这文章了.既然 ...

  3. 记录项目版本升级angular4 ~ angular5

    前言: 在上一篇ng4文章<angular4--实际项目搭建总结>中说过,等到ng5正式发布,并且蚂蚁的NG ZORRO兼容ng5之后,我会对ng4项目进行升级.这篇文章就是大概说下升级的 ...

  4. is 和==的区别

    Python中的对象包含三要素:id.type.value.其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值.is判断的是a对象是否就是b对象,是通过id来判断的.==判断的 ...

  5. 【原创】2、小程序域名配置之申请支持SSL(https)

    要把一个网站对接进小程序,一.网站的域名必须通过备案(ICP备案).在买域名的时候,各个域名服务商都有提供相应的备案平台,可以方便的提交备案.工信部官网:http://www.miitbeian.go ...

  6. 迭代子模式(Iterator)

    迭代子模式(Iterator) 顾名思义,迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松.这句话包含两层意思:一是需要遍历的对象,即聚集对 ...

  7. SPOJ SERGRID - Grid BFS

    SERGRID - Grid no tags  You are on an nxm grid where each square on the grid has a digit on it. From ...

  8. 在Linux中使用线程

    我并不假定你会使用Linux的线程,所以在这里就简单的介绍一下.如果你之前有过多线程方面的编程经验,完全可以忽略本文的内容,因为它非常的初级. 首先说明一下,在Linux编写多线程程序需要包含头文件p ...

  9. 数据库文件*.sdf文件定时备份,但是大小的增量在不断增长的问题排查

    在某项目上,使用SQL Server数据库,现场反馈每天定时备份数据库文件,每天的数据量是400多个申请单的量.之前每天增长量是50M,但是后来两天增长量是80M,每天的数据量差不多. 到底从什么地方 ...

  10. Python2/3中的urllib库

    urllib库对照速查表 Python2.X Python3.X urllib urllib.request, urllib.error, urllib.parse urllib2 urllib.re ...