1.1. 涉及工具及環境
1) CentOS7 64 位系統
2) oracle 安裝包文件
a) linux.x64_11gR2_database_1of2.zip
b) linux.x64_11gR2_database_2of2.zip
3) oracle 安裝依賴包,提前下載到一個文件夾中
binutils compat-libstdc -33 elfutils-libelf elfutils-libelf-devel gcc gcc-c glibc glibc-
common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc libstdc -devel
make sysstat unixODBC unixODBC-devel(複制這些,手敲累哈)
1.2. Oracle 服務器要求
1) 最小内存 1G,推薦 2G 或 2G 以上
2 / 20
2) 1GB 跟 2GB 物理内存之間的,設定 swap 大小為物理内存的 1.5 倍
1. 2GB 跟 16GB 物理内存之間的,設置 swap 大小與物理内存相等
2. 16GB 物理内存以上的,設置 swap 大小為 16GB
3) 硬盤要求空間至少 5-6GB
硬件檢測:
cat /etc/issue
uname -r (版本)
grep MemTotal /proc/meminfo (内存大小)
grep SwapTotal /proc/meminfo (交換區大小)
grep "model name" /proc/cpuinfo (CPU 信息)
free (可用内存)
二、 準備工作2.1. 上傳 oracle 11g 安裝文件到服務器并解壓(如果沒有可以到官網免費下載實驗)
安裝包及其依賴包上傳到/home/software/oraclefile 目錄下,将安裝包解壓
/home/software/oraclefile
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
待解壓完畢後會生成文件夾/home/software/oraclefile /database,裡面是解壓後的所有 oracle
安裝文件。
2.2. 關閉 selinux
vim /etc/selinux/config 設置 SELINUX=disabled(永久關閉 selinux,但是需要重新啟動系統)
setenforce 0 // ( 臨 時 關 閉 selinux , 馬 上 生 效 , 重 啟 失 效 )
2.3. 關閉防火牆
systemctl stop firewalld.service //臨時關閉防火牆
3 / 20
systemctl disable firewalld.service // 永 久 關 閉 防 火 牆
3.1. 檢查依賴包并手動安裝
➢ 檢查 oracle 依賴包缺失項:(ssh 連通後,複制以下内容即可,手動太累,檢查完畢如果
有 not 找不到的依賴包,需要自己下載,再安裝。或者上傳一個 Centos 的 ISO 文件,配
置本地 yum 源進行安裝,也就說,這些缺少的依賴都在 Centos 中可以找到)。
rpm -q elfutils-libelf elfutils-libelf-devel gcc gcc-c glibc glibc-common glibc-devel glibc-
headers ksh libaio libaio-devel libgcc libstdc libstdc -devel make sysstat unixODBC unixODBC-devel
➢ 進入到依賴包文件夾内,手動進行安裝缺失包
cd /home/software/oraclefile/Oracle11gRPMlinux/x86_64(文件夾名稱可以自己命名,不影響以下安裝)
rpm -ivh *.rpm –nodeps –force 強制安裝依賴包
4 / 20
5 / 20
一共 39 個依賴包。
3.2. 添加 oracle 用戶和用戶組
groupadd oinstall //創建 oinstall 組
groupadd dba //創建 dba 組
useradd -g oinstall -G dba oracle //将 oracle 用戶加入組 (-g 設置的是用戶的主用戶
組,這些信息記錄在/etc/passwd 中,-G 設置的是用戶附加組,記錄在/etc/group 中)
passwd oracle //修改并設定 oracle 用戶密碼 (密碼為 Pass@w0rd)
3.3. 修改内核參數配置文件
1) vi /etc/sysctl.conf 配置文件内加入修改以下參數,如果沒有可以自己添加,如果默認值比
參考值大,則不需要修改。
fs.file-max= 6815744(系統所有進程一共可以打開文件的數量,一般為内存大小(KB)的
10%)
fs.aio-max-nr=1048576(同時可以擁有的異步 IO 請求數目)
net.ipv4.ip_local_port_range= 9000 65500(定義了網絡連接可以用作其源(本地)端口的最
小和最大端口,适用于 TCP 和 UDP 連接)
6 / 20
net.core.rmem_default= 262144(内核套接字接收緩存區默認的大小)
net.core.rmem_max= 4194304(内核套接字接收緩存區最大值)
net.core.wmem_default= 262144(内核套接字發送緩存區默認的大小)
net.core.wmem_max= 1048576(内核套接字發送緩存區最大值)
kernel.sem= 250 32000 100 128(一共四組,組間有空格,250 信号集容納的最大數量,32000
所有信号的最大數量,100 調用單個信号集中最大信号數量,128 信号集的最大值)
2)執行命令 sysctl 使其自檢并生效 sysctl –p
3.4. 修改用戶的限制文件
1) 修改進程數和最大會話數
執行如下命令,修改配置文件/etc/security/limits.conf
vi /etc/security/limits.conf 在文件尾部添加如下信息:
oracle soft nproc 2047(oracle 用戶可用的最大進程數量軟限制,可以增加,上限是 16384)
oracle hard nproc 16384(oracle 用戶可用的最大進程數量硬限制)
oracle soft nofile 1024(oracle 用戶可打開的文件描述符的最大數的軟限制,可以增加,上
限是 65536)
oracle hard nofile 65536(oracle 用戶可打開的文件描述符的最大數的硬限制)
7 / 20
2)設置關聯信息
執行如下命令,修改關聯文件/etc/pam.d/login
vi /etc/pam.d/login
在文件尾部添加如下信息:
session required /lib64/security/pam_limits.so
session required pam_limits.so
備注:64 位系統時,千萬别寫成/lib/security/pam_limits.so,否則導緻無法登錄,這樣才能使
設置生效。
3.5. 創建安裝目錄和設置文件權限
1)創建安裝目錄
mkdir /usr/local/oracle //數據庫系統安裝目錄
mkdir /usr/local/oradata //數據庫數據安裝目錄
mkdir /usr/local/oradata_back //數據備份目錄
mkdir /usr/local/oraInventory //清單目錄
2)賦予組用戶及權限
chown -R oracle:oinstall /usr/local/oracle /usr/local/oraInventory /usr/local/oradata
(/usr/local/oracle 目錄,/usr/local/oraInventory 目錄,/usr/local/oradata 目錄更改其所有
8 / 20
者為 oracle,所有組更改為 oinstall。)
chmod -R 775 /usr/local/oracle /usr/local/oraInventory /usr/local/oradata ( 目 錄
/usr/local/oracle,目錄/usr/local/oraInventory,目錄/usr/local/oradata 下的所有文件包括子目
錄的文件,所屬組具有讀 r,寫 w,執行 x 的權限,所屬者讀 r,寫 w,執行 x 的權限,其他用戶
具 有 讀 r, 執 行 x 的 權 限 , -R 是 連 同 子 目 錄 一 起 賦 權 。 其 中 定 義 為
r=4,w=2,x=1,775=4 2 1,4 2 1,4 1)
3.6. 配置 oracle 用戶環境變量
vi /home/oracle/.bash_profile 文件内加入并修改至以下内容
export ORACLE_BASE=/usr/local/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
保存退出後執行 source 命令立即生效:source .bash_profile
其中,export 是設置環境變量,source 是讓環境變量立即生效。
3.7. 編輯靜默安裝響應文件
首先進入 oracle 用戶:su – oracle(中間的橫杠一定要加,是帶環境變量)
1) 複制一份模闆
cp -R /home/software/oraclefile/database/response /usr/local/oracle( cp 命令相當于
windows 下的 copy 命令,-R 是連同子目錄)
将 oracle 靜默安裝所需應答文件全部拷貝至 /usr/local/oracle 文件夾下
2) 修改安裝所需的所有響應文件的所屬組及權限
cd /usr/local/oracle/response
chown oracle:oinstall /usr/local/oracle/response/*.rsp
chmod 755 /usr/local/oracle/response/*.rsp
9 / 20
3) 配置 db_install.rsp 文件
vi /usr/local/oracle/response/db_install.rsp
文件内需要修改相應的參數配置如下:
oracle.install.option=INSTALL_DB_SWONLY #安裝類型,隻裝數據庫軟件
ORACLE_HOSTNAME= localhost.localdomain #主機名稱(命令 hostname 查詢)
UNIX_GROUP_NAME=oinstall # 安裝組
INVENTORY_LOCATION=/usr/local/oraInventory #INVENTORY 目錄(**不填就是默認值,本
例此處需修改,因個人創建安裝目錄而定,我們之前的 3.5 中創建了這個目錄)
SELECTED_LANGUAGES=en,zh_CN # 選擇語言
ORACLE_HOME=/usr/local/oracle/product/11.2.0/db_1 # oracle_home *路徑根據目錄
(需要手動配置路徑)情況注意修改 本例安裝路徑/usr/local/oracle
ORACLE_BASE=/usr/local/oracle # oracle_base *注意修改
oracle.install.db.InstallEdition=EE # oracle 版本
oracle.install.db.isCustomInstall=false #自定義安裝,否,使用默認組件
oracle.install.db.DBA_GROUP=dba #dba 用戶組
oracle.install.db.OPER_GROUP=dba #oper 用戶組
oracle.install.db.config.starterdb.password.SYS=Pass@w0rd
oracle.install.db.config.starterdb.password.SYSTEM= Pass@w0rd
DECLINE_SECURITY_UPDATES=true # **注意此參數 設定一定要為 true
(385 行)
4)需要創建一個目錄 mkdir –p /usr/local/oracle/product/11.2.0/db_1
3.8. 根據響應文件安裝 oracle
在 oracle 用戶下安裝
su - oracle
$ cd /home/software/oraclefile/database/
$./runInstaller -silent –responseFile /usr/local/oracle/response/db_install.rsp -ignorePrereq
參數說明:
/home/database 是安裝包解壓後的路徑,此處根據安裝包解壓所在位置做修改,因人而
異。
runInstaller 是主要安裝腳本
-silent 靜默模式
-force 強制安裝
-ignorePrereq 忽略 warning 直接安裝。
-responseFile 讀取安裝應答文件。
10 / 20
安裝過程中,如果提示[WARNING]不必理會,此時安裝程序仍在進行,如果出現[FATAL],
則安裝程序已經停止了。
上圖是提示權限不夠,在 root 用戶下再執行一遍
chown -R oracle:oinstall /usr/local/oracle /usr/local/oraInventory /usr/local/oradata
如果想查看錯誤日志,可以打開另一個終端,
執行 tail -100f /usr/local/oraInventory/logs/installActions*.log
如果不需要看,可以不執行這一步。
下圖是正常安裝的過程,這個過程光标在閃爍,靜靜的等待即可,約 10 分鐘左右
當出現以下界面時, 表示安裝成功了,按照其提示操作。(靜靜的等待,光标在閃)
在新創建的 root 窗口内執行以下提示的腳本:
#cd /usr/local/oraInventory/
sh orainstRoot.sh(設置文件目錄位置和擁有該目錄的操作系統組)
11 / 20
#cd /usr/local/oracle/product/11.2.0/db_1/
sh root.sh (設置必要的操作系統權限,檢查生成的日志文件)
3.9. 編輯靜默建庫響應文件
su – oracle
$cd /usr/local/oracle/response
$mv dbca.rsp dbca_orcl.rsp #改名為 dbca_數據庫名.rsp
3.10. 靜默配置監聽(網絡)
通 過 response 文 件 運 行 netca, 生 成 sqlnet.ora 和 listener.ora 文 件 , 位 于
$ORACLE_HOME/network/admin 目錄下:
# su – oracle
$netca /silent /responsefile /usr/local/oracle/response/netca.rsp
12 / 20
$ ll $ORACLE_HOME/network/admin/*.ora(這裡是兩個 LL,千萬不要寫成雙豎杠或者兩個II)
成功運行後,在/user/local/oracle/product/11.2.0/db_1/network/admin 目錄下生成 sqlnet.ora
和 listener.ora 兩個文件
啟動監聽 $/usr/local/oracle/product/11.2.0/db_1/bin/lsnrctl start
通過 netstat -tlnp 命令,看到
tcp 0 0 :::1521 :::* LISTEN 5477/tnslsnr(顯示 tcp6)
說明監聽器已經在 1521 端口上開始工作了。
netstart命令參數:
-t:tcp
-u:udp
l:列出有在 Listen (監聽) 的服務狀态
-n:拒絕顯示别名,能顯示數字的全部轉化成數字
p:顯示建立相關鍊接的程序名
3.11. 靜默安裝數據庫(同時也建立一個對應的實例)
1)修改/usr/local/oracle/response/dbca_orcl.rsp,設置如下:
RESPONSEFILE_VERSION = "11.2.0" #不能更改
OPERATION_TYPE = "createDatabase" #不能更改
GDBNAME="orcl "#78 行全局數據庫的名字=SID 主機域名
SID="orcl" //149 行 SID 對應的實例名字
TEMPLATENAME = "General_Purpose.dbc" 169 行 #建庫用的模闆文件
SYSPASSWORD="Pass@w0rd" 190 行 #SYS 管理員密碼
13 / 20
SYSTEMPASSWORE=" Pass@w0rd"#200 行//SYSTEM 管理員密碼
DATAFILEDESTINATION= /usr/local/oradata 357 行//數據文件存放目錄
RECOVERYAREADESTINATION=/usr/local/oradata_back 367 行#恢複數據存放目錄
CHARACTERSET="AL32UTF8"#字符集,415 行,重要!!!建庫後一般不能更改,所以建庫前要
确定清楚
TOTALMEMORY= "5120" 540 行 #oracle 内存 5120MB,建議為物理内存 70%~85%
2)靜默建庫命令如下
$dbca -silent -responseFile /usr/local/oracle/response/dbca_orcl.rsp
3)查看日志文件:
$ cat /usr/local/oracle/cfgtoollogs/dbca/orcl/orcl.log(此步不執行也可以)
4) 建庫後實例檢查
14 / 20
$ ps -ef | grep ora_ | grep -v grep| wc –l
21(我第一遍安裝是 21 個進程,第二遍安裝是 22 個進程,細想中……)
(ps –ef 查詢所有進程,grep 通過管道來過濾,grep –v 是反向查詢的意思,gerp –v grep 的
作用是除去包含 grep 的選項,wc –l 統計查詢到的結果數量。)
$ps -ef | grep ora_
5) 建庫後監聽檢查
$lsnrctl status
15 / 20
上圖可以看到監聽是成功的。
3.12. 修改 oracle 啟動配置文件
su – oracle
$vi/etc/oratab
orcl:/usr/local/oracle/product/11.2.0/db_1:Y //把"N"改成"Y"
這樣就可以通過 dbstart 啟動此實例,監聽器。
$dbshut $ORACLE_HOME
Processing Database instance"orcl": log file
/usr/local/oracle/product/11.2.0/db_1/shutdown.log
此時所有 oracle 的進程關閉,監聽器也停止。
$dbstart $ORACLE_HOME
Processing Database instance"orcl": log file /usr/local/oracle/product/11.2.0/db_1/startup.log
此時監聽器工作,orcl 實例運行,再次查看監聽器狀态。
$lsnrctl status
16 / 20
四、 Linux 下建立 Oracle 服務及其開機自啟動以 root 身份建立開機啟動 oracle 服務的腳本:vi/etc/init.d/oracle,添加如下腳本:
#!/bin/sh
#chkconfig: 2345 20 80
#description: Oracledbstart / dbshut
#以上兩行為 chkconfig 所需
ORA_HOME=/usr/local/oracle/product/11.2.0/db_1
ORA_OWNER=oracle
LOGFILE=/var/log/oracle.log
Echo "#################################" >> ${LOGFILE}
date "### %T%a %D: Run Oracle" >> ${LOGFILE}
if [ ! -f${ORA_HOME}/bin/dbstart ] || [ ! -f ${ORA_HOME}/bin/dbshut ]; then
echo "Error: Missing the script file${ORA_HOME}/bin/dbstart or
${ORA_HOME}/bin/dbshut!" >> ${LOGFILE}
echo"#################################" >> ${LOGFILE}
exit
fi
start(){
echo "###Startup Database..."
su - ${ORA_OWNER} -c"${ORA_HOME}/bin/dbstart ${ORA_HOME}"
echo "###Done."
echo "###Run database control..."
su - ${ORA_OWNER} -c"${ORA_HOME}/bin/emctl start dbconsole"
echo "###Done."
}
stop(){
echo "###Stop databasecontrol..."
su - ${ORA_OWNER} -c"${ORA_HOME}/bin/emctl stop dbconsole"
echo "###Done."
echo "###Shutdown Database..."
su - ${ORA_OWNER} -c"${ORA_HOME}/bin/dbshut ${ORA_HOME}"
echo "###Done."/
}
case"$1" in
'start')
start >> ${LOGFILE}
;;
'stop')
stop >> ${LOGFILE}
;;
'restart')
stop >> ${LOGFILE}
17 / 20
start >> ${LOGFILE}
;;
esac
date "### %T%a %D: Finished." >> ${LOGFILE}
echo "#################################" >> ${LOGFILE}
echo ""
腳本圖1
腳本圖2
18 / 20
腳本部分解釋:
Chkconfig:2345 20 80,2345 表示系統運行級别是 2,3,4,5 時都啟動此服務,20 是啟動的
優先級,80 是關閉的優先級。如果啟動優先級配置的數太小比如是 0,則有可能啟動失
敗,因為此時其所依賴的網絡服務器還沒有啟動,從而導緻啟動失敗。
description: Oracledbstart / dbshut 關于服務的說明,啟動和關閉。
ORA_HOME=/usr/local/oracle/product/11.2.0/db_1 這裡的變量值是你自己安裝 oracle 數據
庫的安裝路徑,路徑中你會找到 product,然後依次找到 db_1。
ORA_OWNER=oracle,owner 是屬于 Oracle 用戶.
使用如下命令将/etc/init.d/oracle 置為可執行文件:
chmod a x/etc/init.d/oracle
至此,可使用如下命令對 oracle 進行啟動和關閉
/etc/init.d/oracle start #啟動 oracle(包括數據庫實例、監聽器、EM)
/etc/init.d/oracle stop #關閉 oracle
/etc/init.d/oracle restart #重啟 oracle
19 / 20
su - root
将 oracle 添加到 chkconfig 中:
chkconfig --add oracle
可使用如下命令查看和設置 oracle 服務的開機啟動級别:
chkconfig | grep oracle #查看 oracle 服務的開機啟動級别
chkconfig –level 24 oracle off #修改 oracle 服務的開機啟動級别
chkconfig –level 35 oracle on
chkconfig | grep oracle #查看 oracle 服務的開機啟動級别
至此可使用如下命令對 oracle 的啟動或關閉進行管理
service oracle start #啟動
service oracle stop #關閉
service oracle restart #重啟
20 / 20
建立連接:
ln –s /etc/init.d/oracle /etc/rc0.d/K01oracle #關機執行
ln –s /etc/init.d/oracle /etc/rc6.d/K01oracle #重啟執行
5.1. 啟動 oracle 的步驟
Linux 下啟動 Oracle 分為以下兩步:
啟動數據庫實例,啟動 lsnrctl 監聽
1) 啟動 oracle 數據庫實例
◼ 以 system 用戶身份登陸 oracle
◼ 在 oracle 用戶下,輸入 sqlplus /nolog
◼ 使用管理員權限 connect/as sysdba
◼ 啟動/關閉服務
2) 啟動 oracle 監聽
數據庫實例啟動之後,需啟動監聽器,才能讓遠程用戶建立連接。可使用如下命令啟動監
聽器:
◼ 登陸
root 登陸之後切換到 oracle 用戶上,輸入 su - oracle
◼ 檢查 oracle 監聽器運行狀态
通過 lsnrctl status 命令查看;
啟動監聽,通過命令 lsnrctl start
5.2. 查看 oracle 服務是否已經啟動
➢ ps aux | grep ora_ #若無 ora_**_**相關的進程,則 oracle 數據庫實例未啟動
➢ netstat -tlnup | grep 1521 #若無任何顯示,則監聽器未啟動
➢ lsnrctl status #查看監聽器狀态
➢ netstat -tlnup | grep 1158 #若無任何顯示,則 EM 未啟動
➢ emctl status dbconsole #查看 EM 狀态
本次 em 未啟動成功,但是不影響使用。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!