Oracle数据库部分迁至闪存存储的实现方法
作者:AlfredZhao 发布时间:2024-01-26 11:22:31
环境: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参数值,增加对新目录的映射关系。
来源:https://www.cnblogs.com/jyzhao/p/8157170.html#2
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 矩阵增加行np.row_stack() 与 np.column_stack()import numpy as npa = np.array(
- 使用方法和步骤如下:step1检测是否已经启用ServiceBroker,检测方法:SelectDATABASEpRoPERTYEX(
- 本文实例讲述了python计算圆周率pi的方法。分享给大家供大家参考。具体如下:from sys import stdout scale =
- 路由原理在Tornado框架中,路由是指将请求的URL映射到对应的处理函数上,这个过程需要通过正则表达式来实现。Tornado使用了一种叫做
- 用numpy做矩阵运算时,少不了用到矩阵乘法。本文帮你迅速区分multiply, matmul和dot的区别。numpy官方文档中的说明:(
- 爬虫与反爬虫,这相爱相杀的一对,简直可以写出一部壮观的斗争史。而在大数据时代,数据就是金钱,很多企业都为自己的网站运用了反爬虫机制,防止网页
- 前言我们经常会与文件和目录打交道,对于这些操作python提供了一个os模块,里面包含了很多操作文件和目录的函数。在写一些系统脚本或者自动化
- 文件操作我们可以使用python来操作文件,比如读取文件内容、写入新的内容等,因为任何计算机文件的本质都是一些有不同后缀的字符组成的。pyt
- 一直在期待这本书,一直希望国内能有一本正视WEB标准,并且全面阐述WEB标准书籍。而这本书是我觉得国内最全面的一本关于WEB标准的书籍,这本
- 前言上机实践课程开始了,嗯,老师来了之后念了下PPT,然后说:开始做吧.........然后就开始了Python的GUI之路,以前没接触过P
- 本文主要介绍了OpenCV 图像对比度,具有一定的参考价值,感兴趣的可以了解一下实现原理图像对比度指的是一幅图像中明暗区域最亮的白和最暗的黑
- 如下所示:ljust(len,str)字符向左对齐,用str补齐长度rjust(len,str)字符向右对齐,用str补齐长度rjust(l
- 我们在学习Python的时候,除了用pip安装一些模块之外,有时候会从网站下载安装包下来安装,我也想要把我自己编写的模块做成这样的安装包,该
- 本来想等到IE8正式发布时再在blog中写段代码,用来提示IE6用户升级到IE8的,不过貌似IE 8已经RTM了,今天又正好看到这个“升级I
- 本文实例讲述了php+html5基于websocket实现聊天室的方法。分享给大家供大家参考。具体如下:html5的websocket 实现
- SQL Server 2005的新功能为动态管理对象,它们是在指定时间返回某个数据库实例的特殊状态信息的数据库视图或函数。这些对象允许数据库
- 本文实例讲述了Python中IPYTHON用法。分享给大家供大家参考。具体分析如下:1. 使用TAB补全功能2. 配置IPYTHON.ipy
- 如下所示:#!/usr/bin/python# -*- coding: UTF-8 -*- import osimport shutilde
- 什么是内存管理机制python中创建的对象的时候,首先会去申请内存地址,然后对对象进行初始化,所有对象都会维护在一个叫做refchain的双
- 各位大哥: 在javascript中如何取整?比如: var