shell如何shell 生成csv文件如下样式数据?

Linux_Shell讲义_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Linux_Shell讲义
上传于||文档简介
&&L​i​n​u​x​_​S​h​e​l​l​讲​义​.​d​o​c
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢打赏支付方式:
您看完此文章的心情是
已有人发表评论
当前热门文章
阅读更多:
阅读更多:
阅读更多:
看过本文的人还看过
一个文化艺术垂直电子商务网站。
一个文化艺术垂直电子商务网站。
在微软新发布的WindowsServer2016中除了ServerCore和GUI版本外,还新增了一个为
Citrix已发布最新当前版本(CR)XenApp和XenDesktop7.11,让我们来看看都有哪些新功
Citrix已发布最新当前版本(CR)XenApp和XenDesktop7.11,让我们来看看都有哪些新功
CopyRight (C)
网站名称 版权所有. All Rights Reserved.备案号:博客访问:
博文数量: 1007
注册时间:
认证徽章:
每日发文,或技术、或总结,偶有日间小事也以为记,谓之学习笔记,成年累月800多天,中间几乎没有间断,要旨只有一个:学习交流,共同进步 。
学习笔记精华整理,个人新书《Oracle DBA工作笔记》已开售,在京东,当当,亚马逊,淘宝,天猫均有售,欢迎选购。
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: Oracle
对于数据整合式迁移,基本就是小霸王的二合一,四合一,八合一这样的节奏,把几个尽可能相关业务的数据库中的数据整合到一个库里。彼此还是独立的schema,倒也是相安无事。
在这种整合式迁移中,比较让人纠结的部分就是性能不是排第一位,而是迁移前的准备比较琐碎。
如果环境中有大量的db link,那就好像蜘蛛网一般,每个环境之间都有着千丝万缕的联系,如果准备不当,出了一点小的差错,那可能就是伤筋动骨的影响了。或者环境中存在这大量的连接用户,有的环境关联业务多,连接用户可能几十上百个。这个时候准备脚本的时候就感觉非常的繁琐,比如在得到的用户创建语句前,首先要得到表空间的ddl,profile的ddl等。
有的环境存在大量的测试用户,或者临时用户,这些用户的数据可能因为历史的原因,已经无人认领了。但是里面又存在着一些数据,不迁移,怕隔一段时间发现问题就晚了,迁移的话,感觉这些数据可能占用了不少迁移的时间,有种鸡肋的感觉。
如果存在多套环境,得到了每套环境的表空间ddl,如果不加选择的导入目标环境,那么很有可能一部分表空间是重名的,为了严谨期间,还是需要事先做对比。
如果有一些环境需要迁移,而每次都需要走这些弯路,就可以脚本化来简化这部分工作,将来兵挡水来土掩。
所以鉴于此,就抽时间写了下面的shell脚本。脚本内容如下,大体的思路就是动态调用一些通用的检查项目,比如检查表空间,就会把源库,目标库的表空间做一个比对,如果在目标库不存在,就生成对应的ddl语句。在这个基础上进一步生成需要迁移的用户profile信息,用户的ddl语句和权限语句。更多的对象权限的信息则是计划通过dump的形式导入。
function check_ts
sqlplus -s $1 &&EOF
set pages 0
set feedback off
set linesize 100
col tablespace_name format a30
select tablespace_name from dba_
function gen_ts_ddl
sqlplus -s $1 &&EOF
set pages 0
set feedback off
set linesize 200
set long 99999
col TS_DDL format a150
exec dbms_metadata.set_transform_param( dbms_metadata.session_transform, 'STORAGE', FALSE);
select dbms_metadata.get_ddl('TABLESPACE', '$2')||';' TS_DDL
function check_user
sqlplus -s $1 &&EOF
set pages 0
set feedback off
set linesize 100
col tablespace_name format a30
select username from dba_
function gen_user_ddl
sqlplus -s $1 &&EOF
set pages 0
set feedback off
set linesize 200
set long 99999
col TS_DDL format a200
select dbms_metadata.get_ddl('PROFILE', profile)||';' TS_DDL from dba_profiles where profile in (select profile from dba_users where username=upper('$2')) and profile!='DEFAULT' and rownum&2;
select dbms_metadata.get_ddl('USER', '$2')||';' TS_DDL
--select dbms_metadata.get_granted_ddl('SYSTEM_GRANTS', '$2') TS_DDL
select dbms_metadata.get_granted_ddl('ROLE_GRANT', '$2') ||';'TS_DDL
--select dbms_metadata.get_granted_ddl('OBJECT_GRANT', '$2') TS_DDL
BASE_DIR='/home/oracle/data_mig'
if [[ -z $1 ]] || [[ -z $2 ]]; then
echo '***********************************************'
echo 'WARNING :Source And Target Conn details are Needed!'
echo '***********************************************'
source_alias=`echo $1|awk -F@ '{print $1"_"$2}'|awk -F\/ '{print $2}'`
target_alias=`echo $2|awk -F@ '{print $1"_"$2}'|awk -F\/ '{print $2}'`
function diff_run
opr_type=$1
check_${opr_type} $2 |sort& ${BASE_DIR}/source_${opr_type}_${source_alias}.lst
check_${opr_type} $3 |sort& ${BASE_DIR}/target_${opr_type}_${target_alias}.lst
diff ${BASE_DIR}/source_${opr_type}_${source_alias}.lst& ${BASE_DIR}/target_${opr_type}_${target_alias}.lst|grep \&|sed& -e 's/&//g' -e 's/ //g' & ${BASE_DIR}/target_${opr_type}_diff.lst
for tmp_opr_type in `cat ${BASE_DIR}/target_${opr_type}_diff.lst |awk '{print $1}'` ;
& echo "#"${tmp_opr_type}
& gen_${opr_type}_ddl $2 ${tmp_opr_type}
diff_run ts $1 $2
diff_run user $1& $2
比如运行脚本
sh data_mig_pre.sh xxxx/xxx@source xxxx/xxx@target
得到的结果如下,包含表空间,profile信息,用户的ddl和权限语句等,看起来着实简化了不少,而且可以随时生成。
#ORDERMOB_INDEX
& CREATE TABLESPACE "ORDERMOB_INDEX" DATAFILE
& '/U01/app/oracle/oradata/ordermob0/ordermob_index01.dbf' SIZE
& AUTOEXTEND ON NEXT
MAXSIZE 32767M
& LOGGING ONLINE PERMANENT BLOCKSIZE 8192
& EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
&NOCOMPRESS& SEGMENT SPACE MANAGEMENT AUTO
&& ALTER DATABASE DATAFILE
& '/U01/app/oracle/oradata/ordermob0/ordermob_index01.dbf' RESIZE ;
&& CREATE PROFILE "PF_APP_ORDERMOB_STAT"
&&&&&&&& COMPOSITE_LIMIT DEFAULT
&&&&&&&& SESSIONS_PER_USER 50
&&&&&&&& CPU_PER_SESSION DEFAULT
&&&&&&&& CPU_PER_CALL DEFAULT
&&&&&&&& LOGICAL_READS_PER_SESSION DEFAULT
&&&&&&&& LOGICAL_READS_PER_CALL DEFAULT
&&&&&&&& IDLE_TIME DEFAULT
&&&&&&&& CONNECT_TIME DEFAULT
&&&&&&&& PRIVATE_SGA DEFAULT
&&&&&&&& FAILED_LOGIN_ATTEMPTS DEFAULT
&&&&&&&& PASSWORD_LIFE_TIME DEFAULT
&&&&&&&& PASSWORD_REUSE_TIME DEFAULT
&&&&&&&& PASSWORD_REUSE_MAX DEFAULT
&&&&&&&& PASSWORD_VERIFY_FUNCTION DEFAULT
&&&&&&&& PASSWORD_LOCK_TIME DEFAULT
&&&&&&&& PASSWORD_GRACE_TIME DEFAULT ;
&& CREATE USER "APP_ORDERMOB_STAT" IDENTIFIED BY VALUES 'xxxx'
&&&&& DEFAULT TABLESPACE "USERS"
&&&&& TEMPORARY TABLESPACE "TEMP"
&&&&& PROFILE "PF_APP_ORDERMOB_STAT";
&& GRANT "CONNECT" TO "APP_ORDERMOB_STAT";
阅读(7617) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。君,已阅读到文档的结尾了呢~~
SHELL命令格式如下 本文档属于精品文档、课件类技术资料,转载请联系作者
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
SHELL命令格式如下
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口浏览器不支持嵌入式框架,或被配置为不显示嵌入式框架。}

我要回帖

更多关于 shell.dat生成专用器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信