下個禮拜就要開始學習Oracle了,得嘞先在我的CentOS7上裝一個(貌似聽說Oracle裝在Oracle Linux能得到更好的性能,不過懶得下Oracle Linux鏡像,在CentOS7上裝個試試先)。
創建oracle用戶與相關用戶組
為什么要把這部分作為第一步呢,主要是為了避免后面創建文件以及解壓縮等一系列步驟中,要將文件所有者修改為oracle才能在安裝過程中有足夠的權限創建文件或子目錄(Linux的權限既帶來了安全,也帶來了各種不便,稍一走神就忘了賦權限)。
[root@Holmofy ~]# groupadd oinstall [root@Holmofy ~]# groupadd dba [root@Holmofy ~]# useradd -g oinstall -G dba oracle
- 1
- 2
- 3
創建用戶之后,可以使用
passwd oracle命令對oracle用戶的密碼進行設置或修改。
如果你之前有掉坑的經歷,已經添加過用戶了,可以使用id oracle命令核查oracle用戶是否配置完善:看Oracle是否屬於oinstall和dba用戶組。

創建用戶完成后,后面的工作大部分就用oracle用戶去完成了,需要用到root權限再切換或者使用sudo命令(sudoers需要配置,這個不是本文的內容)。
下載安裝包
軟件包官網下載鏈接如下:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
官方提供的文檔鏈接如下:
http://www.oracle.com/technetwork/database/enterprise-edition/documentation/index.html

注意一定要選擇平台相同的安裝包。如果你操作系統是64位的,下載的安裝包是32位的,安裝時會報交叉編譯的錯誤信息:/lib/ld-linux.so.2: bad ELF interpreter。雖然有方法有解決方法,但是為了省去不必要的麻煩也為了程序的執行效率最好還是選擇平台一致的安裝包(走過的坑,你就不要再往下跳了>︿<)。
我這里選用的是x64的安裝包:

使用unzip命令將其解壓(直接解壓就行),解壓完成后會生成一個database文件夾:

解壓完成后有個doc目錄,該目錄下有Oracle安裝以及管理的各種文檔(不過是英文的,而且安裝文檔中沒有CentOS的技術支持,不過有RHEL的也一樣可以照着操作):

檢查硬件需求
畢竟Oracle是個大型軟件,如果你的硬件給的不夠,我勸你還是終止后面的步驟吧(鐵定的安裝失敗)
1. 內存要求
-
至少1GB的RAM(小於1G的機器你還要它干啥)
可以使用以下命令查看內存大小:
# grep MemTotal /proc/meminfo- 1
- 2
- 3
-
檢查RAM與交換分區之間的要求:
| RAM | 需要交換空間的大小 |
|---|---|
| 1 GB和2 GB之間 | RAM大小的1.5倍 |
| 2 GB和16 GB之間 | 等於RAM的大小 |
| 超過16 GB | 16 GB |
使用一下命令查看交換分區大小:
shell
# grep SwapTotal /proc/meminfo
2. 硬盤要求
-
保證
/tmp目錄只要有1GB可用空間# df -h /tmp- 1
- 2
- 3
-
確定可用硬盤空間滿足以下要求:
| 安裝類型 | 軟件文件要求(GB) |
|---|---|
| 企業版 | 3.95 |
| 標准版 | 3.88 |
| 安裝類型 | 數據文件要求(GB) |
|---|---|
| 企業版 | 1.7 |
| 標准版 | 1.5 |
可使用以下命令你給查看你系統可用硬盤空間
shell
# df -h
檢查軟件需求
1. 操作系統要求
官方文檔中說11g版本Oracle安裝包支持以下操作Linux發行版:
- Asianux 2.0
- Asianux 3.0
- Oracle Enterprise Linux 4.0 Update 7 或更新版本
- Oracle Enterprise Linux 5.0
- Red Hat Enterprise Linux 4.0 Update 7 或更新版本
- Red Hat Enterprise Linux 5.0
- SUSE Linux Enterprise Server 10.0
- SUSE Linux Enterprise Server 11.0
CentOS應該和RHEL一樣對待,所以說這里要求並沒有那么嚴格
2. 軟件包依賴
注意這一步是重點了,安裝失敗很大一部分原因是包依賴的問題沒有解決。
官方文檔中對於RHEL5及以上版本的Linux發行版,要求需要以下的軟件包(更高版本也行)
shell
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
elfutils-libelf-devel-static-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
glibc-headers-2.5
kernel-headers-2.6.18
ksh-20060214
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.2
libgomp-4.1.2
libstdc++-4.1.2
libstdc++-devel-4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-devel-2.2.11
你可以使用以下命令查看上面這些軟件包的版本是否大於等於上面的要求:
# rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
- 1
如果符合都符合要求就沒啥問題了,如果出現有未安裝的軟件包,比如我出現的這種情況:
[root@localhost ~]# rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel binutils-2.23.52.0.1-55.el7.x86_64 未安裝軟件包 compat-libstdc++ elfutils-libelf-0.163-3.el7.x86_64 未安裝軟件包 elfutils-libelf-devel 未安裝軟件包 elfutils-libelf-devel-static gcc-4.8.5-4.el7.x86_64 gcc-c++-4.8.5-4.el7.x86_64 glibc-2.17-105.el7.x86_64 glibc-common-2.17-105.el7.x86_64 glibc-devel-2.17-105.el7.x86_64 glibc-headers-2.17-105.el7.x86_64 kernel-headers-3.10.0-327.el7.x86_64 未安裝軟件包 ksh libaio-0.3.109-13.el7.x86_64 未安裝軟件包 libaio-devel libgcc-4.8.5-4.el7.x86_64 libgomp-4.8.5-4.el7.x86_64 libstdc++-4.8.5-4.el7.x86_64 libstdc++-devel-4.8.5-4.el7.x86_64 make-3.82-21.el7.x86_64 sysstat-10.1.5-7.el7.x86_64 未安裝軟件包 unixODBC 未安裝軟件包 unixODBC-devel
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
我的建議是使用yum把這些軟件包都更新一遍:
# yum install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
- 1
配置內核參數
以下命令都需要root用戶權限執行
如果安裝Oracle用於生產的話,內核參數是一個很重要的優化系統性能的配置項,比如配置信號量,I/O,共享內存等參數配置,這個建議參考官方文檔進行詳細配置,官方文檔對這方面有很詳細的說明。如果你和我一樣只是安裝個Oracle用來學習那只需要使用官方文檔中建議的最低配置就行。具體可以在/etc/sysctl.conf文件中,添加以下內核參數:
fs.aio-max-nr = 1048576 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 = 1048586
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
為使上述配置生效而不重啟系統,執行如下命令
# /sbin/sysctl -p
- 1
為oracle用戶添加shell配置
為了提高Oracle軟件性能,需要為Oracle用戶添加以下shell配置:
| Shell Limit | 在limits.conf中的項 | 硬限制 |
|---|---|---|
| 打開文件描述符的最大數量 | nofile |
65536 |
| 單個用戶可用的最大進程數 | nproc |
16384 |
| 進程堆棧段的最大大小 | stack |
10240 |
步驟如下:
- 在
/etc/security/limits.conf文件,添加以下參數:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
- 1
- 2
- 3
- 4
- 在
/etc/pam.d/login文件中添加一行:
session required pam_limits.so
- 1
-
在
/etc/profile文件添加以下腳本:if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
創建並配置環境變量
安裝路徑可以自選,我這里直接在根路徑下創建了一個oracle目錄,如果用於生產建議不要這么干,不方便以后的擴展。
注意權限
[root@localhost /]# mkdir /oracle/app [root@localhost /]# chown -R oracle:oinstall /oracle [root@localhost /]# chmod -R 775 /oracle
- 1
- 2
- 3
配置oracle用戶環境變量:
1、使用su - oracle命令切換為oracle用戶登錄
2、使用任意文本編輯器打開Shell啟動腳本,如:
vi .bash_profile
- 1
3、添加如下環境變量:
export ORACLE_BASE=/oracle export ORACLE_HOME=/oracle/app export ORACLE_SID=oracleSID export PATH=$ORACLE_HOME/bin:$PATH
- 1
- 2
- 3
- 4
開始正式安裝
進入到之前解壓的安裝包,運行runInstaller腳本開始安裝
注意:一定要使用oracle用戶登錄圖形界面,否則運行runInstaller會報錯顯示錯誤(因為后面使用圖形化界面安裝的,需要權限去運行圖形界面程序)。

如果你彈出了以下界面,那么恭喜你離成功只有一半的距離了。
1、第一步用來配置更新以及技術支持的,把勾去掉直接下一步就行

2、 配置安裝選項,這三個選項分別表示:①創建並配置一個新數據庫,適用於新安裝數據庫的用戶;②只安裝數據庫軟件,適用於已有Oracle數據庫數據用於數據遷移的;③升級已有數據庫,適用於將老數據庫升級成新數據庫的用戶。毫無疑問這里選擇第一個選項。

3、第三步配置桌面版還是服務器版,桌面版是最小化配置,這里為了練習選擇服務器版的配置。

4、第四步分布式網格配置,這里選擇單實例服務器配置,如果要配置分布式服務的話可以參考前面說的安裝文檔,里面有詳細的分布式服務安裝過程。

5、這個我們為了達到練手的目的選擇高級安裝(典型安裝基本都已經幫我們配置好了,有啥挑戰性)

6、選擇語言,這里我選擇英文和簡體中文。

7、第七步選擇數據庫版本,這里選擇企業版

8、選擇安裝路徑,這個已經在環境變量里配置過了

9、這個Inventory Directory目錄用於記錄Oracle的清單信息的,清單信息中包括Oracle的安裝路徑等信息。這里我選擇在oracle的家目錄下建一個目錄存放這些安裝信息。

10、第十步用於創建數據庫的類型:
- 通用/事務處理:專為一般用途或交互較多的應用程序而設計。
- 數據倉庫:對數據存儲應用程序進行優化。
這里選擇通用的就行。

11、配置數據庫名,和Oracle服務ID號
注意數據庫名一定要記住,以后進行程序開發會用到這個數據庫名

12、十二步,這里需要配置一下字符集,將字符集設置成UTF-8,其他的不用修改(如果有特殊需求可以參考文檔來配置)。

13、這一步用來配置系統信息郵件通知的,可以跳過

14、這一步用於配置數據存儲的(數據文件存儲位置),這里我們把數據存儲在/oracle/oradata目錄下。

15、十五步用於配置數據備份,這里我們只是用來學習不需要自動備份,實際生產肯定是要做備份的。

16、十六步配置賬號密碼,這里我將所有的默認用戶統一使用相同的密碼(如果密碼太簡單可能會報錯,需要大小寫數字都包含,需要精心設計一個密碼)。
注意密碼不能忘了,不管是數據庫管理還是軟件開發都會用到這個密碼。

17、這一步用於配置數據庫用戶組的,只要安裝前的配置工作完成了,這一步可以直接使用默認的。

18、這一步會檢測交換分區大小、內核參數以及依賴包是否安裝。只要前面准備工作都完成了,下面的錯誤可以直接忽略(比如它要求的軟件包,我們的版本實際上比它要求的還高,所以這里的報錯沒必要理會它)。

19、這一步是對前面所有配置的一個總結,我們可以直接點擊完成

20、只要前面的配置沒問題,我們就可以安心的等待安裝成功了

21、安裝完成后,彈出下面這個界面,我們點擊password management對數據庫用戶的密碼進行一些配置

22、配置數據庫用戶密碼

這里叫你運行使用root用戶運行兩個腳本,運行一下就可以了。


安裝成功,此處應有掌聲。
使用SQLplus查詢scott表進行測試

如果SQLplus命令找不到,注意看一下環境變量是否配置正確,然后將oracle注銷后再重新登錄
大功告成
