一、准備工作
1、關閉selinux
查看selinux狀態:
getenforce
或者sestatus -v
臨時關閉:
setenforce 0
永久關閉:
vim /etc/selinux/config
按i進入編輯模式
SELINUX=disabled
編輯完成后按Esc鍵,輸入“:wq”存盤退出
2、關閉firewalld 安裝iptables
分別執行如下命令:
systemctl stop firewalld.service
停止服務
systemctl disable firewalld.service
禁用服務
yum -y install iptables-services
安裝rpm軟件包
systemctl restart iptables.service
重啟服務
systemctl enable iptables.service
3、創建用戶
groupadd oinstall
創建用戶組oinstall
groupadd dba
創建用戶組dba
useradd -g oinstall -G dba -m oracle
創建用戶Oracle並指定初始組oinstall和附加組dba
passwd oracle
給新用戶Oracle設置密碼
4、創建安裝目錄,解壓文件
這里是安裝到根下ora目錄,權限755,可以給高點如777
mkdir -p /ora/oracle
unzip -d /ora/ linux.x64_11gR2_database_1of2.zip
unzip -d /ora/ linux.x64_11gR2_database_2of2.zip
chown -R oracle:oinstall /ora
chmod 755 -R /ora
ora下各個目錄的作用:
database
解壓安裝程序后自動生成的安裝包目錄
oracle
oracle數據庫安裝目錄
oraInventory
默認安裝日志存放目錄(安裝后生成)
5、安裝oracle所需依賴和桌面組件
桌面組件有700多MB
yum -y install binutils compat compat-libstdc gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
yum -y groupinstall "GNOME Desktop" "Graphical Administration Tools"
6、將服務器名寫入到hosts文件,可以測試ping sername 是否返回127.0.0.1
echo '127.0.0.1 oracledb localhost localhost.localdomain' >> /etc/hosts
ping -c 3 oracledb
返回結果
PING oracledb (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.041 ms
--- oracledb ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.030/0.038/0.043/0.005 ms
7、修改內核(/etc/sysctl.conf),增加或修改以下內容
vim /etc/sysctl.conf
按i進入編輯模式
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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
內核參數需要注意,shmall 和shmmax 的值由服務器內存決定。(不過這個參數設置博主我現在也是一知半解,沒完全搞明白,查了半天意思如下:)
kernel.shmall :
該參數控制可以使用的共享內存的總頁數。Linux共享內存頁大小為4KB,共享內存段的大小都是共享內存頁大小的整數倍。一個共享內存段的最大大小是16G,那么需要共享內存頁數是16GB/4KB=16777216KB/4KB=4194304(頁),也就是64Bit系統下16GB物理內存,設置kernel.shmall = 4194304 符合要求。
kernel.shmmax:
是核心參數中最重要的參數之一,用於定義單個共享內存段的最大值。64位linux系統:可取的最大值為物理內存值-1byte,建議值為多於物理內存的一半,例如,如果為16GB物理內存,可取1610241024*1024-1=17179869183。
kernel.shmmni:
該參數是共享內存段的最大數量。shmmni缺省值4096,一般肯定是夠用了。
kernel.sem = 250 32000 100 128 的意思是:
250是參數semmsl的值,表示一個信號量集合中能夠包含的信號量最大數目。
32000是參數semmns的值,表示系統內可允許的信號量最大數目。
100是參數semopm的值,表示單個semopm()調用在一個信號量集合上可以執行的操作數量。
128是參數semmni的值,表示系統信號量集合總數。
以下適用於8G內存左右服務器配置,12G或者16G以上建議調整。經測試4G的服務器也適合,不用做修改。
完成后使用命令
sysctl -p
8、修改認證模塊
vim /etc/security/limits.conf
按i進入編輯模式
oracle soft nproc 131072
oracle hard nproc 131072
oracle soft nofile 131072
oracle hard nofile 131072
oracle soft core unlimited
oracle hard core unlimited
oracle soft memlock 50000000
oracle hard memlock 50000000
編輯完成后按Esc鍵,輸入“:wq”存盤退出
9、修改用戶登錄認證
vim /etc/pam.d/login
按i進入編輯模式
session required /lib64/security/pam_limits.so
session required pam_limits.so
編輯完成后按Esc鍵,輸入“:wq”存盤退出
注意了,很多博文都是照搬抄襲,都是寫的/lib/security/pam_limits.so 一般咱都是64位系統,64位系統需要設置為/lib64/security/pam_limits.so 否則重啟服務器后就會出現命令行無法登錄,但是通過桌面方式能登錄的情況。
10、設置環境變量
Ⅰ、ORACLE_HOME 設置為安裝目錄product下默認目錄
vim /etc/profile
*按i進入編輯模式*
#oracle
export ORACLE_HOME=/ora/oracle/product/11.2.0/db_1
export ORACLE_SID=orcl
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
編輯完成后按Esc鍵,輸入“:wq”存盤退出
Ⅱ、修改oracle用戶環境變量
vim /home/oracle/.bash_profile
*按i進入編輯模式*
export ORACLE_BASE=/ora/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
編輯完成后按Esc鍵,輸入“:wq”存盤退出
二、通過桌面方式安裝oracle
1、使用oracle用戶登錄桌面,打開終端運行安裝程序。
cd /ora/database
./runInstaller
注意:oracle中文語言會出現亂碼,所以系統最好設置為en 英文,如果系統安裝的時候選擇了中文,那么oracle用戶登錄的時候也要修改用戶語言為英文才能正常安裝。
2、安裝過程是都有相應提示的,並且鼠標直接點就完了
1):訂閱郵件這些就直接跳過不填了。
2):這里選擇忽略更新(沒有這個選項則跳過)。
3):選擇僅安裝數據庫,稍后再配置初始化數據。
4):選擇單實例安裝。
5):語言,選擇英文。選中文后面容易出問題。
6):企業版
7):這里就出現最開始創建的相應目錄信息了,會自動讀取。
8):下一步
9):選擇group 組為之前創建好的oinstall
10):先決條件檢查
安裝的過程中可能會出現如下的一些警告信息,如提示semmni為0 的問題,該問題一直沒有找到原因,我們在上面修改內核的過程中就已經調整了kernel.sem = 250 32000 100 128 但是檢測無法通過(暫時無解)
其他的一些依賴組件提示,其實我們已經大部分安裝好了,只是centos7上yum安裝的依賴包要比oracle 11g 所需的包更新,版本更高,所以大部分可以直接忽略這些提示(勾選 ignore all)。
但是最好,我們將每一個包通過rpm來重新檢查一下,如果有未安裝的則通過yum來搜索安裝。另外,這一步還可能出現交換分區不夠的情況,可以通過命令來調整,這是鏈接
11):安裝到最后的時候會出現一個提示:需要用root權限執行2個shell腳本,那么我們在之前的root用戶終端下運行提示中的對應腳本文件即可。
這里或者更早前或者之后(我的就是后面)的步驟就可能會出現一個很神奇(zhizhang)的問題,對話框可能無法正常彈出,測試在VM虛擬機或者雲服務器,如阿里雲等都這樣,但是用鼠標可以拖開。。。。如果開始拖不開,建議稍等,一般都沒問題的
三、數據庫建庫
1、 通過命令打開圖形界面
還是在oracle用戶的圖形界面oracle用戶中,新開啟一個終端,直接輸入命令dbca會彈出如下界面。我們這里采用定制數據庫。
如果提示沒有這個命令,那么請詳細檢查一下上述的依賴包是否正確安裝,另外創建過程中如果出現提示oracle not available 檢查是否已添加主機名到hosts文件中。
最后安裝過程比較漫長,還需要耐心等待。。。
四、配置監聽以及本地網絡服務
1、在oracle用戶的圖形界面oracle用戶中,新開啟一個終端,輸入命令netca 會彈出如下界面。
2、創建監聽服務(充當oracle服務器,讓別的oracle客戶端連接本oracle服務器)
至此,監聽配置完成。
3、配置本地網絡服務名(充當oracle客戶端,連接別的oracle服務器)
輸入連接的oracle服務器的數據庫的實例名,以及有部分配置文件命名也跟實例名有關
輸入oracle服務器的ip地址
點擊change Login 輸入所連接oracle服務器的其中某一個用戶名和密碼(用戶名oracle和設置的密碼),點擊OK
看到此界面說明測試成功(如果不成功,請查看網絡是否暢通,所連接的oracle服務器是否啟動,監聽是否啟動等原因)
為你所設置的本地網絡服務名起個名字
這樣oracle服務器安裝配置基本就完成了
注意:
1、Linux oracle數據庫listener.ora存放路徑
cd %oracle_home%/network/admin/listener.ora
2、Linux oracle數據庫tnsnames.ora存放路徑
cd %oracle_home%/network/admin/tnsnames.ora
3、ORACLE啟動監聽器
(1)切換至oracle安裝用戶(一般為oracle)
su - oracle
(2)啟動監聽器
lsnrctl start
(3)停止監聽器
lsnrctl stop
4、啟動測試oracle:
[oracle@oracle ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 27 02:12:12 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> quit
測試的另一種方法:找一台windows平台電腦,telnet oracle主機IP地址:1521,通的話,會出現一個黑屏,光標一閃一閃。
5、Linux開放1521端口允許網絡連接Oracle Listener
症狀:
(1)TCP/IP連接是通的。可以用ping 命令測試。
(2)服務器上Oracle Listener已經啟動。
lsnrctl status 查看listener狀態
lsnrctl start 啟動Oracle listener
(3)客戶端得到的錯誤信息通常是:ORA-12170: TNS:連接超時
這時,我們基本可以肯定是服務器沒有開放1521端口(假設你用默認設置)
解決方法:
(1)假如你是在一個局域網環境,配置了防火牆。那么可以關閉Linux的防火牆。
sudo service iptables stop
(2)編輯iptables, 開放1521端口:
sudo vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
:wq
重啟防火牆
sudo service iptables restart
保存配置,以便linux重啟后依然有效
sudo service iptables save
查看防火牆規則:
sudo iptables -L –n
6、linux下創建oracle用戶表空間
就是在已有的數據庫實例上創建一個新的帳號,訪問一些新的表
操作步驟如下:
(1)登錄linux,以oracle用戶登錄(如果是root用戶登錄的,登錄后用 su - oracle命令切換成oracle用戶)
(2)以sysdba方式來打開sqlplus,命令如下: sqlplus "/as sysdba"
(3)查看我們常規將用戶表空間放置位置:執行如下sql:
select name from v$datafile
(4)創建用戶表空間:
CREATE TABLESPACE NOTIFYDB DATAFILE '/home/oracle/app/oradata/orcl/scsdb.dbf' SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
(5)創建用戶,指定密碼和上邊創建的用戶表空間
CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;
(6)賦予權限
grant connect,resource to scs;
grant unlimited tablespace to scs;
grant create database link to scs;
grant select any sequence,create materialized view to scs;
--經過以上操作,我們就可以使用scs/scs登錄指定的實例,創建我們自己的表了
以上內容基本是下面兩篇博客的綜合,以及本人在實際操作過程中遇到的問題以及解決方法(centos7虛擬機,4g內存)
注意之后的內容並未實際操作,完全引用自第二篇大神的文章。如果大家發現有其他問題,歡迎評論,大家共同探討。
參考1
參考2
希望可以幫助到大家,大家也可關注我的公眾號方便在手機上進行查看