應用系統的更新發布在企業平常運維中是一件比較常見工做,有文件的備份替換,也會有數據庫方面的更新操做。本文介紹如何經過一臺裝有sqlplus工具的中起色對不一樣應用的Oracle數據庫進行自動化發佈。sql
常常遇到使用PL/SQL圖形化工具對Oracle數據庫進行相關的更新操做,例如程序包、觸發器、存儲過程、視圖以及表中的數據。若是是單用戶對單臺數據庫更新少許的內容,這個操做還能夠接受,若是數據庫服務器比較多,而且要切換不一樣的用戶去更新大量的內容,這種方式就會比較低效繁瑣,面對這種場景,實現後臺自動化更新就頗有必要。shell
如何經過一臺sqlplus中起色對不一樣的Oracle數據庫在後臺完成更新示意以下:數據庫
按照上圖示意在後臺完成數據庫的發佈更新須要必定的規範支持,簡單來說就是要讓sqlplus工具能很明確的獲取到如下幾點信息:安全
更新時用什麼帳號去鏈接哪臺服務器的哪一個實例?
服務器
帳號對應的密碼應該如何傳遞給sqlplus命令?
運維
更新的是程序包、存儲過程仍是視圖?
分佈式
多個更新之間是否有先後依賴關係?
ide
經過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客戶端的編碼儘可能保持一致。
做者:徐晗
文章到此結束了~
想到中秋即未來臨啦!有沒有很期待呀~
在此先預祝你們中秋節快樂!