活动与资讯

助力企业逐步实现自动化

活动与资讯

活动与资讯

助力企业逐步实现自动化

活动与资讯

关于嘉为

19年行业积淀,嘉为助力企业从运维走向运营

关于嘉为
搜索
搜索
搜索
/
/
/
使用sqlplus进行Oracle数据库批量自动发布

使用sqlplus进行Oracle数据库批量自动发布

2019-09-10 18:18

​​应用系统的更新发布在企业日常运维中是一件比较常见工作,有文件的备份替换,也会有数据库方面的更新操作。本文介绍如何通过一台装有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客户端的编码尽量保持一致。

二维码
广州总部 电话:020-38851616
深圳嘉为 电话:0755-83668518
北京嘉为 电话:010-88578622
上海嘉为 电话:021-61269880
© 2018 嘉为公司. All rights reserved. 粤ICP备19059200号
  • 嘉为
  • 嘉为
    嘉为
  • 嘉为

    服务热线:
    广州总部 020-38851616
    深圳嘉为 0755-83668518
    北京嘉为 010-88578622
    上海嘉为 021-61269880

  • 嘉为
  • 嘉为