1. 程式人生 > >CentOS7 Oracle12c 靜默安裝

CentOS7 Oracle12c 靜默安裝

參考:

http://blog.51cto.com/12790274/2062955

https://blog.csdn.net/github_39294367/article/details/77057149

https://blog.csdn.net/sinat_41525226/article/details/78909706

https://blog.csdn.net/dbagaoshou/article/details/78964122

一、準備工作:

1.VM虛擬機器:

2.CentOS7 映像:

3.Oracle12c 安裝包:

4.Linux系統遠端工具

5.文字編輯工具

二、系統環境部署

1.新建虛擬機器,這裡設定的兩個虛擬硬碟屬於個人習慣,可以忽略,主要用於試驗;

2.安裝CentOS7系統,這裡安裝的是64位的系統

3.系統安裝時選擇的是最小安裝,使用的時候連 ifconfig 也用不了,正好把回顧一遍 yum 安裝相關知識

CentOS7 設定yum安裝的本地資源為光碟資源

CentOS7 ifconfig命令無法使用的解決辦法

CentOS7 修改設定靜態IP和DNS

【注意】修改IP和主機名,要設定一下HOSTS配置檔案,不然啟動oracle監聽和例項會比較慢

[[email protected]
~]# vi /etc/hosts # 增加資訊格式如下: IP地址 主機名

三、安裝Oracle資料庫系統

1.檢查oracle所需包 (以root身份操作) 

rpm -q binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.i686 libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686 libXtst libXtst*.i686 libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686  libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

 

2.安裝oracle依賴包(以root身份操作)  

yum install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.i686 libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686 libXtst libXtst*.i686 libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686  libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip
# 也可以分段執行,避免遺漏
yum install -y compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686
yum install -y glibc*.i686 glibc-devel glibc-devel*.i686
yum install -y ksh libaio*.i686 libaio-devel libaio-devel*.i686
yum install -y libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686
yum install -y libXtst libXtst*.i686 libgcc*.i686 libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686
yum install -y libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel
yum install -y gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

 

3.修改核心引數(參考的資料有這麼一段,考慮到這個是系統性能優化的設定,所以沒有做這一步)

[[email protected] ~]# vim /etc/sysctl.conf

#修改或新增以下內容
fs.aio-max-nr = 1048576  
fs.file-max = 6815744               // 設定最大開啟檔案數  
kernel.shmall = 16777216            // 共享記憶體的總量,8G記憶體設定:2097152*4k/1024/1024
kernel.shmmax = 34359738360         // 最大共享記憶體的段大小,G換算成k計算
kernel.shmmni = 4096                // 整個系統共享記憶體端的最大數  
kernel.sem = 250 32000 100 128  
net.ipv4.ip_local_port_range = 9000 65500        // 可使用的IPv4埠範圍  
net.core.rmem_default = 262144  
net.core.rmem_max = 4194304  
net.core.wmem_default = 262144  
net.core.wmem_max = 1048576

#
[[email protected] ~]# sysctl -p

# 檢查並生效
[[email protected] ~]# sysctl -a

4.建立使用者組和使用者(以root身份操作) 

[[email protected] ~]# groupadd oinstall
[[email protected] ~]# groupadd dba
[[email protected] ~]# groupadd oper
[[email protected] ~]# useradd -g oinstall -G dba,oper oracle
#修改使用者密碼
[[email protected] ~]# passwd oracle
或
[[email protected] ~]# echo "123456" | passwd --stdin oracle

5.建立相關目錄

[[email protected] ~]# mkdir /u01
[[email protected] ~]# mkdir -p /u01/app/oracle                 //oracle資料庫安裝目錄
[[email protected] ~]# mkdir -p /u01/app/oraInventory           //oracle資料庫配置檔案目錄
[[email protected] ~]# mkdir -p /u01/app/oracle/oradata         //存放資料庫的資料目錄
[[email protected] ~]# mkdir -p /u01/app/oracle/oradata_back    //存放資料庫備份檔案
[[email protected] ~]# chmod -R 775 /u01/app
[[email protected] ~]# chown -R oracle:oinstall /u01            //設定目錄所有者為oinstall使用者組的oracle使用者

6.修改etc/profile

if [ $USER = "oracle" ]; then  
        if [ $SHELL = "/bin/ksh" ]; then  
              ulimit -p 16384  
              ulimit -n 65536a  
        else  
              ulimit -u 16384 -n 65536  
        fi  
fi

7.修改/home/oracle/.bash_profile

#oracle資料庫安裝目錄
ORACLE_BASE=/u01/app/oracle
#oracle資料庫路徑
ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
#oracle啟動資料庫例項名
ORACLE_SID=orcl
#新增系統環境變數
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
#新增系統環境變數
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

# 該部分重要,後續錯誤一般是該步驟造成
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH
# 使配置生效
[[email protected] ~]# source /home/oracle/.bash_profile

8.配置Java環境

[[email protected] ~]# java -version                     # 檢視安裝版本
[[email protected] ~]# yum remove openjdk                # 如果是系統自帶的openjdk,則解除安裝
[[email protected] ~]# rpm -ivh jdk-8u191-linux-x64.rpm  # 安裝自己下載的JDK

  這裡要用到工具  ,把JDK安裝包上傳到虛擬機器,oracle安裝包也是用同樣的方法上傳,我是放到home目錄下,用完就可以刪掉。

9.解壓oracle安裝包,解壓後路徑:/u01/database

[[email protected] ~]# unzip linuxx64_12201_database.zip -d /u01        # 沒有unzip命令,則先安裝unzip

10.修改應答檔案,靜默安裝配置檔案路徑:/u01/database/response/db_install.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
# 30行 安裝型別,只裝資料庫軟體
oracle.install.option=INSTALL_DB_SWONLY
# 35行 使用者組
UNIX_GROUP_NAME=oinstall
# 42行 INVENTORY目錄(不填就是預設值)
INVENTORY_LOCATION=/u01/app/oraInventory
# 46行 oracle目錄
ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1
# 51行 oracle基本目錄
ORACLE_BASE=/u01/app/oracle
# 63行 oracle版本
oracle.install.db.InstallEdition=EE
# 80行
oracle.install.db.OSDBA_GROUP=dba
# 86行
oracle.install.db.OSOPER_GROUP=oper
# 91行 
oracle.install.db.OSBACKUPDBA_GROUP=dba
# 96行
oracle.install.db.OSDGDBA_GROUP=dba
# 101行
oracle.install.db.OSKMDBA_GROUP=dba
# 106行
oracle.install.db.OSRACDBA_GROUP=dba
# 180行 資料庫型別
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
# 185行
oracle.install.db.config.starterdb.globalDBName=orcl
# 190行
oracle.install.db.config.starterdb.SID=orcl
# 216行
oracle.install.db.config.starterdb.characterSet=AL32UTF8
# 384行
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
# 398行 設定安全更新(貌似是有bug,這個一定要選true,否則會無限提醒郵件地址有問題,終止安裝。PS:不管地址對不對)
DECLINE_SECURITY_UPDATES=true

可以使用 SecureFxPortable 工具把 db_install.rsp 檔案下載到本機,用 EditPlus 文字編輯工具修改,再上傳替換,這樣比較方便。

11.安裝Oracle資料庫軟體(以oracle使用者身份操作)

[[email protected] database]$ ./runInstaller -force -silent -noconfig -ignorePrereq -ignoreSysPreReqs -responseFile /u01/database/response/db_install.rsp

  可以邊裝邊檢視日誌,日誌檔案路徑在執行11的時候會給出

[[email protected] OraInstall2018-11-12_12-40-15am]$ tail –f installActions2018-11-12_12-40-15AM.log

安裝日誌截圖:

當出現上圖提示時,可以在產品清單目錄檢視安裝日誌

[[email protected] ~]$ tail –f/u01/app/oraInventory/logs/installActions2018-11-12_12-40-15AM.log

12.安裝成功後會提示如下圖命令,需要切換到root身份執行

[[email protected] ~]# /u01/app/oraInventory/orainstRoot.sh  
Changing permissions of /u01/app/oraInventory.  
Adding read,write permissions for group.  
Removing read,write,execute permissions for world.  
  
Changing groupname of /u01/app/oraInventory to oinstall.  
The execution of the script is complete.  
 
[[email protected] ~]# /u01/app/oracle/product/12.2.0/db_1/root.sh  
Check /u01/app/oracle/product/12.2.0/db_1/install/root_Oracle_2017-04-15_20-56-27-813321685.log for the output of root script

13.配置監聽,靜默安裝配置檔案路徑:/u01/database/response/netca.rsp

netca -silent -responsefile /u01/database/response/netca.rsp

   可以通過 netstat -tlnp 命令檢視監聽地址

netstat -tlnp
tcp  0   0 :::1521        :::*      LISTEN      5477/tnslsnr

14.修改dbca.rsp檔案,靜默安裝配置檔案路徑:/u01/database/response/dbca.rsp

# 21行 不可更改
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
# 32行 全域性資料庫名
gdbName=orcl
# 42行 系統識別符號
sid=orcl
# 52行
databaseConfigType=SI
# 74行
policyManaged=false
# 88行
createServerPool=false
# 127行
force=false
# 163行
createAsContainerDatabase=true
# 172行
numberOfPDBs=1
# 182行
pdbName=orclpdb
# 192行
useLocalUndoForPDBs=true
# 203行 庫密碼
pdbAdminPassword=********
# 223行
templateName=/u01/app/oracle/product/12.2.0/db_1/assistants/dbca/templates/General_Purpose.dbc
# 233行 超級管理員密碼
sysPassword=********
# 233行 管理員密碼
systemPassword=********
# 273行
emExpressPort=5500
# 284行
runCVUChecks=false
# 313行
omsPort=0
# 341行
dvConfiguration=false
# 391行
olsConfiguration=false
# 401行
datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/
# 411行
datafileDestination={ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/
# 421行
recoveryAreaDestination={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}
# 431行
storageType=FS
# 468行 字符集建立庫之後不可更改
characterSet=AL32UTF8
# 478行
nationalCharacterSet=AL16UTF16
# 488行
registerWithDirService=false
# 526行
listeners=LISTENER
# 546行
variables=DB_UNIQUE_NAME=orcl,ORACLE_BASE=/u01/app/oracle,PDB_NAME=,DB_NAME=orcl,ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1,SID=orcl
# 555行
initParams=undo_tablespace=UNDOTBS1,memory_target=796MB,processes=300,db_recovery_file_dest_size=2780MB,nls_language=AMERICAN,dispatchers=(PROTOCOL=TCP) (SERVICE=orclXDB),db_recovery_file_dest={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME},db_block_size=8192BYTES,diagnostic_dest={ORACLE_BASE},audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,nls_territory=AMERICA,local_listener=LISTENER_orcl,compatible=12.2.0,control_files=("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl", "{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/control02.ctl"),db_name=cdb1,audit_trail=db,remote_login_passwordfile=EXCLUSIVE,open_cursors=300
# 565行
sampleSchema=false
# 574行
memoryPercentage=40
# 584行
databaseType=MULTIPURPOSE
# 594行
automaticMemoryManagement=true
# 604行
totalMemory=0

15.建立資料庫例項,使用 dbca 命令(dbca是oracle命令,如果提示命令找不到,檢查環境變數)

[[email protected] response]$ dbca -silent -createDatabase -responseFile  /u01/database/response/dbca.rsp

16.檢查oracle程序狀態

ps -ef | grep ora_ | grep -v grep
lsnrctl status

17.資料庫例項的啟動和關閉

# 以 DBA 身份進入 sqlplus,檢視資料庫狀態
[[email protected] ~]$ sqlplus / as sysdba
SQL> select open_mode from v$database;             //檢視資料庫
SQL> select status from v$instance;                //檢視資料庫例項

# 以 DBA 身份進入 sqlplus,修改管理員使用者密碼
[[email protected] ~]$ sqlplus / as sysdba
SQL> alter user sys identified by ********;        //改sys超級管理員密碼
SQL> alter user system identified by ********;     //改system管理員密碼

# 以 DBA 身份進入 sqlplus,啟動資料庫
[[email protected] ~]$ sqlplus / as sysdba
SQL> startup

# 以 DBA 身份進入 sqlplus,關閉資料庫
[[email protected] ~]$ sqlplus / as sysdba
SQL> shutdown abort
或
SQL> shutdown immediate

18.修改oracle啟動配置檔案

完成oracle11g資料庫的安裝後,相關伺服器會自動啟用,但並不表示下次開機後oracle伺服器仍然可用。下面將介紹oracle的基本服務元件,以及如何編寫服務指令碼來控制oracle資料庫系統的自動執行。

根據上面的安裝過程,oracle11g的資料庫軟體將安裝在變數ORACLE_HOME所北定的位置。例如/opt/oracle/product/11.2.0/dbhome_1/,而各種伺服器元件程式(也包括sqlplus命令)正是位於其中的bin子目錄下。

Oracle11g資料庫的基本服務元件如下所述:(注:oracle服務元件最好以oracle使用者身份執行如:su - oracle)

lsnrctl:監聽器程式,用來提供資料庫訪問,預設監聽TCP 1521埠。

dbstart、dbshut:資料庫控制程式,用來啟動、停止資料庫例項。

emctl:管理器控制工具,用來控制OEM平臺的開啟與關閉,OEM平臺通過1158埠提供HTTPS訪問,5520埠提供TCP訪問。

為了方便執行oracle11g的服務元件程式,建議對所有使用者的環境配置作進一步的優化調整、補充PATH路徑、oracle終端型別等變數設定。除此以外,還應該修改/etc/oratab配置檔案,以便執行dbstart時自動啟用資料庫例項。

# 修改oratab配置如下,這樣就可以通過dbstart 啟動例項,也可以通過dbshut關閉例項。
[[email protected] ~]$ vim /etc/oratab

racl:/u01/app/oracle/product/12.2.0/db_1:Y  //把“N”改成“Y”

# 此時所有oracle的程序關閉,監聽器也停止。
[[email protected] ~]$ dbshut /u01/app/oracle/product/12.2.0/db_1/

# 啟動監聽器和例項。
[[email protected] ~]$ dbstart /u01/app/oracle/product/12.2.0/db_1/

# 檢視監聽狀態及資料庫狀態
[[email protected] ~]$ lsnrctl status

# 啟動監聽
[[email protected] ~]$ lsnrctl start

# 停止監聽
[[email protected] ~]$ lsnrctl stop

19.防火牆開放埠(以root身份操作)

# 開啟埠
[[email protected] ~]# firewall-cmd --zone=public --add-port=1521/tcp --permanent
# 重啟防火牆 (一般我們在開放完新的埠後,需要重新啟動防火牆)
[[email protected] ~]# firewall-cmd --reload

20.ORA-28040: 沒有匹配的驗證協議

  在 $ORACLE_HOME/network/admin/sqlnet.ora

  加入如下: 

  SQLNET.ALLOWED_LOGON_VERSION=8