■ 陜西 王金國 解寶琦
編者按:Oracle作為企業級數據庫產品。目前依然是各大中型企業數據庫管理軟件的翹楚。本文以生產環境為應用場景。詳細闡述了CentOS7.5系統下Oracle 12C數據庫的安裝及補丁升級涉及的重點過程,包含了完整的數據庫日志模式啟用及全庫備份需要進行的配置,很好的滿足了生產環境對Oracle穩定性和日常備份的要求。
本實例所在的系統環境為:
操作系統:CentOS7.5;
數據庫版本:12.1.0.2.0;
主機名:Oracle 12C;
ORACLE_SID:Oracle12c;
容器數據庫:Oracle12cp db
因為操作系統安裝相關文章已經非常多了。筆者認為安裝Oracle數據庫的重點和難點在于操作系統環境準備部分以及補丁安裝部分,因此將略過操作系統安裝和數據庫安裝過程,重點詳細描述以上環境準備和補丁安裝內容。
1.安裝centos7.5,安裝過程中需要選擇gnome圖形桌面,并配置磁盤為LVM管理模式。便于未來數據增長后進行磁盤的動態擴展和管理。
2.操作系統參數配置及優化,使用vi/etc/sysctl.conf命令編輯/etc/sysctl.conf文 件,并在文件末尾增加如圖1所示。
fs.aiomax-nr參數Oracle默認設置為 1M 即 1048576,一般不用更改,其他參數具體詳解可以參考Oracle官方文檔。

圖1 具體命令
3.對Oracle用戶設置限制,提高軟件運行性能,通過命令vi etc/security/limits.conf編輯該文件,并加入如下內容:
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
4.關聯設置,通過命令vi /etc/pam.d/login,添加如下內容:
session required/lib64/security/pam_limits.so
session required pam_limits.so
5.設置環境變量,通過命令vi etc/profile添加如圖2所示。
6.添加數據庫服務主機名,通過命令vi /etc/hosts添加如下內容:
127.0.0.1 oracle12c oracle12c.localdomain
配置完成后重啟系統。

圖2 具體命令
7.通過命令集創建Oracle組,命令內容如下:
for group in oinstall dba backupdba oper dgdba kmdba; do
groupadd $group
; done
8.通過命令創建oracle用戶,命令內容如下:
useradd-g oinstall-G dba,oper,backupdba,dgdb a,kmdba -d
/home/oracle-m oracle
9.修改oracle用戶口令,命令如下:
passwd oracle
10.以oracle 用戶登陸系統,并使用如下命令vi~/.bash_profile編輯該文件,并添加如圖3所示內容。
11.創建CentOS7.5本地源,并使用命令安裝Oracle數據庫需要的基礎支持軟件組件包,命令內容:

圖3 具體命令
yum-y install binutils compat-libstdc++compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel glibc-headers ksh libaiodevel libstdc++-devel make sysstat unixODBCdevel binutils-* compatlibstdc++* elfutilslibelf* glibc* gcc-* libaio* libgcc*libstdc++* make* sysstat*unixODBC* wget unzip compat-libcap1.i686 compat-libcap1.x86_64
12.以oracle用戶上傳oracle12.1安裝文件,并進入解壓目錄執行./runInstaller進行數據庫軟件安裝。
1.下載補丁集及工具
按照Oracle的官方建議,用戶在使用Oracle數據庫產品時,應該將生產數據庫置于歸檔模式,同時最少需要安裝一個補丁集來確保Oracle數據庫在生產環境中的可靠性。按照官方建議我們通過Oracle訂閱可以下載如下數據庫系統補丁集:
p28259833_121020_Linux-x86-64.zip ####Database Patch Set Update 12.1.0.2.181016
p28440711_121020_Linux-x86-64.zip ####OJVM PATCH SET UPDATE 12.1.0.2.181016
同時因為數據庫安裝的默認opatch版本無法滿足以上補丁的要求,用戶需要下載如下opatch壓縮包進行opatch后續操作,opatch文件名如下:
p6880880_121010_Linux-x86-64.zip#### OPatch Version:12.2.0.1.16
下載完成后將該文件集上傳到服務器并應確保該文件集用戶和屬組為Oracle用戶屬組。
2.以Oracle登陸用戶,使用命令vi.bash_profile編輯文件,并將:$ORACLE_HOME/OPatch添加到PATH末尾,完整內容如下:
export PATH=$PATH:$HO ME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
3.使用命令mv$ORACLE_HOME/Opatch$ORACLE_HOME/Opatch.backup備份數據庫默認安裝的opatch。
4.進入文件所在目錄使用命令unzip p6880880_121010_Linux-x86-64.zip解壓該文件。
5.在當前目錄下使用命令mv opatch/ $ORACLE_HOME/將opatch目錄移動至$ORACLE_HOME目錄中。
6.以Oracle用戶執行sqlplus / as sysdba登入數據庫,并執行SHUTDOWN IMMEDIATE;關閉數據庫,并以oracle用戶執行lsnrctl stop終止數據庫監聽服務。
7.以命令cd
8.以命令opatch prereq CheckConflictAga instOHWithDetail -ph./&& opatch apply進行補丁升級。并以同樣的方法升級28259833補丁并等待完成。補丁安裝過程中會出現錯誤信息,查詢Oracle文檔該項內容可以忽略。
9.以oracle用戶執行sqlplus/as sysdba,并依次執行如下數據庫命令:
SQL>startup;
SQL>alter pluggable database oracle12cpdb open;
SQL>show pdbs;
10.使用命令cd $ORACL E_HOME/Opatch進 入$ORACLE_HOME/Opatch目錄,并執行如下命令:
./datapatch -verbose
11.關閉數據庫并重新啟動,使用如下SELECT命令查詢dba_registry_history數據
SQL> select comments from dba_registry_history;
系統返回如下信息:
RAN jvmpsu.sql
RDBMS_12.1.0.2.0DBPSU_LINUX.X64_161210
說明補丁升級成功。
因 為CentOS7系 列Linux操作系統已經開始使用systemd作為系統與服務管理器來替代早期的SysV,因此Oracle 12C安裝后需要手工編輯systemd啟動腳本來滿足數據庫自動啟動的需求。
1.使用命令vi /lib/systemd/system/oraclerdbms.service,編輯該文件,并增加如圖4所示。
2.使用命令systemctl daemon-reload; systemctl enable oracle-rdbms.service刷新systemd服務注冊,并將Oracle服務設置為開啟。
3.使用命令vi /etc/oratab,將文件內容修改如下:
oracle12c:/opt/oracle/12c:Y
完成后重啟服務器。
1.以Oracle用戶執行sqlplus/as sysdba,以此執行如下命令:
SQL>shutdown immediate;

圖4 具體命令

圖5 具體命令
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
SQL>alter pluggable database oracle12cpdb open;
SQL> select log_mode from v$database;
系統返回如下內容:
ARCHIVELOG
說明數據庫已經處于歸檔模式。
2.使用命令rman target/鏈接數據庫,并以此執行如下命令:
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO'/opt/oracle/oracle12cdbbackupfull/oracle12c/control%F.bak';
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 1024 M;
系統將開始自動備份數據庫控制文件。
3.以Oracle用 戶使用命令cd $ORACLE_BASE && mkdir oracle12cdbbackupfull &&cd oracle12cdbbackupfull/建立全庫備份目錄,并進入目錄使用命令vi dbfullbackup.rman編輯文件,內容如圖5所示。
4.在全庫備份目錄中使用命令vi oracle12cdbfullbackup.sh編輯文件,內容如圖6所示。
5.使用命令crontab -e編輯計劃計劃任務,添加如下內容:
0 3 * * * /opt/oracle/oracle12cdbbackupfull/oracle12cdbfullbackup.sh>/opt/oracle/oracle12cdbbackupfull/rman.log 2>&1
然后系統將在每日的凌晨3點鐘進行一次全庫的備份。
作為生產系統數據庫,用戶首先需要的是穩定可靠,Oracle 12C提供的容器特性具有很好的多租戶特性,但數據集中也帶來了另一個數據安全的問題:
過于集中的數據庫以及數據庫系統在單機狀態下很難保證其安全性,需要更好的雙機特性以及在線備份系統支持才能具有良好的數據安全性。
不過另一方面,本實例可以通過虛擬化主機方式建立模板主機來完成數據庫的快速部署和上線。在實時性要求不是特別嚴格的中小規模數據庫部署中使用該方法通過虛擬機模板方式部署Oracle 12C單實例容器數據庫,很容易實現快速部署,并具有良好的穩定性。

圖6 具體命令