1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

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

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

我是本际云服务器推荐网的小编小本本。最近要迁移客户的一套数据库,数据量比较大,源端表空间也比较多,建库完成后,创建表空间也是个花时间的活,就想着偷点懒,写个简单的脚本实现,反正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 like '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
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
fi

因为环境很干净,所以没有考虑更多的复杂情况,实现的逻辑就是如果仅需一个数据文件,那就使用创建表空间指定一个数据文件的语句,如果需要多个表空间,就先创建表空间并指定一个数据文件,然后把count数减一,作为循环的次数往这个表空间里添加数据文件即可。好了,这么一个简单的功能就实现了,后台跑起来!我得抓紧时间去干迁移的其他活了~

归纳总结

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

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5974.html