作者:mwj818 时间:2020-01-01 微信:神游九州
最近几个月才接手,来维护中间件和数据库的升级事宜,可以说是从项目管理到软件修理工吧。手里掌管着一、二十个应用及数据库的运维管理,是个头大的事情。而且总感觉工具不顺手,在为软件应用及数据库升级脚本的时候,维护不到位是个很烦心的事。
为此,我在网上没有少找度娘来帮忙。可时,有时,并不能什么都能垂手而得。需要根据已有的参考资料来自己思考加工,而获得自己想要的功能。
这不,我那个调离此项目的同事为项目运维而设计的工具又不干活了,罢工了。为此,我不得不自己到网上搜索用shell下编写脚本来完成既定的任务。
度娘让我在简书上,找到了【SqlPlus 批量执行sql脚本】https://www.jianshu.com/p/b3bcd836a6b3,但是,那个是对单一数据库进行脚本升级的例子。而我需要的是【多数据库,多脚本,导入的脚本】。怎么样能达到我需要的功能呢?继续努力搜索吧。我想:既然这个例子是for循换来完成一个数据库的多个脚本遍历执行。那么,我或许也可以在此基础上加工一下,来为我所用呐!!!
我请教其他同事,希望他们能帮我改改。脚本传过去了,没有回复!!!等了良久,没有人能帮忙!!!或许别人会,但不想费那功夫吧。不得而知,那就自力更生,丰衣足食吧。
for循换,搜索!!!
例子:
(图1)太多了,不合适!再找。
图2这个好像有点意思。结合我的实际情况,我可以把多个数据库的登录串,写到一个文本里。逐行读取显示出来利用?!你想到了吗?如下:
1、username/password@oracle_ip/instance_name
2、username/password@oracle_ip/instance_name
3、username/password@oracle_ip/instance_name
4、username/password@oracle_ip/instance_name
5、username/password@oracle_ip/instance_name
6、username/password@oracle_ip/instance_name
7、username/password@oracle_ip/instance_name
8、username/password@oracle_ip/instance_name
... ...等等好的行。
1、*.sql
2、*.sql
3、*.sql
sql文件放在特定的目录下,比如 /temp下,... ...等等。
把代码变个样吧(图3),或许更好理解一些。
再把数据库串写到一个文件里,命名为sql_file.txt。再试试上面的代码,能不能读出来!?图4.
而我需要的格式,应该是这样的(图5)。
把前两个图3和图4的两个for循换结合一下,看看(图6)。
结果(图7)显示:
正是我所需要的格式。哈哈!!!大功即将告成。
把 sqlplus /nolog, conn 和 exit 加上,就算告成。
亲,你们看懂了嘛???