首頁 > 軟體

Linux CentOS7安裝Oracle11g的超完美新手教學

2022-07-01 18:00:22

1 基本環境介紹

Linux我們預設使用CentOS 7 x64

所以為了對應作業系統我們使用64位元的Oracle 11g資料庫

Oracle11g需要準備至少:2核CPU、2G記憶體、8GB的硬碟空間

  • 檢視cpu詳細資訊

lscbu

  • 檢視記憶體詳細資訊

free -h

  • 檢視儲存檔詳細資訊

lsblk

確保伺服器能存取外網

  • 可以ping www.baidu.com進行測試

2 檢測是否安裝了Oracle

檢視是否有 oracle 的程序

ps -ef | grep ora

檢查是否有oracle使用者

# 一般安裝oracle的時候預設會建一個oracle使用者
id oracle

3 解除安裝Oracle

3.1 重新做一次虛擬機器器

因為Oracle的解除安裝極其麻煩,從效率上講甚至不如直接重新安裝虛擬機器器

3.2 解除安裝Oracle

4 安裝準備

Oracle的安裝需要圖形化介面,所以身為命令形式的Linux作業系統就需要安裝圖形化介面:VNC

為了安全起見,不建議使用root做為vnc使用者,所以,安裝oracle時要建立單獨的使用者去安裝oracle相關

4.1 建立oracle使用者和使用者組

# 在Linux中建立名為oinstall的使用者組
groupadd oinstall
# 建立dba使用者組
groupadd dba
# 建立oper使用者組
groupadd oper
# 為dba和oper使用者組建立oracle使用者
  # -g 主使用者組
  # -G 附加組
useradd -g oinstall -G dba,oper oracle
# 將oracle使用者的密碼設定為oracle
echo "oracle"|passwd oracle --stdin

4.2 為Oracle的安裝建立相關目錄

# 建資料夾
mkdir -p /u01/app/oracle/product/11.2.0/db_1
# 改變屬主和屬組
chown -R oracle:oinstall /u01/app
# 為資料夾授權
chmod -R 775 /u01/app

4.3 優化OS核心引數

vim /etc/sysctl.conf
# 新增如下內容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
# kernel.shmmax 引數設定為實體記憶體的一半
kernel.shmmax = 1200000000
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
# 因為剛自定義設定了shmmax、shmmni、shmall,所以註釋掉原有自帶的shmmax、shmall這些屬性

儲存並退出後,需要使使引數生效

sysctl -p

4.4 限制oracle使用者的shell許可權

為了優化效能,需要新增oracle使用者的限制引數

vim /etc/security/limits.conf 
# 在檔案末尾新增下面四行
# 設定程序數軟限制
oracle soft nproc 2047
# 設定程序數硬限制
oracle hard nproc 16384
# 設定檔案數軟限制
oracle soft nofile 1024
# 設定檔案數硬限制
oracle hard nofile 65536
# 程序對談限制可以採用pam_limits認證模組來實現,通過修改登入程式login的PAM設定以啟用該認證
vim /etc/pam.d/login # 在檔案最後新增下面一行
session required /lib64/security/pam_limits.so
# 一般都是64位元系統,64位元系統需要設定為/lib64/security/pam_limits.so 否則重啟伺服器後就會出現命令列無法登入,但是通過桌面方式能登入的情況
session required pam_limits.so

使引數生效

source /etc/profile

4.5 為Oracle使用者新增Oracle環境變數

su - oracle
vim .bash_profile
# 新增如下內容
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
PATH=$PATH:$ORACLE_HOME/bin
ORACLE_SID=orcl
NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

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

退出後需要重新整理環境變數

source .bash_profile
或
source /home/oracle/.bash_profile

4.6 設定hostname(本機IP對映)

安裝oracle時,一定要保證主機名出現在/etc/hosts中

vim /etc/hosts
# 新增如下內容
127.0.0.1   localhost
192.168.222.30	mydb

測試hostname

ping -c 3 mydb

/etc/sysconfig/network中的hostname要與/etc/hosts中的一致

vim /etc/sysconfig/network
# 新增如下內容
NETWORKING=yes
HOSTNAME=mydb
# 伺服器IP
GATEWAY=192.168.222.30
NTPSERVERARGS=iburst

4.7 安裝VNC&Oracle相關依賴

4.7.1 設定yum源

cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除快取
yum clean all
# 建快取
yum makecache
#安裝epel源
yum -y install epel-release

4.7.2 安裝依賴

#圖形介面必備`X Window System`
yum -y groupinstall "X Window System"
#安裝VNC+圖形、oracle需要的依賴(軟體)
yum -y install 
binutils 
compat-libcap1  
compat-libstdc++-33 
compat-libstdc++-33*.i686 
elfutils-libelf-devel 
gcc 
gcc-c++ 
glibc*.i686 
glibc 
glibc-devel 
glibc-devel*.i686 
ksh 
libgcc*.i686 
libgcc 
libstdc++ 
libstdc++*.i686 
libstdc++-devel 
libstdc++-devel*.i686 
libaio 
libaio*.i686 
libaio-devel 
libaio-devel*.i686 
make 
sysstat 
unixODBC 
unixODBC*.i686 
unixODBC-devel 
unixODBC-devel*.i686 
libXp

4.7.3 檢查依賴是否安裝完成

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"

4.7.4 如果安裝失敗的依賴進行單獨安裝

方法一:通過yum安裝

yum -y install pdksh(安裝失敗的package)

方法二:wget命令直接下載pdksh的rpm包,下載到至/tmp/

wget -O /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
# 安裝pdksh
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

4.7.5 安裝語言套件

伺服器&VNC&Oracle安裝包語言要統一,這裡我使用的是中文安裝包,為避免中文亂碼,需要安裝中文語言套件(如果你都是英文可以忽略此步驟)

—————上傳方法—————

# 1.切換至oracle安裝目錄
cd /u01/
# 2.將檔案上傳至伺服器
rz/sz
# 或
shell工具拖拉拽
# 或
# ---------------------------------------------------------------
scp -r /Users/nan/Desktop/Oracle  root@10.10.1.104:/opt/test/
  # 解析
  scp    -r           dir              username@host:dir
  命令   遞迴       要拷貝的檔案路徑   目的主機使用者名稱@目的主機ip:目的路徑
# ---------------------------------------------------------------
# 3.安裝中文字型包
yum –y install pdksh-5.2.14-37.el5_8.1.x86_64.rpm

4.8 開放埠/關閉防火牆

4.8.1 開放埠

防火牆放行VNC埠5901和Oracle預設埠1521

編輯iptables, 開放1521埠:

sudo vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT 

重啟防火牆

sudo service iptables restart

儲存設定,以便linux重啟後依然有效

sudo service iptables save 

檢視防火牆規則:

sudo iptables -L –n

4.8.2 關閉防火牆

service iptables stop
chkconfig iptables off
vim /etc/sysconfig/selinux
SELINUX=enforcing改成SELINUX=disabled

4.9 上傳Oracle安裝檔案

切換使用者並切換目錄

xhost +
su - oracle
cd /u01/sw

上傳Linux-x86-64_1of7.zip和Linux-x86-64_2of7.zip檔案至/u01/sw目錄上傳方法

解壓縮安裝檔案

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

完成後切換root使用者,複製授權

su - root
mkdir /home/oracle/etc/
cp /db/database/response/* /home/oracle/etc/
chmod 777 /home/oracle/etc/*.rsp

登入oracle使用者

su – oracle
vi /home/oracle/etc/db_install.rsp
# 資訊如下:
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/db/app/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOSTNAME=oracle
ORACLE_HOME=/db/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/db/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.memoryLimit=512
oracle.install.db.config.starterdb.password.ALL=oracle
DECLINE_SECURITY_UPDATES=true

4.10 安裝

執行Oracle安裝檔案

su - oracle

./runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp -ignorePrereq

安裝期間可以使用tail命令監看oracle的安裝紀錄檔

cd /db/app/oracle/oraInventory/logs/
tail -f installActions2021-11-10_10-38-29AM.log

安裝完成,提示Successfully Setup Software

使用root使用者執行指令碼

su - root/db/app/oracle/product/11.2.0/db_1/root.sh

4.10.1 增加或修改oracle的環境變數

su  - oracle

vi ~/.bash_profile

export ORACLE_HOME=/db/app/oracle/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data

使設定生效

source ~/.bash_profile

4.10.2 設定監聽程式

設定監聽

# 確保在oracle目錄的bin下
pwd
/db/app/oracle/product/11.2.0/db_1/bin
./netca /silent /responseFile /home/oracle/etc/netca.rsp

啟動監聽

# 確保在oracle目錄的bin下
pwd
/db/app/oracle/product/11.2.0/db_1/bin
# 啟動監聽
lsnrctl start
# 檢視監聽狀態
lsnrctl start
 
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 25-MAY-2019 00:13:21
 
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1522)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                25-MAY-2019 00:05:55
Uptime                    0 days 0 hr. 7 min. 32 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /db/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /db/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1522)))
The listener supports no services
The command completed successfully

監聽狀態

lsnrctl start
# 顯示如下
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 25-MAY-2019 00:13:21
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1522)))

5 建立資料庫

編輯應答檔案

vi /etc/dbca.rsp
GDBNAME="orcl.oracle" 
SID="orcl"
SYSPASSWORD = "oracle" 
SYSTEMPASSWORD = "oracle" 
CHARACTERSET="AL32UTF8" 
NATIONALCHARACTERSET="UTF8"
# 執行:
$ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/etc/dbca.rsp

建庫

pwd
/db/app/oracle/product/11.2.0/db_1/bin

dbca -silent -responseFile etc/dbca.rsp
# 至此完成資料庫範例的建立

設定Oracle開機啟動

vim /etc/oratab
# 把「N」改成「Y」
orcl:/db/app/oracle/product/11.2.0/db_1:Y 

5.1 刪除範例

[oracle@oracle bin]$ vi /etc/oratab
orcl:/db/app/oracle/product/11.2.0/db_1:Y  # //把「N」改成「Y」
# 儲存退出
[oracle@oracle bin]$ pwd
/db/app/oracle/product/11.2.0/db_1/bin
# 通過dbstart 啟動此範例,監聽器
## ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
## Usage: ./dbstart ORACLE_HOME
[oracle@oracle bin]$ ./dbstart $ORACLE_HOME;
# oracle的程序關閉,監聽器也停止;
[oracle@oracle bin]$ ./dbshut $ORACLE_HOME;
# 啟動監聽
[oracle@oracle bin]$ ./lsnrctl start;
# 檢視監聽
[oracle@oracle bin]$ ./lsnrctl status

5.2 登陸Oracle

[oracle@oracle bin]$ pwd
/db/app/oracle/product/11.2.0/db_1/bin
[oracle@oracle bin]$ ./sqlplus /nolog
# 進入系統管理使用者
SQL> conn / as sysdba
Connected to an idle instance.
# 啟動oracle範例
SQL> startup;

1、使用oracle使用者登入桌面,開啟終端執行安裝程式

[root@oracledb ~] cd /ora/database
[root@oracledb ~] ./runInstaller

1)訂閱郵件跳過

2)選擇忽略更新(或者讓選擇桌面版還是伺服器版,如果有選擇伺服器版)

3)這裡選擇僅安裝資料庫,稍後再設定初始化資料。

4):選擇單範例安裝。

5):語言,linux伺服器上就別想什麼中文這些了,就預設英文完事。

6):預設

7):這裡就出現最開始建立的相應目錄資訊了,會自動讀取。

8):下一步

9):選擇group 組為之前建立好的oinstall

10):安裝的過程中可能會出現如下的一些警告資訊,如提示semmni為0 的問題,該問題一直沒有找到原因,我們在上面修改核心的過程中就已經調整了kernel.sem = 250 32000 100 128 但是檢測無法通過(暫時無解)、其他的一些依賴元件提示,其實我們已經安裝好了,只是centos7上yum安裝的依賴包要比oracle 11g 所需的包更新,版本更高,所以可以直接忽略這些提示(勾選 ignore all)。

3、安裝到最後的時候會出現一個提示:需要用root許可權執行2個shell指令碼,那麼我們在之前的root使用者終端下執行提示中的對應指令碼檔案即可。

這裡或者更早前的步驟就可能會出現一個很神奇(zhizhang)的問題,對話方塊可能無法正常彈出,測試在VM虛擬機器器或者雲伺服器,如阿里雲等都這樣,但是用滑鼠可以拖開。是的,你沒有看錯,直接拖出對話方塊。這個問題不知道原因,有知道的朋友請留言告知,萬分感謝。

還有可能出現一個壓根兒就不能拖得對話方塊(阿里雲上反覆測試,就是會出現)最後沒轍了,本地跑虛擬機器器一步步的模擬安裝,發現是一個警告提示,一般按4次tab鍵即可切換到下一步選項回車即可。

4、安裝完成後還需要建立資料庫,還是同樣在Oracle使用者桌面環境下,重新開啟一個終端,輸入 dbca 命令即可彈出相應的資料庫建立嚮導。

如果提示沒有這個命令,那麼請詳細檢查一下上述的依賴包是否正確安裝,另外建立過程中如果出現提示oracle not available 檢查是否已新增主機名到hosts檔案中。

總結

到此這篇關於Linux CentOS7安裝Oracle11g的文章就介紹到這了,更多相關Linux CentOS7安裝Oracle11g內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com