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 安裝相關知識
【注意】修改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