1. 程式人生 > >linux環境下oracle 11g 靜默安裝

linux環境下oracle 11g 靜默安裝

linux環境下oracle 11g 靜默安裝
編寫人:黃寶康 編寫日期:2018-11-15

1、編寫目的

運維人士經常需要幹一些環境搭建的事,對於linux下安裝oracle,雖然說可以使用帶圖形介面的安裝,只需要設定oracle的安裝目錄,設定sid名稱,db_name例項名稱,下一步下一步式的安裝,涉及到的磁碟空間檢查及相關依賴,如果不符合條件,圖形介面都會給予相應提示,好處莫過於方便簡單。但是運維的人碰到遠端機器沒有圖形介面的linux系統,很有必要學會oracle的靜默安裝方式,掌握了此方法,不管是否有圖形介面都可以安裝成功,以達到一石二鳥的效果。

2、安裝環境

Linux伺服器:oracle linux 6.6 64位
Oracle伺服器:Oracle11gR2 64位

3、系統要求

記憶體:必須高於1G的實體記憶體
交換空間:一般為記憶體的2倍,例如:1G的記憶體可以設定swap 分割槽為3G大小
硬碟:5G以上

4、正式安裝

1)修改使用者的SHELL的限制,修改/etc/security/limits.conf檔案,將以下內容加入追加到檔案末尾。

oracle   soft    nproc    2047
oracle   hard    nproc    16384
oracle   soft    nofile     1024
oracle   hard    nofile    65536

2)修改/etc/pam.d/login 檔案,將以下內容加入該檔案。
注意,如果是linux64位,應該將lib改成lib64,否則重啟linux系統的時候會報module is unknown錯誤,導致系統都登入不了,解決方法可檢視我的博文https://blog.csdn.net/huangbaokang/article/details/82778629

session   required    /lib/security/pam_limits.so 
session   required    pam_limits.so

3)修改linux核心/etc/sysctl.conf檔案,將以下內容加入該檔案。

fs.file-max = 6815744 
fs.aio-max-nr = 1048576 
kernel.shmall = 2097152 
kernel.shmmax = 2147483648 
kernel.shmmni = 4096 
kernel.sem = 250 32000 100 128 
net.ipv4.ip_local_port_range = 9000 65500 
net.core.rmem_default = 4194304 
net.core.rmem_max = 4194304 
net.core.wmem_default = 262144 
net.core.wmem_max = 1048576

要使該檔案修改立即生效,要執行sysctl -p命令
4)修改/etc/profile檔案,設定oracle使用者的的最大程序數

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

5)建立oracle使用者及使用者組,oracle產品規定,必須以oracle使用者的身份進行安裝。
建立使用者,輸入命令:

groupadd  oinstall 
groupadd  dba

建立Oracle使用者和密碼,輸入命令:

useradd -g oinstall -g dba -m oracle
passwd  oracle

然後會讓你輸入密碼,密碼任意輸入2次,但必須保持一致,回車確認
5)建立oracle安裝目錄,及資料檔案存放目錄位置,這裡可自定義。在這裡舉例安裝放在/u01/app/oracle目錄

mkdir -p /u01/app/oracle
mkdir -p /u01/app/oraInventory

6)設定目錄所屬主為oracle所有。

chown -R oracle:oinstall  /u01/app/oracle
chown -R oracle:oinstall  /u01/app/oraInventory

7)安裝依賴檢查

rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel | grep "not installed"

把上面提示的所有not installed的軟體包,使用yum 安裝,根據不同系統環境,每個人的可能不一樣。不過直接執行下面語句,不管有沒有安裝,全部一併執行也可以(對照下就會發現只是把rpm -q改成了yum install,後面完全一樣)。

yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel

由於pdksh軟體包貌似在yum源裡沒有了,在我安裝的時候獨立在網上下載了pdksh的rpm包,然後使用rpm -ivh 包名安裝,下載地址:http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm。如果沒有出現我這個問題,可以略過這個獨立安裝。
8)配置oracle的環境變數,先切換oracle使用者
輸入:su - oracle
然後輸入vi .bash_profile追加以下內容

umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

解釋:ORACLE_BASE環境變數為安裝根目錄,安裝完之後會在ORACLE_HOME目錄生成好多檔案,ORACLE_SID為例項sid,可自定義。

9)開始安裝
官網上下載linux版本的oracle11gR2,一共兩個包linux.x64_11gR2_database_1of2.zip,linux.x64_11gR2_database_2of2.zip,使用ftp等方式上傳到/home/oracle目錄,並使用unzip命令進行解壓。
解壓完之後會生成database目錄。(檢查下database的所屬使用者資訊 ll /home/oracle,一定要是oracle:oinstall,不是的話,使用如下命令修改chown -R oracle:oinstall /home/oracle/database)

構建靜默安裝的rsp響應檔案,

[[email protected] ~]$ cd /home/oracle/database/response/
[[email protected] response]$ ls
dbca.rsp  dbca.rsp.bak  db_install.rsp  db_install.rsp.bak  netca.rsp  netca.rsp.bak

我上面把之前的響應檔案做了備份。
db_install.rsp檔案內容如下:為節省篇幅,我把所有的註釋刪除了。
注意的地方:INVENTORY_LOCATION為你要安裝的目錄(前提條件要建立好,之前步驟已建立好該目錄),並設定好ORACLE_HOME和ORACLE_BASE,及oracle.install.db.config.starterdb.SID,主要是這幾個配置是自定義的。

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=localhost
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=false
oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=
oracle.install.db.config.starterdb.dbcontrol.SMTPServer=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=

然後執行靜默安裝的如下命令

./runInstaller -silent -force -noconfig -ignorePrereq -showProgress -responseFile /home/oracle/database/response/db_install.rsp

以上命令會自動檢查系統是否滿足oracle11gR2的安裝要求,如交換空間是否夠,硬碟,記憶體等等。執行的時間會比較久,可以先去喝杯咖啡再聽首音樂,如不出意外的情況下,會輸出如下資訊。

Execute Root Scripts in progress.
As a root user, execute the following script(s):
    1. /u01/app/oracle/oraInventory/orainstRoot.sh
    2. /u01/app/oracle/product/11.2.0.1/db_1/root.sh

根據要求,新開一個視窗,以root身份分別執行這兩個指令碼即可。

關於dbca.rsp檔案,一種方式是修改好配置檔案,然後使用命令短一點的方式執行,不過dbca命令也可以通過引數同樣實現動態配置。所以一般使用第二種方式,加引數的方式。

dbca -silent -createDatabase -templateName $ORACLE_HOME/assistants/dbca/templates/General_Purpose.dbc -gdbName orcl -sid orcl   -sysPassword huangbaokang -systemPassword huangbaokang -datafileDestination /u01/app/oraData -characterSet UTF8 -automaticMemoryManagement true

一大推的百分號進度條之後,以上命令會建立一個sid:orcl,sys使用者的密碼為huangbaokang,資料檔案存放/u01/app/oraData目錄,資料庫編碼UTF8,關於更多的配置,檢視更多的dbca資料。
如掌握刪除資料庫例項orcl方法:

dbca -silent -deleteDatabase -sourcedb orcl

最後一步配置監聽listener
使用ntca命令進行

netca -silent -responsefile /home/oracle/database/response/netca.rsp

5、資料庫驗證

su - oracle 切換oracle使用者
sqlplus / as sysdba 登入sqlplus
startup 啟動oracle
建使用者和表空間命令

/*臨時表空間*/

create temporary tablespace hbk_temp
tempfile '/u01/app/oraData/orcl/hbk_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;

/*建立資料表空間 */

create tablespace hbk_data
logging
datafile '/u01/app/oraData/orcl/hbk_data.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;



/*建立使用者*/

create user hbk
  identified by "hbk"
  default tablespace hbk_data
  temporary tablespace hbk_temp
  profile DEFAULT;
grant connect to hbk;
grant dba to hbk;
grant exp_full_database to hbk;
grant imp_full_database to hbk;
grant resource to hbk;
grant unlimited tablespace to hbk;

exit 退出sqlplus
lsnrctl start命令啟動監聽

檢視系統ip,使用ifconfig命令,用oracle sql developer等客戶端進行連線驗證,並注意防火牆問題。