在CentOS7下安裝Oracle11教學

2022-11-03 12:00:50

前言

安裝oracle時,發現網上的文章總是缺少一些資訊,導致安裝不順利,因為我對一些文章進行了整合,用以備忘。

Oracle安裝

首先下載linux版本的oracle安裝檔案,然後通過XFTP上傳到root資料夾下。

linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip

然後我們通過XShell連線Linux伺服器,然後執行下面命令,檢視Swap分割區空間,不能小於2G。

grep SwapTotal /proc/meminfo

然後修改CentOS系統標識為redhat,因為redhat是Centos的正版形式,Oracle預設不支援CentOS。

vim /etc/redhat-release

清空redhat-release內的全部內容,(快捷鍵dd),改成redhat-7

​​​​​​​redhat-7

注:linux編輯檔案可以通過vi或者vim命令開啟指定位置的檔案,如vi appsettings.json,然後輸入i進入編輯模式,輸入ese退出編輯模式,輸入:進入底行,輸入wq儲存退出(:wq)。

然後修改sysctl.conf

vim /etc/sysctl.conf

注:如vim命令無法執行,則需要先安裝,安裝命令如下:

yum -y install vim*

新增以下內容:

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

修改完後,啟用新的設定

sysctl -p

然後安裝必須的軟體包

yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC-devel

然後建立安裝oracle程式使用者組 

groupadd oinstall #建立安裝oracle程式使用者組 
groupadd dba #建立DBA使用者組
useradd -g dba -m oracle #建立使用者oracle 並加入到dba組
usermod -a -G oinstall oracle #將使用者oracle加入到oinstall組
passwd oracle #修改使用者oracle的密碼
id oracle #檢視使用者oracle的資訊

 然後建立oracle目錄

mkdir -p /data/oracle #建立oracle主目錄
mkdir -p /data/inventory #建立oralce設定目錄 
mkdir -p /data/src #建立oracle壓縮包解壓目錄 
#修改目錄許可權
chown -R oracle:oinstall /data/oracle 
chown -R oracle:oinstall /data/inventory 
chown -R oracle:oinstall /data/src
#檢視目錄許可權
ll /data

然後設定oracle使用者的shell限制

vim /etc/security/limits.conf

新增內容如下:

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

然後修改使用者環境變數

vim /home/oracle/.bashrc

新增內容如下:

export PATH
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

然後啟用/home/oracle/.bashrc

source /home/oracle/.bashrc

然後開始安裝最開始上傳到root資料夾下的oracle 

先解壓縮安裝包到 /data/src/,然後給oracle使用者授權

unzip linux.x64_11gR2_database_1of2.zip -d /data/src/
unzip linux.x64_11gR2_database_2of2.zip -d /data/src/
chown -R oracle:oinstall /data/src/
ll /data/src/

然後執行下面命令,修改SELINUX=disabled,關閉selinux

vim /etc/selinux/config

 修改內容

SELINUX=disabled

然後重啟系統

reboot

重啟後,進入Oracle使用者

su oracle

然後編輯資料庫安裝檔案

vim /data/src/database/response/db_install.rsp

 由於需要設定的欄位比較多,並且並不是上下連續的,所以我們可以在檢視模式下(按esc即可),通過【/字串】定位字串位置,如/oracle

oracle.install.option=INSTALL_DB_SWONLY        # 安裝型別
ORACLE_HOSTNAME=oracle.server     # 主機名稱
UNIX_GROUP_NAME=oinstall # 安裝組
INVENTORY_LOCATION=/data/inventory # INVENTORY目錄
SELECTED_LANGUAGES=en,zh_CN # 選擇語言
ORACLE_HOME=/data/oracle/product/11.2.0/db_1 # oracle_home
ORACLE_BASE=/data/oracle # oracle_base
oracle.install.db.InstallEdition=EE # oracle版本
oracle.install.db.DBA_GROUP=dba # dba使用者組
oracle.install.db.OPER_GROUP=oinstall # oper使用者組
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE # 資料庫型別
oracle.install.db.config.starterdb.globalDBName=orcl # globalDBName
oracle.install.db.config.starterdb.SID=orcl # SID
oracle.install.db.config.starterdb.characterSet=AL32UTF8 # 預設資料庫編碼
oracle.install.db.config.starterdb.memoryLimit=800 # 自動管理記憶體的最小記憶體(M)
oracle.install.db.config.starterdb.password.ALL=oracle # 設定所有資料庫使用者使用同一個密碼
DECLINE_SECURITY_UPDATES=true # 設定安全更新

以上設定修改必須全部修改,不然會無法安裝。

修改完設定進行靜默安裝oracle,執行命令如下

/data/src/database/runInstaller -silent -responseFile /data/src/database/response/db_install.rsp -ignorePrereq

安裝oracle需要等待的時間比較長,這裡需要耐心。

安裝完成後,我們需要回到root使用者執行命令,/data/oracle/product/11.2.0/db_1/root.sh,我們可以雙擊Xshell的視窗,這樣我們會開啟一個新的視窗,並且是root使用者,因為後面還要回到oracle使用者,這樣就不用切換使用者了。

/data/oracle/product/11.2.0/db_1/root.sh

然後再回到oracle使用者,編輯監聽組態檔。

vim /data/src/database/response/netca.rsp

修改內容如下

INSTALL_TYPE=""custom"" # 安裝的型別
LISTENER_NUMBER=1 # 監聽器數量
LISTENER_NAMES={"LISTENER"} # 監聽器的名稱列表
LISTENER_PROTOCOLS={"TCP;1521"} # 監聽器使用的通訊協定列表
LISTENER_START=""LISTENER"" # 監聽器啟動的名稱

然後執行以下netca.rsp,如下

/data/oracle/product/11.2.0/db_1/bin/netca /silent /responseFile /data/src/database/response/netca.rsp

然後編輯資料庫範例檔案

vim /data/src/database/response/dbca.rsp

編輯內容如下

RESPONSEFILE_VERSION ="11.2.0" // 版本號
OPERATION_TYPE ="createDatabase" // 操作為建立範例 
GDBNAME ="orcl" // 資料庫範例名
SID ="orcl" // 範例名字
TEMPLATENAME = "General_Purpose.dbc" // 建庫用的模板檔案
SYSPASSWORD = "oracle" // SYS管理員密碼
SYSTEMPASSWORD = "oracle" // SYSTEM管理員密碼
SYSMANPASSWORD= "oracle"
DBSNMPPASSWORD= "oracle"
DATAFILEDESTINATION =/data/oracle/oradata // 資料檔案存放目錄
RECOVERYAREADESTINATION=/data/oracle/flash_recovery_area // 恢復資料存放目錄
CHARACTERSET ="AL32UTF8" // 字元集
NATIONALCHARACTERSET= "AL16UTF16" // 字元集
TOTALMEMORY ="1638" // 1638MB,實體記憶體2G*80%

然後靜默建立資料庫範例

/data/oracle/product/11.2.0/db_1/bin/dbca -silent -responseFile /data/src/database/response/dbca.rsp

然後檢視下範例是否執行情況

ps -ef | grep ora_ | grep -v grep

然後修改啟動和關閉範例的程式

修改啟動

vim /data/oracle/product/11.2.0/db_1/bin/dbstart

修改內容

ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1

修改關閉

vim /data/oracle/product/11.2.0/db_1/bin/dbshut

修改內容

ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1

然後修改/etc/oratab

vim /etc/oratab

修改內容,將orcl:/data/oracle/product/11.2.0:N修改為orcl:/data/oracle/product/11.2.0:Y。

dbstart和dbshut 這2個指令碼在執行時會檢查/etc/oratab 檔案裡的設定,為Y時才能繼續執行。

orcl:/data/oracle/product/11.2.0:Y

然後啟動oracle範例

/data/oracle/product/11.2.0/db_1/bin/dbstart

然後回到root使用者,設定開機啟動Oracle,可以剛剛開啟的視窗中操作。 

編輯rc.local,執行命令如下

chmod +x /etc/rc.d/rc.local
vim /etc/rc.d/rc.local

在檔案最後追加以下內容:

su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc "/data/oracle/product/11.2.0/db_1/bin/dbstart"

然後我們可以在oracle使用者視窗輸入以下命令,進入oracle資料庫

sqlplus / as sysdba

然後執行個查詢命令如下:

select status from v$instance

到此oracle就安裝成功了。

但我們需要遠端連線這個oracle,我們還需要修改listener.ora和tnsnames.ora檔案。

我們通過可以XFTP找到這倆檔案,右鍵用記事本編輯,如下圖:

編輯內容如下。

listener.ora:

# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
	  (GLOBAL_DBNAME = ORCL)
      (SID_NAME = orcl) 
      (ORACLE_HOME = /data/oracle/product/11.2.0/db_1)  
    )
  )
ADR_BASE_LISTENER = /data/oracle

 注:SID_LIST_LISTENER是將oracle範例的一些資訊靜態註冊到服務中用的,缺少這遠端不可連線。

 tnsnames.ora:

# tnsnames.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
 
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

這兩個檔案內容修改後,關閉oracle的監聽服務,再啟動就可以遠端連線了。

注:檔案編輯的格式一旦錯誤也會導致監聽服務無法啟動。

lsnrctl stop #關閉監聽 在oracle使用者下執行
lsnrctl start #啟動監聽 在oracle使用者下執行

如果還無法遠端,則可能是防火牆原因,防火牆管理命令如下:

systemctl status firewalld #檢視防火牆狀態 
systemctl stop firewalld #暫時關閉防火牆 
systemctl disable firewalld #永久關閉防火牆
systemctl start firewalld #開啟防火牆

然後我們再用PLSQL就可以連線oracle了,如果PLSQL連線不上,可以先檢查client\network\ADMIN\tnsnames.ora,看看設定是否正確。

參考設定如下

[email protected] =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
)

----------------------------------------------------------------------------------------------------

到此,CentOS7下安裝Oracle11就介紹完了。

----------------------------------------------------------------------------------------------------

注:此文章為原創,任何形式的轉載都請聯絡作者獲得授權並註明出處!
若您覺得這篇文章還不錯,請點選下方的推薦】,非常感謝!

https://www.cnblogs.com/kiba/articles/16837139.html