此博文主要介紹在CentOS環境中安裝Oracle 11g. 系統環境為CentOS7.2。
安裝前環境準備
安裝所需要的軟體包:
1
2
3
<code>yum </code><code>install</code> <code>binutils compat-libcap1 compat-libstdc++ gcc gcc-c++ glibc glibc-devel \</code>
<code> </code><code>ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst </code><code>make</code> <code>\</code>
<code> </code><code>sysstat unixODBC-devel -y</code>
<code>yum </code><code>install</code> <code>binutils* compat-libcap1* compat-libstdc++* gcc gcc-c++ glibc glibc-devel* ksh libaio* libaio-devel libgcc libstdc++* libstdc++-devel libXi* libXtst </code><code>make</code> <code>sysstat* unixODBC-devel -y</code>
建立使用者組和使用者:
4
5
<code>groupadd -g 502 dba</code>
<code>groupadd oinstall</code>
<code>groupadd -g 504 asmadmin</code>
<code>groupadd -g 506 asmdba</code>
<code>useradd</code> <code>-u 502 -g oinstall -G dba,asmdba oracle</code>
設定使用者密碼:
<code>passwd</code> <code>oracle</code>
修改核心資源限制,在/etc/security/limits.conf添加如下内容:
6
<code>* soft nofile 4096</code>
<code>* hard nofile 65536</code>
<code>oracle soft nproc 2047</code>
<code>oracle hard nproc 16384</code>
<code>oracle soft nofile 1024</code>
<code>oracle hard nofile 65536</code>
在檔案/etc/pam.d/login檔案中增加一行,配置驗證登入限制:
<code>session required pam_limits.so</code>
修改核心參數,在/etc/sysctl.conf檔案中增加如下内容:
7
8
9
10
11
12
13
<code>fs.aio-max-nr = 1048576</code>
<code>fs.</code><code>file</code><code>-max = 6815744</code>
<code>kernel.shmall = 2097152</code>
<code>kernel.shmmax = 536870912</code>
<code>kernel.shmmni = 4096</code>
<code>kernel.sem = 250 32000 100 128</code>
<code>net.ipv4.ip_local_port_range = 9000 65500</code>
<code>net.core.rmem_default = 262144</code>
<code>net.core.rmem_max = 4194304</code>
<code>net.core.wmem_default = 262144</code>
<code>net.core.wmem_max = 1048576</code>
<code>net.ipv4.tcp_wmem = 262144 262144 262144</code>
<code>net.ipv4.tcp_wmem = 4194304 4194304 4194304</code>
設定使生效:
<code>sysctl -p</code>
建立Oracle base目錄:
<code>mkdir</code> <code>-p </code><code>/data/app/oracle</code>
<code>chown</code> <code>-R oracle:oinstall </code><code>/data/app/oracle</code>
<code>chmod</code> <code>-R 775 </code><code>/data/app/oracle</code>
建立資料庫檔案目錄和快速恢複區目錄:
資料檔案目錄
<code>mkdir</code> <code>/data/app/oracle/oradata</code>
<code>chown</code> <code>oracle:oinstall </code><code>/data/app/oracle/oradata</code>
<code>chmod</code> <code>775 </code><code>/data/app/oracle/oradata/</code>
快速恢複區檔案目錄
<code>mkdir</code> <code>/data/app/oracle/recovery_area</code>
<code>chown</code> <code>oracle:oinstall </code><code>/data/app/oracle/recovery_area/</code>
<code>chmod</code> <code>775 </code><code>/data/app/oracle/recovery_area</code>
安裝庫軟體
切換到oracle使用者,添加環境變量:
export ORACLE_BASE=/data/app/oracle
配置X:
export DISPLAY=192.168.20.171:0.0
xhost +
access control disabled, clients can connect from any host
執行如下指令進行安裝:
<code># cd database/</code>
<code># ./runInstaller</code>
<a href="https://s5.51cto.com/oss/201711/02/1b108ba35033391a95888c9c8ea8a980.jpg" target="_blank"></a>
這裡可以選擇先安裝應用再建立資料庫,也可以一次性建立資料庫,這裡先進行安裝:
<a href="https://s2.51cto.com/oss/201711/02/86efa04ab5b0a843ded1240dc07cbe73.jpg" target="_blank"></a>
選擇單執行個體,和企業版本後,會根據我們添加的環境變量,找到對應的安裝目錄:
<a href="https://s2.51cto.com/oss/201711/02/8b252ce8d8f3d5fb5da81b5b93c07957.jpg" target="_blank"></a>
如果安裝中出現此錯誤,需要修改目錄權限:
<a href="https://s5.51cto.com/oss/201711/02/77a9ef5da59fd8214383e8dd7127fbee.jpg" target="_blank"></a>
chown -R oracle:oinstall /data/app
修改權限即可。
如果安裝的軟體包不符合要求會出現如下提示,可以通過下載下傳這些軟體包,強制安裝。
<a href="https://s4.51cto.com/oss/201711/02/e91b5db5ea5e857b32e2a4d34fca9250.jpg" target="_blank"></a>
如果要解決依賴關系可以使用如下指令強制安裝:
<code>rpm -ivh --nodeps --force packagename.rpm</code>
如果出現此錯誤,可以先忽略:
PRVF-7543 : OS Kernel parameter “semmni” does not have proper value on node “hostname” [Expected = “128” ; Found = “0”]. – Cause: Kernel parameter value does not meet the requirement. – Action: Modify the kernel parameter value to meet the requirement.
一般在Link binaries這一步出現錯誤是,大多數情況是由于部分系統包沒有安裝成功,需要重新安裝所需的包,可以使用如下腳本檢測軟體包是否裝好:
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<code>#!/bin/sh </code>
<code>count=0 </code>
<code>arr=( binutils-2* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-0.* elfutils-libelf-devel-static-0.* gcc-4.* gcc-c++-4* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2* kernel-headers-* ksh-* libaio-0.* libaio-devel-0.* libgcc-4.* libgomp-4.* libstdc++-4.* libstdc++-devel-* </code><code>make</code><code>-* numactl-devel-* sysstat-* ) </code>
<code>len=${</code><code>#arr[@]} </code>
<code>for</code><code>((i=0;i<len;i++)); </code>
<code>do</code>
<code> </code><code>char=${arr[$i]} </code>
<code> </code><code>rpm -qa | </code><code>grep</code> <code>"^$char"</code>
<code> </code><code>if</code> <code>[ $? != 0 ] ; </code><code>then</code>
<code> </code><code>error[$count]=${arr[$i]} </code>
<code> </code><code>count=$(($count+1)) </code>
<code> </code><code>echo</code> <code>"+++++++++++++++the ${arr[$i]}^is not installed++++++++++++++++++"</code>
<code> </code><code>fi</code>
<code>done</code>
<code>if</code> <code>[ $count -lt </code><code>"0"</code> <code>];</code><code>then</code>
<code> </code><code>echo</code> <code>"You have $count patchs are not installed."</code>
<code> </code><code>echo</code> <code>"the not installed patch is:"</code>
<code>len1=${</code><code>#error[@]} </code>
<code> </code><code>for</code><code>((ii=0;ii<len1;ii++)); </code>
<code> </code><code>do</code>
<code> </code><code>echo</code> <code>"${error[$ii]}^"</code>
<code> </code><code>done</code>
<code> </code><code>echo</code> <code>-e </code><code>"Are you sure to install the patch[yes or no]:\c"</code>
<code> </code><code>read</code> <code>select</code>
<code> </code><code>if</code> <code>[ $</code><code>select</code> <code>== </code><code>"yes"</code> <code>]; </code><code>then</code>
<code> </code><code>for</code><code>((is=0;is<len1;is++)); </code>
<code> </code><code>do</code>
<code> </code><code>var=${error[$is]} </code>
<code> </code><code>rpm -ivh .</code><code>/patch/</code><code>$var.rpm </code>
<code> </code><code>done</code>
<code>else</code>
<code> </code><code>echo</code> <code>"++++++++++++++++++++++CHECK PASS!+++++++++++++++++++++++++++"</code>
<code>fi</code>
<code>count=0</code>
<code>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 </code><code>make</code> <code>pdksh sysstat unixODBC unixODBC-devel | </code><code>grep</code> <code>"not installed"</code>
繼續點選下一步,直到安裝完成.
安裝完成後,按照提示使用root 執行系統給出的腳本:
<a href="https://s4.51cto.com/oss/201711/02/baf6399160d79ea56b22cea20c97c054.jpg" target="_blank"></a>
添加oracle的環境變量:
在oracle使用者下修改.bash_profile:
<code>export</code> <code>ORACLE_BASE=</code><code>/data/app/oracle</code>
<code>export</code> <code>ORACLE_HOME=</code><code>/data/app/oracle/product/11</code><code>.2.0</code><code>/dbhome_1</code>
<code>PATH=$PATH:$HOME/.</code><code>local</code><code>/bin</code><code>:$HOME</code><code>/bin</code><code>:$ORACLE_HOME</code><code>/bin</code>
到此為止,Orace 資料庫的軟體安裝工作就完成了。
啟動監聽
在oracle 使用者下使用netca指令啟動監聽配置界面:
<code>[oracle@temp-</code><code>test</code> <code>~]$ </code><code>export</code> <code>DISPLAY=192.168.20.171:0.0</code>
<code>[oracle@temp-</code><code>test</code> <code>~]$ xhost +</code>
<code>access control disabled, clients can connect from any host</code>
<code>[oracle@temp-</code><code>test</code> <code>~]$ netca </code>
<code>Oracle Net Services Configuration:</code>
然後都是用預設配置,監聽1521端口。
<code>$ </code><code>netstat</code> <code>-lntp|</code><code>grep</code> <code>1521</code>
<code>tcp6 0 0 :::1521 :::* LISTEN 22939</code><code>/tnslsnr</code>
顯示監聽狀态:
<code>[oracle@temp-</code><code>test</code> <code>~]$ lsnrctl status</code>
<code>LSNRCTL </code><code>for</code> <code>Linux: Version 11.2.0.1.0 - Production on 02-NOV-2017 18:27:02</code>
<code>Copyright (c) 1991, 2009, Oracle. All rights reserved.</code>
<code>Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=temp-</code><code>test</code><code>)(PORT=1521)))</code>
<code>STATUS of the LISTENER</code>
<code>------------------------</code>
<code>Alias LISTENER</code>
<code>Version TNSLSNR </code><code>for</code> <code>Linux: Version 11.2.0.1.0 - Production</code>
<code>Start Date 02-NOV-2017 18:20:27</code>
<code>Uptime 0 days 0 hr. 6 min. 38 sec</code>
<code>Trace Level off</code>
<code>Security ON: Local OS Authentication</code>
<code>SNMP OFF</code>
<code>Listener Parameter File </code><code>/data/app/oracle/product/11</code><code>.2.0</code><code>/dbhome_1/network/admin/listener</code><code>.ora</code>
<code>Listener Log File </code><code>/data/app/oracle/diag/tnslsnr/temp-test/listener/alert/log</code><code>.xml</code>
<code>Listening Endpoints Summary...</code>
<code> </code><code>(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=temp-</code><code>test</code><code>)(PORT=1521)))</code>
<code>The listener supports no services</code>
<code>The </code><code>command</code> <code>completed successfully</code>
使用DBCA工具建立資料庫
dbca是資料庫自帶的資料庫配置助手,可以幫助我們友善的建立資料庫,删除資料庫,配置資料庫。
執行dbca指令:
<code>[oracle@temp-</code><code>test</code> <code>~]$ dbca</code>
<a href="https://s4.51cto.com/oss/201711/02/7c098eabdb0384deabf4b3c0a97db642.jpg" target="_blank"></a>
選擇建立資料庫,選擇資料庫類型:
<a href="https://s1.51cto.com/oss/201711/02/1db73960b1a4f1172b470dd7be6f1ec3.jpg" target="_blank"></a>
設定資料庫的名稱和SID為 “orcl”, 設定所有資料庫使用相同的密碼,這裡設定的密碼要滿足密碼複雜度的要求:
<a href="https://s2.51cto.com/oss/201711/02/9dd25350bc89102423c60106bd0141c8.jpg" target="_blank"></a>
選擇資料存放目錄:
<a href="https://s3.51cto.com/oss/201711/02/2759458a6dc2ddf22aa36b71e471a75f.jpg" target="_blank"></a>
選擇閃回恢複區目錄:
<a href="https://s1.51cto.com/oss/201711/02/4bc8e60f97ddddced72909a60bbc6e77.jpg" target="_blank"></a>
選擇sample Schemas, 系統會自動配置資源參數,也可以根據自己的需要動态調整,字元集設定為UTF-8:
<a href="https://s2.51cto.com/oss/201711/02/31f64b1ab9791f2e8668217a961d0dd4.jpg" target="_blank"></a>
然後一路預設配置,直到安裝完成:
<a href="https://s5.51cto.com/oss/201711/02/21c9744ee49f3045c93fb1aca94f56c5.jpg" target="_blank"></a>
在最後的安裝完成界面,資料庫會顯示詳細的資料庫資訊:
<a href="https://s3.51cto.com/oss/201711/02/261587e97e83c1a1c4314461fc0f63df.jpg" target="_blank"></a>
測試資料庫的連接配接
在配置檔案添加環境變量:
<code>vim ~/.bash_profile</code>
<code> </code>
<code>export</code> <code>ORACLE_SID=orcl</code>
<code>source</code> <code>~/.bash_profile</code>
登入資料庫:
<code>[oracle@temp-</code><code>test</code> <code>~]$ sqlplus sys</code><code>/oracle</code> <code>as sysdba</code>
<code>SQL*Plus: Release 11.2.0.1.0 Production on Thu Nov 2 19:40:58 2017</code>
<code>Copyright (c) 1982, 2009, Oracle. All rights reserved.</code>
<code>Connected to:</code>
<code>Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production</code>
<code>With the Partitioning, OLAP, Data Mining and Real Application Testing options</code>
<code>SQL></code>
檢視資料:
<code>SQL> </code><code>select</code> <code>name</code><code>,created,log_mode,open_mode </code><code>from</code> <code>v$</code><code>database</code><code>;</code>
<code>NAME</code> <code>CREATED LOG_MODE OPEN_MODE</code>
<code>--------- --------- ------------ --------------------</code>
<code>ORCL 02-NOV-17 NOARCHIVELOG </code><code>READ</code> <code>WRITE</code>
本文轉自 酥心糖 51CTO部落格,原文連結:http://blog.51cto.com/tryingstuff/1978526