最近要迁移客户的一套数据库,数据量比较大,源端表空间也比较多,建库完成后,创建表空间也是个花时间的活,就想着偷点懒,写个简单的脚本实现,反正ASM环境,最麻烦的文件路径问题也不是事儿嘛~
因为ASM环境路径只需指定到磁盘组即可,所以只需要一个简单的判断循环,就可以后台跑脚本来自动创建表空间,添加数据文件了。这边现场的数据库文件大小一般为32764m,我们根据源端表空间的大小和使用率,得出所需的数据文件个数作为参数文件就可以了。
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; |
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 tablespace $space_name datafile +DATA_DG1 size 32764m autoextend off; disconnect exit EOF else sqlplus / as sysdba < 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 < alter tablespace $space_name add datafile +DATA_DG1 size 32764m autoextend off; disconnect exit EOF done fi done |
因为环境很干净,所以没有考虑更多的复杂情况,实现的逻辑就是如果仅需一个数据文件,那就使用创建表空间制定一个数据文件的语句,如果需要多个表空间,就先创建表空间并指定一个数据文件,然后把count数减一,作为循环的次数往这个表空间里添加数据文件即可。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129953.html
摘要:问题九库控制文件扩展报错库的扩展报错,用的是裸设备,和还是原来大小,主库的没有报错,并且大小没有变,求解释。专家解答从报错可以看出,控制文件从个块扩展到个块时报错,而裸设备最大只支持个块,无法扩展,可以尝试将参数改小,避免控制文件报错。 链接描述引言 近期我们在DBASK小程序新关联了运维之美、高端存储知识、一森咖记、运维咖啡吧等数据领域的公众号,欢迎大家阅读分享。 问答集萃 接下来,...
每篇一句 胡适:多谈些问题,少聊些主义 前言 Spring MVC和MyBatis作为当下最为流行的两个框架,大家平时开发中都在用。如果你往深了一步去思考,你应该会有这样的疑问: 在使用Spring MVC的时候,你即使不使用注解,只要参数名和请求参数的key对应上了,就能自动完成数值的封装 在使用MyBatis(接口模式)时,接口方法向xml里的SQL语句传参时,必须(当然不是100%的必须,...
摘要:作用是将标准输入中的所有大写字母转换为响应的小写字母。的移植过的源代码是在源代码目录下编译的,所以源代码目录等于目标文件目录,所以条件不满足,将执行分支的代码。 一个嵌入式产品的开发阶段,需要不断地把bootloader下载到存储器中,如果存储器使用nand flash,但是...
阅读 1250·2023-01-11 13:20
阅读 1559·2023-01-11 13:20
阅读 1013·2023-01-11 13:20
阅读 1680·2023-01-11 13:20
阅读 3972·2023-01-11 13:20
阅读 2520·2023-01-11 13:20
阅读 1356·2023-01-11 13:20
阅读 3486·2023-01-11 13:20