使用sqlplus进行Oracle数据库批量自动发布
时间: 2019-09-10来源:OSCHINA
前景提要
【围观】麒麟芯片遭打压成绝版,华为亿元投入又砸向了哪里?>>>
应用系统的更新发布在企业日常运维中是一件比较常见工作,有文件的备份替换,也会有数据库方面的更新操作。本文介绍如何通过一台装有sqlplus工具的中转机对不同应用的Oracle数据库进行自动化发布。

经常遇到使用PL/SQL图形化工具对Oracle数据库进行相关的更新操作,例如程序包、触发器、存储过程、视图以及表中的数据。如果是单用户对单台数据库更新少量的内容,这个操作还可以接受,如果数据库服务器比较多,并且要切换不同的用户去更新大量的内容,这种方式就会比较低效繁琐,面对这种场景,实现后台自动化更新就很有必要。

如何通过一台sqlplus中转机对不同的Oracle数据库在后台完成更新示意如下:
规范要求
按照上图示意在后台完成数据库的发布更新需要一定的规范支持,简单来讲就是要让sqlplus工具能很明确的获取到以下几点信息:
更新时用什么账号去连接哪台服务器的哪个实例? 账号对应的密码应该如何传递给sqlplus命令? 更新的是程序包、存储过程还是视图? 多个更新之间是否有前后依赖关系?
更新文件的命名规范
通过sqlplus命令去连接Oracle数据库完成一次更新需要账号、密码、Oracle服务器的IP地址、侦听的端口、实例名、更新文件所在的路径,用法如下:

其中账号、IP地址、端口、实例名属于可公开的信息,这一部分内容可以连同更新次序和更新类型一起组织到文件名称中

例如【次序_账号_IP_实例名_XXX.类型】,示例:
01_admin_1.1.1.1_insA_package.pck
密码和相关信息储存
通过sqlplus进行数据库更新时用到的相关信息在本例中是储存在sqlplus中转机上,只有root账号可以获取到,并且密码是以密文的形式储存,密码的密文储存在以下路径的文件中(文件名是账号的密文): .XXX/.IP地址/.账号的密文 ,数据库实例名和端口号储存在以下路径中的文件中: .YYY/.IP地址/.实例名 ,整个路径只有root账号可以访问。示例如下:


发布过程
更新文件相关规范已经确定好,发布过程可以使用编写好的脚本(shell或bat等)轮询执行要更新的文件,从sqlplus中转机依次将内容更新到对应的Oracle服务器。

本例结合 嘉为蓝鲸应用发布 这款基于蓝鲸平台的SaaS将数据库发布过程流程化,调用发布脚本实现定时或实时更新,具体情况见下图:


无需逐个登录Oracle服务器,来回切换不同账号,更新过程中的日志如下图所示:



其它说明
本例通过sqlplus发布Oracle更新,需要有以下几个前提: 账号和密码信息要提前录入到sqlplus中转机(务必确保账号安全) Oracle服务器相关信息(IP、端口、实例名)也需要提前录入到sqlplus中转机 更新文件中的语法和符号必须规范(例如行尾的“;”号,包头包体结束位置的“/”)等等 数据库、sqlplus客户端的编码尽量保持一致。

作者: 徐晗

文章到此结束了~
想到中秋即将来临啦!有没有很期待呀~
在此先预祝大家 中秋节快乐 !

佳节好文
业务复杂、数据庞大、应用广怎办?了解下分布式事务的解决思路!
赣州银行增强科技创新,实现一键灾备切换
SaaS设计:自动化服务启停设计示例
这里有份选择云服务商的攻略,请查收…
如何设计大型集团一体化IT运维系统

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行