redhat7.7(centOS7)安裝ORACLE 11g出坑教程及問題總結與解決


寫在前面:

環境建議:VM 15.5,因為15.5修復了諸多bug,可以在安裝過程中省去不少麻煩

添加新的虛擬機安裝redhat7.7

准備redhat7.7的安裝包...百度雲不讓上傳噢噢噢噢,這里放上iso的名字:rhel-server-7.7-x86_64-dvd.iso

 

 

redhat安裝完畢可能是沒有圖像界面的,這是因為VM自動選擇了簡易安裝,安裝圖形界面的方法參考:

https://www.cnblogs.com/renzmin/p/12057667.html

配置好linux虛擬機了,接下來就可以開始安裝ORACLE了.....

 

(1)首先,你得有ORACLE的安裝包,這里附上linux oracle 64位的百度雲鏈接

鏈接:https://pan.baidu.com/s/1bIR9R-JWVDhs2xXR2umZbg
提取碼:8bzf

鏈接:https://pan.baidu.com/s/1vTabCeNGdLVwOgzyr0v-2A
提取碼:82bx

 

(2)配置yum源

因為后邊安裝oracle過程中,需要導入相應的依賴包。yum是基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關系,並且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝.

這里主要配置163yum源和epel源。完成后,后續可以通過yum install 命令安裝依賴

a:配置163yum源

  • 進入源管理目錄 cd /etc/yum.repos.d
  • 新建一個163.repo文件 vim 163.repo
  • 163.repo文件內容如下
[163]
name=163
baseurl=http://mirrors.163.com/centos/7/os/x86_64/
gpgcheck=0
enabled=1
         

這里要注意的是,baseurl這一項,你要到http://mirrors.163.com/centos這里,去找到你對應的redhat版本的目錄,然后點os、再點x86_64(一般都有),然后用你地址欄上顯示的網址替換上面的baseurl就行了

b:配置epel源

運行 rpm -vih https://dl.fedoraproject.org/pub/epel/7Server/x86_64/Packages/e/epel-release-7-12.noarch.rpm

注意,我的redhat是7server,所以如果你的版本不是7server,那你要到http://dl.fedoraproject.org/pub/epel找到你對應版本的rpm包,然后用上面的命令下載,這條命令的作用就是在/etc/yum.repos.d目錄下生成epel源。

(3)關閉防火牆

//臨時關閉防火牆,重啟后會重新自動打開
systemctl restart firewalld
//檢查防火牆狀態
firewall-cmd --state
firewall-cmd --list-all
//Disable firewall
systemctl stop firewalld.service
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
//Enable firewall
systemctl enable firewalld
systemctl start firewalld
systemctl status firewalld

建議直接關閉,否則在oracle執行到95%時會卡死

============================================================================================================================================================================

下面正式開始安裝ORACLE:

(一):依賴庫安裝

yum install -y compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel
yum install -y ksh libaio-devel numactl-devel
yum install -y unixODBC unixODBC-devel oracleasm oracleasmlib oracleasm-support

安裝完成執行以下,以檢查所需的軟件包是否都安裝完畢:

rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel  
rpm -q gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers  
rpm -q ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat

如有提示XXXX not install

以package compat-libstdc++-33 is not installed為例

執行 yum list | grep compat-libstdc

 

 

執行 yum install compat-libstdc++-33.x86_64即可

(二)創建Oracle用戶組和用戶賬號(root用戶)

    # groupadd oinstall
    # groupadd dba
    # useradd -g oinstall -G dba oracle
    # passwd oracle

執行時去掉#

(三)配置內核參數(root用戶)

1.修改文件/etc/sysctl.conf vim /etc/sysctl.conf

內容如下:

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 536870912

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

net.ipv4.tcp_wmem = 262144 262144 262144

 net.ipv4.tcp_rmem = 4194304 4194304 4194304

執行命令: /sbin/sysctl -p 使參數生效。

2. 修改文件/etc/security/limits.conf vim /etc/security/limits.conf
文件內容如下:

oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
oracle              soft    stack   10240
oracle              hard   stack    32768
oracle              hard   memlock    134217728
oracle              soft   memlock    134217728
      

(四)創建Oracle的安裝目錄(root用戶)

mkdir -p /u01/app/
chown -R oracle:oinstall /u01/app/
chmod -R 775 /u01/app/

(五)編輯Oracle用戶環境(Oracle用戶)

在root用戶下輸入 su oracle 進入oracle用戶環境

編輯.bash_profile文件 vim /home/oracle/.bash_profile
.bash_profile文件內容如下:

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
#For Oracle
export DISPLAY=:0.0
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1;
export ORACLE_SID=orcl;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;

重新啟動Linux,選擇oracle用戶環境的時候,系統會根據環境變量進行配置,后邊的oracle命令才能正常執行。
輸入 echo $ORACLE_HOME 查看環境變量是否配置成功,如果正常輸出了配置的路徑,則成功,如果輸出為空白,可以在本次手動執行 source /home/oracle/.bash_profile 執行環境變量的加載。但是僅在當前終端窗口有效。
(六)安裝ORACLE數據庫(oracle用戶)

電腦重啟完之后,當前為Oracle用戶,

1.首先cd到包含oracle文件的盤,

解壓縮:

unzip linux.x64_11gR2_database_1of2
unzip linux.x64_11gR2_database_2of2

利用unzip命令解壓縮的時候,出現-bash: unzip: command not found的錯誤。
unzip——命令沒有找到,其原因肯定是沒有安裝unzip。利用一句命令就可以解決了。

yum install -y unzip zip

2.鍵入vncserver 如果提示command not found,則在root用戶下使用 yum install tigervnc-server -y進行安裝

3.執行 ./runInstaller 進入安裝界面

(1).取消溝-----下一步------yes(提示沒有填寫郵箱)

 

 

 

(2)選擇“Create and configure a database”,點擊“Next”

 

 

 (3)選擇“Desktop Class”,點擊“Next”

 

 

(4)在配置頁面上,輸入管理員密碼,比如“password”,點擊“Next”

 

 (5)驗證先決條件

 

 (6)預檢查通常會報很多fail

 

 

 關於swap空間不足,可以采用以下方式修復

1、使用dd命令創建一個swap分區

          2、#dd if=/dev/zero of=/home/swap bs=1024 count=16400000

          3、格式化剛才創建的分區

          4、# mkswap /home/swap

          5、再使用swapon命令把這個文件分區變成swap分區

          6、#swapon /home/swap

          7、(關閉SWAP分區的命令為:#swapoff /home/swap)

          8、再用free -m 查看已經擴容的了swap分區。

          9、為了能夠讓swap自動掛載,需要修改etc/fstab文件,用vi /etc/fstab

          10、在文件末尾加上 /home/swap swap swap default 0 0

          11、這樣就算重啟系統,swap分區也不用手動掛載了

          12、但是我感覺好像我重啟了系統 swap就沒有了,然后我又百度了一下,要執行下面一段命令  #echo   "swapon  /home/swap" >> /etc/inittab 

          13、然后在看 vi 看下 /etc/inittab

          14、最后一行是swapon  /home/swap,這樣就萬事大吉了。

 

 

 其他的諸如黃框框中的錯誤,采用(一)依賴安裝中的方式進行修復,由於本機是64位,對於i386的包可以予以忽略

修復需要的安裝包之后,如部分i386的沒有安裝,就直接點擊右上角的ignore All 進行下一步即可

(七).顯示的安裝進度信息:

 

 進行到68%時會報兩個錯誤

第一個:Error in invoking target 'install' of makefile '/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk'. See '/home/oracle/oraInventory/logs/installActions2014-05-21_02-20-57PM.log' for details.

 解決方案:

編輯創建腳本:

# Fix ctx/lib/ins_ctx.mk
 
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
 
cat << __EOF__ > /tmp/memcpy_wrap.c
#include <stddef.h>
#include <string.h>
 
asm (".symver wrap_memcpy, memcpy@GLIBC_2.14");
void *wrap_memcpy(void *dest, const void *src, size_t n) {
return memcpy(dest, src, n);
}
__EOF__
 
if [[ -e "${ORACLE_HOME}/ctx/lib/ins_ctx.mk" ]]; then
sed -i -e 's/\$(INSO_LINK)/\$(INSO_LINK) -Wl,--wrap=memcpy_wrap \$(ORACLE_HOME)\/ctx\/lib\/memcpy_wrap.o/g' ${ORACLE_HOME}/ctx/lib/ins_ctx.mk
gcc -c /tmp/memcpy_wrap.c -o ${ORACLE_HOME}/ctx/lib/memcpy_wrap.o && rm /tmp/memcpy_wrap.c
fi

運行腳本 並點擊retry

下載路徑及傻瓜式操作步驟下載鏈接:

第二個:Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'. See '/u01/app/oraInventory/logs/installActions2015-04-23_01-23-30PM.log' for details.

解決方案:

編輯創建腳本:

# Fix sysman/lib/ins_emagent.mk
 
ORACLE_SRC_INSTALL_DIR=/media/sf_uxora_share/database
cd ${ORACLE_SRC_INSTALL_DIR}/stage/Components
 
jar_file=
for i_file in $( ls ./oracle.sysman.agent/*/1/DataFiles/filegroup*.jar ); do
unzip -l ${i_file} sysman/lib/ins_emagent.mk 2>&1 1>/dev/null
[[ $? -eq 0 ]] && jar_file=${i_file} && break
done
 
unzip ${jar_file} sysman/lib/ins_emagent.mk 2>&1 1>/dev/null
if [[ $? -eq 0 ]]; then
sed -i -e 's/\$(MK_EMAGENT_NMECTL)/\$(MK_EMAGENT_NMECTL) -lnnz11/g' sysman/lib/ins_emagent.mk
jar -uvf  ${jar_file} sysman/lib/ins_emagent.mk
fi

運行腳本 並點擊retry

下載路徑及傻瓜式操作步驟下載鏈接:

第三個:執行以上兩個腳本時會出現的問題

解決linux的-bash: ./xx: Permission denied

 

-bash: ./xx.sh: Permission denied
解決:
chmod 777 xx.sh

 

Linux chmod +755和chmod +777 各是什么意思呢?

 

755 代表用戶對該文件擁有讀,寫,執行的權限,同組其他人員擁有執行和讀的權限,沒有寫的權限,其他用戶的權限和同組人員權限一樣。
777代表,user,group ,others ,都有讀寫和可執行權限。

 

(八)安裝最后步驟按提示在root用戶下執行腳本.

cd /u01/app/oraInventory/
sh orainstRoot.sh
cd /u01/app/oracle/product/11.2.0/dbhome_1/
sh root.sh

最后點擊OK即可,

至此完成了oracle的安裝,以下開始配置監聽器等,

 

==================================================================================================================================================================================

寫在前面:

首先將安裝完成后生成的listener.ra及tnsname.ora改個名字(不要刪除,建議重命名為init_XXXX.ora),這樣做的目的是后續需要使用netca自己根據需要配置這兩個文件

(九)oracle安裝成功后需要配置監聽器,直接鍵入 netca命令,如果提示bash:netca:command not found ,手工執行source /home/oracle/.bash_profile,就可以進入配置監聽器的用戶界面了,根據需要配置監聽器。

首先配置tnsnames.name

直接鍵入 netca命令

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

打開tnsnames.ora進行進一步的修改

 

 

 

 

orcl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.195.128)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

 

 ==========================================================================

配置listener.ora

直接鍵入 netca命令

 

 

 協議選擇TCP之后一路下一步即可。

打開listener.ora進行進一步的修改

 

 

 

SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = orcl)
  (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
  (SID_NAME = orcl)
  )
)


LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.195.128)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

 

(十)測試監聽命令

lsnrctl stop
lsnrctl start

在這個過程中,可能一般會報錯,錯誤為:

Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

此時采用如下方式進行修復:

(1)設置主機hosts映射,root下更改 vi /etc/hosts

使用hostname命令查看主機名

 

 

 

 (2)執行以下命令,注冊數據實例

[oracle@localhost ~]$ sqlplus / as sysdba
SQL>shutdown immediate
SQL> startup
SQL> alter system register;
SQL> quit

(3)查看結果

 lsnrctl status

輸出:
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 13-MAY-2014 10:19:18

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.121)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                13-MAY-2014 10:13:32
Uptime                    0 days 0 hr. 5 min. 46 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/gpdb/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.121)(PORT=1521)))
Services Summary...
Service "orcl" has 2 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

說明已經修復好了哦,至此所有配置已經完結。

==============================================================================================================================================================================

以下進行測試

#sqlplus / as sysdba
//輸出:

SQL*Plus: Release 11.2.0.1.0 Production on Fri Dec 20 00:52:02 2019

Copyright (c) 1982, 2009, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

執行:

SQL>select * from tab;

若有一大堆輸入,則說明是正確的啦

以下,對安裝時默認鎖定的用戶進行解鎖,例如將scott用戶解鎖,密碼設置為11,

具體操作步驟如下:
C:> sqlplus
請輸入用戶名:sys
輸入口令:sys as sysdba //注意:在口令這里輸入的密碼后面必須要跟上 as sysdba 才可以。
SQL> alter user scott account unlock;
     用戶已更改.
SQL> commit;
     提交完成.
SQL> conn scott/tiger
更改scott口令
新口令:tiger
重新鍵入新口令:tiger
口令已更改
已連接。
測試一下:

 

 恭喜!!!所有操作已完成。。。

前后折騰了兩三天,特此記錄,以備后用




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM