资讯专栏INFORMATION COLUMN

迁移时ASM环境下自动创建表空间

IT那活儿 / 2883人阅读
迁移时ASM环境下自动创建表空间

事情来由

最近要迁移客户的一套数据库,数据量比较大,源端表空间也比较多,建库完成后,创建表空间也是个花时间的活,就想着偷点懒,写个简单的脚本实现,反正ASM环境,最麻烦的文件路径问题也不是事儿嘛~


思路梳理

因为ASM环境路径只需指定到磁盘组即可,所以只需要一个简单的判断循环,就可以后台跑脚本来自动创建表空间,添加数据文件了。这边现场的数据库文件大小一般为32764m,我们根据源端表空间的大小和使用率,得出所需的数据文件个数作为参数文件就可以了。


实现方法

1.根据表空间使用大小或总大小编辑配置文件(去除系统表空间)

set line 300 pages 99

select a.tablespace_name,ceil(round(total,1)/32764) total_count,ceil(round(total-free,1)/32764) used_count from (select tablespace_name,sum(bytes)/(1024*1024) total from dba_data_files group by tablespace_name) a , (select tablespace_name,sum(bytes)/(1024*1024) free from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name(+) and a.tablespace_name not in (‘SYSTEM’,’SYSAUX’,’USER’) and a.tablespace_name not lile ‘UNDO%’   order by 3 desc;



2.修改脚本环境变量后执行

vi create_tbs.sh


source ~/.bash_profile

export ORACLE_SID=orcl –防止多实例数据库的情况

echo $ORACLE_SID

cat cfg_tablespace.txt|while read space_name TOTAL_COUNT USED_COUNT—可根据实际情况选择是用TOTAL_COUNT还是USED_COUNT,或者表空间的其他规划

do

if [ $USED_COUNT = "1" ]; then

sqlplus / as sysdba <>create_tbs.log

create tablespace $space_name datafile +DATA_DG1 size 32764m autoextend off;

disconnect

exit

EOF


else

sqlplus / as sysdba <>create_tbs.log

create tablespace $space_name datafile +DATA_DG1 size 32764m autoextend off;

disconnect

exit

EOF


USED_COUNT=`expr $USED_COUNT - 1`

echo $USED_COUNT

for i in `seq 1 $USED_COUNT`

do

sqlplus / as sysdba <>add_tbs_file.log

alter tablespace $space_name add datafile +DATA_DG1 size 32764m autoextend off;

disconnect

exit

EOF

done


fi


done

因为环境很干净,所以没有考虑更多的复杂情况,实现的逻辑就是如果仅需一个数据文件,那就使用创建表空间制定一个数据文件的语句,如果需要多个表空间,就先创建表空间并指定一个数据文件,然后把count数减一,作为循环的次数往这个表空间里添加数据文件即可。

好了,这么一个简单的功能就实现了,后台跑起来!我得抓紧时间去干迁移的其他活了~事情很多,能省点时间是一点。

归纳总结
运维被称为搬砖工作,主要也是有很多重复性的劳动,费时费力,还好我们有各种趁手的工具可以帮助我们减少这类工作。现在公司正在推进自动化运维,我个人感觉只要有好的思路,很多工作确实可以编辑脚本,最终由平台自动实现,而基础类的工作可以自动化之后,我们可以节省大量的时间在更多有意思的事情上面。


END


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129953.html

相关文章

  • 字节码及ASM使用

    摘要:字节码及使用什么是字节码机器码机器码是可直接解读的指令。字节码的执行操作,指的就是对当前栈帧数据结构进行的操作。动态链接每个栈帧指向运行时常量池中该栈帧所属的方法的引用,也就是字节码的发放调用的引用。 字节码及ASM使用 什么是字节码? 机器码机器码(machine code)是CPU可直接解读的指令。机器码与硬件等有关,不同的CPU架构支持的硬件码也不相同。 字节码字节码(byte...

    hearaway 评论0 收藏0
  • DBASK问答集萃第四期

    摘要:问题九库控制文件扩展报错库的扩展报错,用的是裸设备,和还是原来大小,主库的没有报错,并且大小没有变,求解释。专家解答从报错可以看出,控制文件从个块扩展到个块时报错,而裸设备最大只支持个块,无法扩展,可以尝试将参数改小,避免控制文件报错。 链接描述引言 近期我们在DBASK小程序新关联了运维之美、高端存储知识、一森咖记、运维咖啡吧等数据领域的公众号,欢迎大家阅读分享。 问答集萃 接下来,...

    SKYZACK 评论0 收藏0
  • 为何Spring MVC可获取到方法参数名,而MyBatis却不行?【享学Spring MVC】

    每篇一句 胡适:多谈些问题,少聊些主义 前言 Spring MVC和MyBatis作为当下最为流行的两个框架,大家平时开发中都在用。如果你往深了一步去思考,你应该会有这样的疑问: 在使用Spring MVC的时候,你即使不使用注解,只要参数名和请求参数的key对应上了,就能自动完成数值的封装 在使用MyBatis(接口模式)时,接口方法向xml里的SQL语句传参时,必须(当然不是100%的必须,...

    孙淑建 评论0 收藏0
  • 基于ARM处理器的U-BOOT详细移植总结

    摘要:作用是将标准输入中的所有大写字母转换为响应的小写字母。的移植过的源代码是在源代码目录下编译的,所以源代码目录等于目标文件目录,所以条件不满足,将执行分支的代码。         一个嵌入式产品的开发阶段,需要不断地把bootloader下载到存储器中,如果存储器使用nand flash,但是...

    zengdongbao 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<