■ 陜西 王金國(guó) 解寶琦
編者按:Oracle作為企業(yè)級(jí)數(shù)據(jù)庫(kù)產(chǎn)品。目前依然是各大中型企業(yè)數(shù)據(jù)庫(kù)管理軟件的翹楚。本文以生產(chǎn)環(huán)境為應(yīng)用場(chǎng)景。詳細(xì)闡述了CentOS7.5系統(tǒng)下Oracle 12C數(shù)據(jù)庫(kù)的安裝及補(bǔ)丁升級(jí)涉及的重點(diǎn)過(guò)程,包含了完整的數(shù)據(jù)庫(kù)日志模式啟用及全庫(kù)備份需要進(jìn)行的配置,很好的滿足了生產(chǎn)環(huán)境對(duì)Oracle穩(wěn)定性和日常備份的要求。
本實(shí)例所在的系統(tǒng)環(huán)境為:
操作系統(tǒng):CentOS7.5;
數(shù)據(jù)庫(kù)版本:12.1.0.2.0;
主機(jī)名:Oracle 12C;
ORACLE_SID:Oracle12c;
容器數(shù)據(jù)庫(kù):Oracle12cp db
因?yàn)椴僮飨到y(tǒng)安裝相關(guān)文章已經(jīng)非常多了。筆者認(rèn)為安裝Oracle數(shù)據(jù)庫(kù)的重點(diǎn)和難點(diǎn)在于操作系統(tǒng)環(huán)境準(zhǔn)備部分以及補(bǔ)丁安裝部分,因此將略過(guò)操作系統(tǒng)安裝和數(shù)據(jù)庫(kù)安裝過(guò)程,重點(diǎn)詳細(xì)描述以上環(huán)境準(zhǔn)備和補(bǔ)丁安裝內(nèi)容。
1.安裝centos7.5,安裝過(guò)程中需要選擇gnome圖形桌面,并配置磁盤為L(zhǎng)VM管理模式。便于未來(lái)數(shù)據(jù)增長(zhǎng)后進(jìn)行磁盤的動(dòng)態(tài)擴(kuò)展和管理。
2.操作系統(tǒng)參數(shù)配置及優(yōu)化,使用vi/etc/sysctl.conf命令編輯/etc/sysctl.conf文 件,并在文件末尾增加如圖1所示。
fs.aiomax-nr參數(shù)Oracle默認(rèn)設(shè)置為 1M 即 1048576,一般不用更改,其他參數(shù)具體詳解可以參考Oracle官方文檔。
圖1 具體命令
3.對(duì)Oracle用戶設(shè)置限制,提高軟件運(yùn)行性能,通過(guò)命令vi etc/security/limits.conf編輯該文件,并加入如下內(nèi)容:
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.關(guān)聯(lián)設(shè)置,通過(guò)命令vi /etc/pam.d/login,添加如下內(nèi)容:
session required/lib64/security/pam_limits.so
session required pam_limits.so
5.設(shè)置環(huán)境變量,通過(guò)命令vi etc/profile添加如圖2所示。
6.添加數(shù)據(jù)庫(kù)服務(wù)主機(jī)名,通過(guò)命令vi /etc/hosts添加如下內(nèi)容:
127.0.0.1 oracle12c oracle12c.localdomain
配置完成后重啟系統(tǒng)。
圖2 具體命令
7.通過(guò)命令集創(chuàng)建Oracle組,命令內(nèi)容如下:
for group in oinstall dba backupdba oper dgdba kmdba; do
groupadd $group
; done
8.通過(guò)命令創(chuàng)建oracle用戶,命令內(nèi)容如下:
useradd-g oinstall-G dba,oper,backupdba,dgdb a,kmdba -d
/home/oracle-m oracle
9.修改oracle用戶口令,命令如下:
passwd oracle
10.以oracle 用戶登陸系統(tǒng),并使用如下命令vi~/.bash_profile編輯該文件,并添加如圖3所示內(nèi)容。
11.創(chuàng)建CentOS7.5本地源,并使用命令安裝Oracle數(shù)據(jù)庫(kù)需要的基礎(chǔ)支持軟件組件包,命令內(nèi)容:
圖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安裝文件,并進(jìn)入解壓目錄執(zhí)行./runInstaller進(jìn)行數(shù)據(jù)庫(kù)軟件安裝。
1.下載補(bǔ)丁集及工具
按照Oracle的官方建議,用戶在使用Oracle數(shù)據(jù)庫(kù)產(chǎn)品時(shí),應(yīng)該將生產(chǎn)數(shù)據(jù)庫(kù)置于歸檔模式,同時(shí)最少需要安裝一個(gè)補(bǔ)丁集來(lái)確保Oracle數(shù)據(jù)庫(kù)在生產(chǎn)環(huán)境中的可靠性。按照官方建議我們通過(guò)Oracle訂閱可以下載如下數(shù)據(jù)庫(kù)系統(tǒng)補(bǔ)丁集:
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
同時(shí)因?yàn)閿?shù)據(jù)庫(kù)安裝的默認(rèn)opatch版本無(wú)法滿足以上補(bǔ)丁的要求,用戶需要下載如下opatch壓縮包進(jìn)行opatch后續(xù)操作,opatch文件名如下:
p6880880_121010_Linux-x86-64.zip#### OPatch Version:12.2.0.1.16
下載完成后將該文件集上傳到服務(wù)器并應(yīng)確保該文件集用戶和屬組為Oracle用戶屬組。
2.以O(shè)racle登陸用戶,使用命令vi.bash_profile編輯文件,并將:$ORACLE_HOME/OPatch添加到PATH末尾,完整內(nèi)容如下:
export PATH=$PATH:$HO ME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
3.使用命令mv$ORACLE_HOME/Opatch$ORACLE_HOME/Opatch.backup備份數(shù)據(jù)庫(kù)默認(rèn)安裝的opatch。
4.進(jìn)入文件所在目錄使用命令unzip p6880880_121010_Linux-x86-64.zip解壓該文件。
5.在當(dāng)前目錄下使用命令mv opatch/ $ORACLE_HOME/將opatch目錄移動(dòng)至$ORACLE_HOME目錄中。
6.以O(shè)racle用戶執(zhí)行sqlplus / as sysdba登入數(shù)據(jù)庫(kù),并執(zhí)行SHUTDOWN IMMEDIATE;關(guān)閉數(shù)據(jù)庫(kù),并以oracle用戶執(zhí)行l(wèi)snrctl stop終止數(shù)據(jù)庫(kù)監(jiān)聽(tīng)服務(wù)。
7.以命令cd
8.以命令opatch prereq CheckConflictAga instOHWithDetail -ph./&& opatch apply進(jìn)行補(bǔ)丁升級(jí)。并以同樣的方法升級(jí)28259833補(bǔ)丁并等待完成。補(bǔ)丁安裝過(guò)程中會(huì)出現(xiàn)錯(cuò)誤信息,查詢Oracle文檔該項(xiàng)內(nèi)容可以忽略。
9.以oracle用戶執(zhí)行sqlplus/as sysdba,并依次執(zhí)行如下數(shù)據(jù)庫(kù)命令:
SQL>startup;
SQL>alter pluggable database oracle12cpdb open;
SQL>show pdbs;
10.使用命令cd $ORACL E_HOME/Opatch進(jìn) 入$ORACLE_HOME/Opatch目錄,并執(zhí)行如下命令:
./datapatch -verbose
11.關(guān)閉數(shù)據(jù)庫(kù)并重新啟動(dòng),使用如下SELECT命令查詢dba_registry_history數(shù)據(jù)
SQL> select comments from dba_registry_history;
系統(tǒng)返回如下信息:
RAN jvmpsu.sql
RDBMS_12.1.0.2.0DBPSU_LINUX.X64_161210
說(shuō)明補(bǔ)丁升級(jí)成功。
因 為CentOS7系 列Linux操作系統(tǒng)已經(jīng)開(kāi)始使用systemd作為系統(tǒng)與服務(wù)管理器來(lái)替代早期的SysV,因此Oracle 12C安裝后需要手工編輯systemd啟動(dòng)腳本來(lái)滿足數(shù)據(jù)庫(kù)自動(dòng)啟動(dòng)的需求。
1.使用命令vi /lib/systemd/system/oraclerdbms.service,編輯該文件,并增加如圖4所示。
2.使用命令systemctl daemon-reload; systemctl enable oracle-rdbms.service刷新systemd服務(wù)注冊(cè),并將Oracle服務(wù)設(shè)置為開(kāi)啟。
3.使用命令vi /etc/oratab,將文件內(nèi)容修改如下:
oracle12c:/opt/oracle/12c:Y
完成后重啟服務(wù)器。
1.以O(shè)racle用戶執(zhí)行sqlplus/as sysdba,以此執(zhí)行如下命令:
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;
系統(tǒng)返回如下內(nèi)容:
ARCHIVELOG
說(shuō)明數(shù)據(jù)庫(kù)已經(jīng)處于歸檔模式。
2.使用命令rman target/鏈接數(shù)據(jù)庫(kù),并以此執(zhí)行如下命令:
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;
系統(tǒng)將開(kāi)始自動(dòng)備份數(shù)據(jù)庫(kù)控制文件。
3.以O(shè)racle用 戶使用命令cd $ORACLE_BASE && mkdir oracle12cdbbackupfull &&cd oracle12cdbbackupfull/建立全庫(kù)備份目錄,并進(jìn)入目錄使用命令vi dbfullbackup.rman編輯文件,內(nèi)容如圖5所示。
4.在全庫(kù)備份目錄中使用命令vi oracle12cdbfullbackup.sh編輯文件,內(nèi)容如圖6所示。
5.使用命令crontab -e編輯計(jì)劃計(jì)劃任務(wù),添加如下內(nèi)容:
0 3 * * * /opt/oracle/oracle12cdbbackupfull/oracle12cdbfullbackup.sh>/opt/oracle/oracle12cdbbackupfull/rman.log 2>&1
然后系統(tǒng)將在每日的凌晨3點(diǎn)鐘進(jìn)行一次全庫(kù)的備份。
作為生產(chǎn)系統(tǒng)數(shù)據(jù)庫(kù),用戶首先需要的是穩(wěn)定可靠,Oracle 12C提供的容器特性具有很好的多租戶特性,但數(shù)據(jù)集中也帶來(lái)了另一個(gè)數(shù)據(jù)安全的問(wèn)題:
過(guò)于集中的數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)系統(tǒng)在單機(jī)狀態(tài)下很難保證其安全性,需要更好的雙機(jī)特性以及在線備份系統(tǒng)支持才能具有良好的數(shù)據(jù)安全性。
不過(guò)另一方面,本實(shí)例可以通過(guò)虛擬化主機(jī)方式建立模板主機(jī)來(lái)完成數(shù)據(jù)庫(kù)的快速部署和上線。在實(shí)時(shí)性要求不是特別嚴(yán)格的中小規(guī)模數(shù)據(jù)庫(kù)部署中使用該方法通過(guò)虛擬機(jī)模板方式部署Oracle 12C單實(shí)例容器數(shù)據(jù)庫(kù),很容易實(shí)現(xiàn)快速部署,并具有良好的穩(wěn)定性。
圖6 具體命令