最新:XTTS系列之五:警惕大文件表空间
2023-07-06 06:34:46 来源:博客园
在上篇《XTTS系列之四:迷迷糊糊的并行度》验证之后,就让测试组在RMAN配置中设置好正确的并行。然后重新将备份任务执行,平均速度直接由之前的150MB/s提升为1200MB/s。优化效果非常明显,速度直接提升了8倍。但是由于用户的数据库存在大文件表空间,当执行到大文件表空间时,速度又降到150MB/s的速度,无法使用并行。
(资料图)
我们知道大文件表空间在11g引入了Multi-Section,可以通过指定section size来用到并行,但现在很尴尬的是:
目前xtts的封装Perl脚本是动态生成的RMAN备份命令,且未指定这个section size在RMAN配置中,也无法将section size指定为默认通道配置也就是说,就是无法用到并行。那用户还要继续要求优化速度,想想这该怎么办呢?
...
讨论阶段有合作伙伴提出让原厂来改脚本,这条路基本很难,不甘心可以去MOS提SR给后台要求,后续有机会我也会和公司反馈,当提这样需求的关键用户多了,在后续xtts版本就有希望会加入这个功能,但对于当下依然是远水解不了近渴。
既然改脚本不靠谱,那我们又该如何继续优化呢?
...
首先了解下目前客户大文件表空间情况:具体有多个大文件表空间,其中最大的那个大小在8T,其余几个加起来小于8T;此时庆幸还好不是1个,基于这个背景,workaround的方案就有了,使用当前xtts的perl脚本手工并行来做,分成3批,比如xtt1,xtt2,xtt3:
普通小文件表空间一批,对应xtt18T大文件表空间自己一批,对应xtt2其他大文件表空间一批,对应xtt3最后总时间理论就是备这个8T的时间,这个是最后的瓶颈,目前条件下没法再优化了。
那这种分批执行具体要怎么来做呢?
假设:
普通小文件表空间:TEST,JINGYU大文件表空间Part1:BG1大文件表空间Part2:BG2,BG3之前已有TEST,JINGYU表空间,现在模拟添加大文件表空间BG1,BG2,BG3:
SQL> create bigfile tablespace BG1 datafile "/flash/oradata/DEMO/fb6d1d5d4f0a245be0530b01a8c024da/datafile/bg1.dbf" size 2G;Tablespace created.SQL> create bigfile tablespace BG2 datafile "/flash/oradata/DEMO/fb6d1d5d4f0a245be0530b01a8c024da/datafile/bg2.dbf" size 1G;Tablespace created.SQL> create bigfile tablespace BG3 datafile "/flash/oradata/DEMO/fb6d1d5d4f0a245be0530b01a8c024da/datafile/bg3.dbf" size 1G;Tablespace created.
首先脚本直接拷贝新的3份出来:
[oracle@bogon ~]$ pwd/home/oracle[oracle@bogon ~]$ ls -ld xttdrwxr-xr-x. 3 oracle oinstall 4096 Jul 5 23:00 xtt[oracle@bogon ~]$ cp -rp xtt xtt1[oracle@bogon ~]$ cp -rp xtt xtt2[oracle@bogon ~]$ cp -rp xtt xtt3[oracle@bogon ~]$ ls -ld xtt*drwxr-xr-x. 3 oracle oinstall 4096 Jul 5 23:00 xttdrwxr-xr-x. 3 oracle oinstall 4096 Jul 5 23:00 xtt1drwxr-xr-x. 3 oracle oinstall 4096 Jul 5 23:00 xtt2drwxr-xr-x. 3 oracle oinstall 4096 Jul 5 23:00 xtt3
修改下配置文件:1)xtt是全部表空间的备份,不做任何拆分:
[oracle@bogon xtt]$ grep -vE "^#|^$" xtt.properties tablespaces=TEST,JINGYU,BG1,BG2,BG3platformid=13src_scratch_location=/flash/xttsdest_datafile_location=+DATADGdest_scratch_location=/xttsparallel=3rollparallel=2getfileparallel=4srcconnstr=sys/oracle@jingyudestconnstr=sys/oracle@jingyu
2)下面xtt1,xtt2,xtt3就是按我上面的策略做的拆分,3个部分加起来相当于上面全部的表空间:
[oracle@bogon xtt1]$ grep -vE "^#|^$" xtt.properties tablespaces=TEST,JINGYUplatformid=13src_scratch_location=/flash/xtts/xtt1dest_datafile_location=+DATADGdest_scratch_location=/xtts/xtt1parallel=3rollparallel=2getfileparallel=4srcconnstr=sys/oracle@jingyudestconnstr=sys/oracle@jingyu[oracle@bogon xtt2]$ grep -vE "^#|^$" xtt.properties tablespaces=BG1platformid=13src_scratch_location=/flash/xtts/xtt2dest_datafile_location=+DATADGdest_scratch_location=/xtts/xtt2parallel=3rollparallel=2getfileparallel=4srcconnstr=sys/oracle@jingyudestconnstr=sys/oracle@jingyu[oracle@bogon xtt3]$ grep -vE "^#|^$" xtt.properties tablespaces=BG2,BG3platformid=13src_scratch_location=/flash/xtts/xtt3dest_datafile_location=+DATADGdest_scratch_location=/xtts/xtt3parallel=3rollparallel=2getfileparallel=4srcconnstr=sys/oracle@jingyudestconnstr=sys/oracle@jingyu
我这里实测src_scratch_location最开始都是设置的/flash/xtts
,是可以的。但为了更好区分每个部分,建议选择分开不同目录。另外在分了任务之后,就需要特别注意TMPDIR的设置了,因为每次不一样,我这里设计都是对应xtts脚本目录中的tmp目录下:
所有表空间使用一个perl脚本一起备份:
# xtt_full:export TMPDIR=/home/oracle/xtt/tmp$ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME INPUT_MB OUTPUT_MB SECONDS----------- -------------------- -------------------- ------------------- ------------------- ---------- ---------- ---------- 5097 DATAFILE FULL COMPLETED 2023-07-05 23:26:31 2023-07-05 23:26:47 2,048.00 2,048.00 16 5099 DATAFILE FULL COMPLETED 2023-07-05 23:26:50 2023-07-05 23:26:58 1,024.00 1,024.00 8 5101 DATAFILE FULL COMPLETED 2023-07-05 23:27:00 2023-07-05 23:27:16 2,048.00 2,048.00 16 5103 DATAFILE FULL COMPLETED 2023-07-05 23:27:19 2023-07-05 23:27:35 2,048.00 2,048.00 16
2023-07-05 23:26:31 到 2023-07-05 23:27:35共备份7G的文件,耗时1分零4秒。
表空间按我之前说的策略拆分,每个perl脚本对应一部分任务,分别开启备份:
# xtt_part1:export TMPDIR=/home/oracle/xtt1/tmp$ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3# xtt_part2:export TMPDIR=/home/oracle/xtt2/tmp$ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3# xtt_part3:export TMPDIR=/home/oracle/xtt3/tmp$ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3
这里直接开三个窗口同时执行,观察RMAN的运行情况:
SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME INPUT_MB OUTPUT_MB SECONDS----------- -------------------- -------------------- ------------------- ------------------- ---------- ---------- ---------- 5105 DATAFILE FULL RUNNING 2023-07-05 23:31:39 2023-07-05 23:31:53 2,048.00 2,048.00 14 5106 DATAFILE FULL RUNNING 2023-07-05 23:31:41 2023-07-05 23:31:53 1,024.00 1,024.00 12 5109 DATAFILE FULL RUNNING 2023-07-05 23:31:45 2023-07-05 23:31:53 2,048.00 2,048.00 8
运行完之后:
SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME INPUT_MB OUTPUT_MB SECONDS----------- -------------------- -------------------- ------------------- ------------------- ---------- ---------- ---------- 5105 DATAFILE FULL COMPLETED 2023-07-05 23:31:39 2023-07-05 23:32:05 2,048.00 2,048.00 26 5106 DATAFILE FULL COMPLETED 2023-07-05 23:31:41 2023-07-05 23:32:07 1,024.00 1,024.00 26 5109 DATAFILE FULL COMPLETED 2023-07-05 23:31:45 2023-07-05 23:32:11 2,048.00 2,048.00 26 5112 DATAFILE FULL COMPLETED 2023-07-05 23:32:09 2023-07-05 23:32:25 1,024.00 1,024.00 16 5114 DATAFILE FULL COMPLETED 2023-07-05 23:32:14 2023-07-05 23:32:31 1,024.00 1,024.00 17
2023-07-05 23:31:39 到 2023-07-05 23:32:31这种采用拆分xtts任务的方式,手工并行备份7G的文件,耗时52秒。
因为我这里测试环境资源有限,并行多个perl脚本的提升还不够明显,但即使这样也能看到有提升。注意观察RMAN运行情况时,我特意截取了执行中的一个状态,实际从STATUS中三个同时RUNNING的状态,就可以知道,并行多个perl脚本可以让之前等待串行的大文件能够先并行和其他任务一起跑起来,这必然就会提升效率了。
附:本文中查询RMAN运行情况SQL如下:
set lines 180 pages 200 COL INPUT_TYPE FORMAT a20COL STATUS FORMAT a20COL minutes FORMAT 999.999COL Input_mb FORMAT 99,999.99COL Output_mb FORMAT 99,999.99SELECT SESSION_KEY, INPUT_TYPE, STATUS,TO_CHAR(START_TIME,"yyyy-mm-dd hh24:mi:ss") start_time,TO_CHAR(END_TIME,"yyyy-mm-dd hh24:mi:ss") end_time,INPUT_BYTES/1024/1024 Input_mb,OUTPUT_BYTES/1024/1024 Output_mb,ELAPSED_SECONDS SecondsFROM V$RMAN_BACKUP_JOB_DETAILSORDER BY SESSION_KEY;
最后留给大家一个思考题,如果说你有客户使用XTTS方案迁移,但其数据库中就只有一个大文件表空间,这种情况你会如何做呢?
关键词:
为你推荐
-
最新:XTTS系列之五:警惕大文件表空间
-
AI 大模型没有商业模式?_世界热推荐
-
请问怎么挑墨鱼仔?
-
李玟去世震惊外界!婚姻失败疾病缠身,去世当天还在鼓励自己 每日速讯
-
天天热文:手工酸奶宣传文案_手工酸奶
-
赴港投保火爆 香港经纪公司高薪招内地代理人 佣金最高84%|每日热点
-
兰州机场到兰州西站高铁多长时间(兰州机场到兰州西站)-关注
-
被黎明耽误的「狠女人」,来复仇了-天天速递
-
关于烟的古诗有哪些 6.关于抽烟的诗句-精选
-
平高电气:上半年净利润同比预增185%左右|全球即时看
-
环球时讯:uninstall功能介绍(uninstaller)
-
美团第四代无人机亮相:最大载重 2.5kg,满载 10km 外卖配送
-
每日短讯:7月5日西南地区乙醇市场行情平稳整理
-
被撞仍负全责 教训太深刻
-
当前通讯!1879年中国第一家商办银行(1879年)
-
图片报:拜仁遭欧足联财务部门突击检查 拜仁CEO表示虽然麻烦但是支持
-
兼具传播性和可读性!“中国创造故事”丛书部分书目越南语版正式出版
-
带通滤波器原理_带通滤波器原理是什么-焦点观察
-
中粮糖业:7月4日融资买入1630.9万元,融资融券余额8.07亿元
-
暑期“研学旅行风”盛行 在中国多地持续升温 全球要闻
推荐内容
- 最新:XTTS系列之五:警惕大文件表空间
- AI 大模型没有商业模式?_世界热推荐
- 请问怎么挑墨鱼仔?
- 李玟去世震惊外界!婚姻失败疾病缠身,去世当天还
- 天天热文:手工酸奶宣传文案_手工酸奶
- 赴港投保火爆 香港经纪公司高薪招内地代理人 佣
- 兰州机场到兰州西站高铁多长时间(兰州机场到兰州
- 被黎明耽误的「狠女人」,来复仇了-天天速递
- 关于烟的古诗有哪些 6.关于抽烟的诗句-精选
- 平高电气:上半年净利润同比预增185%左右|全球即
- 环球时讯:uninstall功能介绍(uninstaller)
- 美团第四代无人机亮相:最大载重 2.5kg,满载 1
- 每日短讯:7月5日西南地区乙醇市场行情平稳整理
- 被撞仍负全责 教训太深刻
- 当前通讯!1879年中国第一家商办银行(1879年)
- 图片报:拜仁遭欧足联财务部门突击检查 拜仁CEO
- 兼具传播性和可读性!“中国创造故事”丛书部分书
- 带通滤波器原理_带通滤波器原理是什么-焦点观察
- 中粮糖业:7月4日融资买入1630.9万元,融资融券余
- 暑期“研学旅行风”盛行 在中国多地持续升温 全
- 天山铝业(002532)7月4日主力资金净卖出2230.32
- 天天播报:宝山区发出首批体育类校外培训机构办学
- 公安部特勤局新式警服(公安部警卫局改特勤局)
- AI带货,卷不死真人主播
- 云内动力:目前公司国六B标准发动机已实现批量销
- 天天速递!苹果app下载不了软件需要验证(苹果app
- 日均交易增长超16倍 “债券通”交出6年运行成绩单
- 大麦因擅自出售演出门票 被行政处罚5000元
- here we go!罗马诺:弗拉泰西将加盟国米,转会
- 谢允的真实身份千岁忧_谢允的真实身份 世界独家
- 如绚烂烟火,红安傍晚天空美出天际!
- 替代贝林?官方:多特签22岁德国国脚,3000万欧签
- 视讯!属虎2015年运势(属虎2015年运势怎么样)
- 打印0x0000006ba_000006ba
- 何不食肉糜这句话的来历(何不食肉糜)
- 伟思医疗:二代精康磁产品预计下半年启动FDA注册
- “2023唐山·梨园唱响”戏曲文化大赛启动|新视野
- 焦点热门:老挝中央航空_关于老挝中央航空介绍
- 112名律师加盟北京丰台“普法茶亭” 前沿资讯
- 预售价150万,宝马XM 50e/Label Red限量500台 天天动态
油气
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
经济
-
中新网通辽10月18日电 (记者 张林虎)18日,记者从内蒙古自治区通辽市奈曼旗公安局获悉,国家一级保护动物--梅花鹿误入当地村民羊群,
-
中新网杭州10月18日电 (王题题 胡燕婕)云天收夏色,浅秋正渐浓。10月18日,浙江杭州市西湖游船有限公司推出的惠民多站点“西湖环湖游
-
中新网福州10月18日电 (记者 龙敏 王东明)福州市晋安区官方18日晚间通报,18日14时47分,晋安区岳峰镇化工路爱摩轮商业广场项目摩天
-
中新网兰州10月18日电 (闫姣 艾庆龙 吉翔)“红山白土头,黄河向西流。”不少人疑问,天下黄河向东流,为何甘肃永靖县这段黄河却向西
-
中新网北京10月18日电 《清华城市健康设施指数》18日在北京发布。报告成果显示,城市健康设施指数领先城市以中心城市和东部沿海城市