關於Oracle數據庫安裝的文章網上到處都是,百度一下就能找到很多,例如:
能百度到的Oracle安裝是常規的方法,我就不講了,本文向大家介紹一種更簡單的非常規的安裝方法,這種方法適用於初學者。
一、Oracle安裝存在的問題
Oracle數據庫系統對服務器的硬件和軟件要求比較嚴格,一般來說,用於Oracle生產環境的服務器配置非常好,內存在16GB以上,在圖形界面中安裝Oracle非常容易,極少失敗。
但是,對初學者來說,學習資源有限,一般是在VMWare虛擬機上安裝CentOS操作系統,或租用最低配置的雲服務器(1核1G/2G內存),不可能有那么好的服務器來安裝Oracle,也可能沒有圖形界面。在虛擬機或低配置的雲服務器上安裝Oracle問題很多,莫名其妙,根本找不到問題的原因和解決方法,困難重重,讓人欲哭無淚。
二、如何解決Oracle安裝的問題
解決虛擬機或低配置的雲服務器上安裝Oracle的方法有兩種:
1)不用圖形界面,采用靜默方式安裝,這種方法的技術難度比較大,Oracle的DBA經常采用這種方法,而普通程序員很難掌握。
2)把已經安裝好的Oracle軟件、數據庫實例和環境參數打包壓縮,然后在目標服務上解壓恢復,對初學者來說,這是搭建Oracle數據庫學習環境的最佳方案,也是本文采用的方案。
在安裝Oracle之前,您必須已經掌握了Linux的常用命令,具備Oracle數據庫系統的基礎知識。
三、獲得Oracle壓縮包
登錄C語言技術網,在“資源下載”欄目中下載軟件安裝包,文件名是oracle11gR2.tgz。
四、軟件需求
建議采用CentOS7系列版本的操作系統,CentOS6和CentOS7在系統配置和操作上有較大差別,CentOS8以上版本對初學者來說沒有必要。
建議先把CentOS7操作系統的字符集設置為zh_CN.gbk。
五、硬件需求
1、查看內存和交換區的大小
采用free -m
命令查看系統的內存和交換區,如下:
Mem:
行顯示的是物理內存的大小和使用情況,Swap:
行顯示的是交換區的大小和使用情況,單位是MB。
安裝Oracle的物理內存要求在1024MB以上,交換區的要求如下:
可用內存 | 交換區大小 |
---|---|
1024MB到2048MB之間。 | 1.5倍於物理內存。 |
2049MB到8192MB之間。 | 1倍於物理內存。 |
大於8192MB。 | 0.75倍於物理內存。 |
2、創建交換區
如果沒有交換區或交換區太小,先創建交換區,交換區的大小見上表的對應關系,以下步驟將創建一個2048M的交換區。
1)用root用戶執行dd命令創建/swap1文件。
dd if=/dev/zero of=/swap1 bs=1024 count=2048000
如下:
2)把/swap1文件設置成交換區。
/sbin/mkswap /swap1
如下:
3)把/swap1交換區設置為有效狀態。
/sbin/swapon /swap1
如下:
4)用free -m
命令查看交換區,確認已生效。
如下:
5)修改/etc/fstab文件,讓CentOS操作系統在每次重啟時自動加載/swap1交換區。
在/etc/fstab文件中增加以下內容。
/swap1 swap swap defaults 0 0
如下:
6)重啟操作系統,重啟后再確認一下交換區/swap1是否已加載。
3、刪除交換區
如果創建的交換區不符合要求,可以用以下步驟刪除它。
1)停止正在使用的swap分區。
swapoff /swap1
2)刪除swap分區文件。
rm /swap1
3)修改/etc/fstab文件,刪除開機自動掛載/swap1的命令。
六、安裝對應的依賴包
安裝Oracle之前,還需要安裝一些CentOS的軟件包,用以下命令執行安裝(用root用戶執行)。
yum install -y binutils* compat-libstdc* elfutils-libelf* gcc* glibc* ksh* libaio* libgcc* libstdc* make* sysstat* libXp* glibc-kernheaders ksh binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl sysstat libXp unixODBC unixODBC-devel
這些軟件包依賴關系比較復雜,不管它,多執行幾次以上命令,直到全部的軟件包都是最新版本。
七、修改系統核心參數
1、修改/etc/sysctl.conf文件
/etc/sysctl.conf是操作系統的核心參數配置文件,在文件最后增加以下行。
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax= 2147483648
kernel.shmmni= 4096
kernel.sem = 250 32000100 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
注意,kernel.shmmax參數的值為操作系統內存的一半,單位是字節。例如,操作系統總內存如果是1024MB,那么kernel.shmmax的值應該是512*1024*1024=536870912,即kernel.shmmax=536870912
其它的參數照抄。
2、 修改/etc/security/limits.conf文件
/etc/security/limits.conf是操作系統對用戶使用資源的配置文件,在文件最后增加以下行。
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle hard stack 10240
3、 修改/etc/pam.d/login文件
/etc/pam.d/login是用戶認證文件,在文件最后增加以下行。
session required /lib64/security/pam_limits.so
4、 修改/etc/profile文件
/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
5、 修改/etc/selinux/config文件
/etc/selinux/config是SELinux配置文件,修改SELINUX的值,禁用它。
SELINUX=disabled
7、重啟服務器
init 6
或 reboot
八、創建Oracle用戶和組
Oracle的安裝用戶是oracle,組是dba,oracle用戶的根目錄是/oracle,不能采用其它目錄(注意是小寫的字母),如果/oracle目錄的空間不夠,可以采用軟鏈接的方式,把有/oracle鏈接到其它有足夠空間的目錄。
1)創建dba組。
groupadd dba
2)創建oracle用戶,組名是dba,用戶根目錄是/oracle,不可改變。
useradd -n oracle -g dba -d /oracle
3)修改oracle用戶的密碼。
passwd oracle
九、解開壓縮包
把Oracle的壓縮包文件oracle11gR2.tgz上傳到服務器的/tmp目錄。
采用su - oracle
切換到oracle用戶,在根目錄下執行解開壓縮包。
su - oracle
cd /
tar zxvf /tmp/oracle11gR2.tgz
exit;
注意,解壓縮包后,一定要退出oracle用戶,否則oracle用戶的環境變量不會生效。
十、數據庫的參數
oracle11gR2.tgz解壓后,會生成/oracle/.bash_profile文件,包括了Oracle數據庫的安裝參數,內容如下:
export ORACLE_BASE=/oracle/base
export ORACLE_HOME=/oracle/home
export ORACLE_SID=snorcl11g
export NLS_LANG='Simplified Chinese_China.ZHS16GBK'
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:.
十一、數據庫的啟動
用oracle用戶登錄,執行lsnrctl start
啟動網絡監聽服務,執行dbstart
啟動數據庫系統。
十二、數據庫的關閉
用oracle用戶登錄,執行lsnrctl stop
關閉網絡監聽服務,執行dbshut
關閉數據庫系統。
在重啟或關閉服務器操作系統之前,一定要關閉數據庫,否則數據庫損壞的概率非常大。
十三、采用sqlplus登錄數據庫
用oracle用戶登錄CentOS系統。
執行sqlplus scott/tiger
,以scott用戶的身份登錄數據庫。
在sqlplus中,輸入exit
;退出sqlplus。
在Shell中,執行sqlplus / as sysdba
以系統管理員身份登錄數據庫。
十四、查詢數據庫的版本
select * from v$version;
十五、服務器防火牆配置
Oracle數據庫缺省的通信端口是1521,如果想從遠程連接Oracle數據庫,需要開通服務器防火牆的1521端口。
CentOS7和CentOS6的防火牆設置不同,CentOS7采用以下命令開通1521端口:
firewall-cmd --zone=public --add-port=1521/tcp --permanent
以下是CentOS7防火牆的相關操作命令。
1、查看防火牆的命令
1)查看防火牆的版本。
firewall-cmd --version
2)查看firewall的狀態。
firewall-cmd --state
3)查看firewall服務狀態(普通用戶可執行)。
systemctl status firewalld
4)查看防火牆全部的信息。
firewall-cmd --list-all
5)查看防火牆已開通的端口。
firewall-cmd --list-port
6)查看防火牆已開通的服務。
firewall-cmd --list-service
7)查看全部的服務列表(普通用戶可執行)。
firewall-cmd --get-services
8)查看防火牆服務是否開機啟動。
systemctl is-enabled firewalld.service
2、配置防火牆的命令
1)啟動、重啟、關閉防火牆服務。
#啟動
systemctl start firewalld.service
#重啟
systemctl restart firewalld.service
#關閉
systemctl stop firewalld.service
2)開放、移去端口。
#開放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#移去80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
3)開放、移去服務。
#開放http服務
firewall-cmd --zone=public --add-service=http --permanent
#移去http服務
firewall-cmd --zone=public --remove-service=http --permanent
4)設置開機時啟用、禁用防火牆服務。
#啟用服務
systemctl enable firewalld.service
#禁用服務
systemctl disable firewalld.service
十六、雲平台訪問策略配置
如果Oracle數據庫安裝在雲服務器上,需要登錄雲服務器提供商的管理平台開通訪問策略(或安全組),開通1521端口的訪問策略。
不同雲服務器提供商的管理平台操作方法不同,具體操作方法閱讀操作手冊、或者百度,或者咨詢雲服務器提供商的客服。
十七、版權聲明
C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道
如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!