安裝Oracle前准備
創建運行oracle數據庫的系統用戶和用戶組
[jonathan@localhost ~]$ su root #切換到root Password: [root@localhost]# groupadd oinstall #創建用戶組oinstall [root@localhost]# groupadd dba #創建用戶組dba [root@localhost]# useradd -g oinstall -g dba -m oracle #創建oracle用戶,並加入到oinstall和dba用戶組 [root@localhost]# passwd oracle #設置用戶oracle的登陸密碼,不設置密碼,在CentOS的圖形登陸界面沒法登陸 Changing password for user oracle. New password: # 密碼 BAD PASSWORD: The password is shorter than 8 characters Retype new password: # 確認密碼 passwd: all authentication tokens updated successfully. [root@localhost]# id oracle # 查看新建的oracle用戶 uid=1001(oracle) gid=1002(dba) groups=1002(dba)
創建oracle數據庫安裝目錄
[jonathan@localhost ~]$ su root Password: [root@localhost]# mkdir -p /data/oracle #oracle數據庫安裝目錄 [root@localhost]# mkdir -p /data/oraInventory #oracle數據庫配置文件目錄 [root@localhost]# mkdir -p /data/database #oracle數據庫軟件包解壓目錄 [root@localhost]# cd /data [root@localhost data]# ls #創建完畢檢查一下(強迫症) database oracle oraInventory [root@localhost data]# chown -R oracle:oinstall /data/oracle #設置目錄所有者為oinstall用戶組的oracle用戶 [root@localhost data]# chown -R oracle:oinstall /data/oraInventory [root@localhost data]# chown -R oracle:oinstall /data/database
修改OS系統標識
oracle默認不支持CentOS系統安裝,Oracle Database 11g Release 2 的 OS要求參考:link
修改文件 /etc/RedHat-release
[root@localhost data]# cat /proc/version Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015 [root@localhost data]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) [root@localhost data]# vi /etc/redhat-release [root@localhost data]# cat /etc/redhat-release redhat-7 [root@localhost data]#
下載oracle數據庫所需要的軟件包
下載地址 :https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html?intcmp=ocom-hp-0219
把file1 和file2 下載下來

下載完成后,使用Xftp 軟件上傳到centos中,我這里放在(/home/oracle)目錄中(這里不進行操作說明)
關閉防火牆
CentOS 7.2默認使用的是firewall作為防火牆
[root@localhost /]# systemctl status firewalld.service #查看防火牆狀態,運行中
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2016-04-07 18:54:29 PDT; 2h 20min ago
Main PID: 802 (firewalld)
CGroup: /system.slice/firewalld.service
└─802 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Apr 07 18:54:25 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Apr 07 18:54:29 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
[root@localhost /]# systemctl stop firewalld.service #關閉防火牆
[root@localhost /]# systemctl status firewalld.service #再次查看防火牆狀態,發現已關閉
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Thu 2016-04-07 21:15:34 PDT; 9s ago
Main PID: 802 (code=exited, status=0/SUCCESS)
Apr 07 18:54:25 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Apr 07 18:54:29 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
Apr 07 21:15:33 localhost systemd[1]: Stopping firewalld - dynamic firewall daemon...
Apr 07 21:15:34 localhost systemd[1]: Stopped firewalld - dynamic firewall daemon.
[root@localhost /]# systemctl disable firewalld.service #禁止使用防火牆(重啟也是禁止的)
Removed symlink /etc/systemd/system/dbus-org.Fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[root@localhost /]#
關閉selinux(需重啟生效)
[root@localhost /]# vi /etc/selinux/config
[root@localhost /]# cat /etc/selinux/config
將 SELINUX=disabled #此處修改為disabled
修改內核參數
[root@localhost /]# vi /etc/sysctl.conf
在最下面添加以下內容:
net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.rp_filter = 1 fs.file-max = 6815744 #設置最大打開文件數 fs.aio-max-nr = 1048576 kernel.shmall = 2097152 #共享內存的總量,8G內存設置:2097152*4k/1024/1024 kernel.shmmax = 2147483648 #最大共享內存的段大小 kernel.shmmni = 4096 #整個系統共享內存端的最大數 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范圍 net.core.rmem_default = 262144 net.core.rmem_max= 4194304 net.core.wmem_default= 262144 net.core.wmem_max= 1048576
使配置參數生效
[root@localhost /]# sysctl -p net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.conf.all.rp_filter = 1 sysctl: setting key "fs.file-max": Invalid argument fs.file-max = 6815744 #設置最大打開文件數 fs.aio-max-nr = 1048576 sysctl: setting key "kernel.shmall": Invalid argument kernel.shmall = 2097152 #共享內存的總量,8G內存設置:2097152*4k/1024/1024 sysctl: setting key "kernel.shmmax": Invalid argument kernel.shmmax = 2147483648 #最大共享內存的段大小 sysctl: setting key "kernel.shmmni": Invalid argument kernel.shmmni = 4096 #整個系統共享內存端的最大數 kernel.sem = 250 32000 100 128 sysctl: setting key "net.ipv4.ip_local_port_range": Invalid argument net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范圍 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 [root@localhost /]#
配置用戶的環境變量
[root@localhost /]# vi /home/oracle/.bash_profile
添加以下內容:
export ORACLE_BASE=/data/oracle #oracle數據庫安裝目錄 export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 #oracle數據庫路徑 export ORACLE_SID=orcl #oracle啟動數據庫實例名 export ORACLE_TERM=xterm #xterm窗口模式安裝 export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH #添加系統環境變量 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib #添加系統環境變量 export LANG=en_US #防止安裝過程出現亂碼 export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK #設置Oracle客戶端字符集
生效
[root@localhost /]# source /home/oracle/.bash_profile
解壓安裝包
[oracle@localhost /]$ cd /home/oracle #進入/home/oracle目錄(之前使用Xftp上傳的位置) [oracle@localhost src]$ ls linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip [oracle@localhost src]$ unzip linux.x64_11gR2_database_1of2.zip -d /data/database/ #解壓 (省略...) [oracle@localhost src]$ unzip linux.x64_11gR2_database_2of2.zip -d /data/database/ #解壓 (省略...) [oracle@localhost src]$ su root Password: [root@localhost src]# chown -R oracle:oinstall /data/database/database/
oracle安裝
登錄oracle用戶
退出當前用戶 登錄oracle用戶
啟動oralce安裝
到/data/database/database/目錄下,執行./runInstaller
會啟動圖形界面進行安裝
彈出圖形安裝界面,安裝數據庫軟件和實例

點擊下一步

點擊下一步

實際開發中,服務器沒有圖形界面,我們選擇服務類安裝,下一步

不需要集群,選擇單實例安裝,下一步

下一步

選擇語言,下一步

下一步

選擇目錄,下一步

下一步

下一步

內存

字符集


下一步

下一步

下一步

設置密碼

下一步
先決條件檢查,缺少依賴包(直接忽略 進行安裝)


finish配置完成
等待安裝完成


安裝成功之后,會彈出這個界面:

設置密碼

然后會讓你以root身份登錄終端,執行以下腳本。
執行腳本:
[root@localhost myos]su root [root@localhost myos]# cd /home/myos/application/oracle/oraInventory [root@localhost oraInventory]# sh orainstRoot.sh [root@localhost oraInventory]# cd /home/myos/application/oracle/oracle/product/11.2.0/dbhome_1 [root@localhost dbhome_1]# sh root.sh
安裝完成
上面安裝成功之后,服務監聽和本地網絡服務應該是就配置好了,我實際安裝的過程中都會提示服務名稱已經存在。如果沒有的話,我們可以按照下面的步驟進行配置。
15. 配置監聽
打開終端,輸入: [root@localhost dbhome_1]# netca Oracle Net Services Configuration:
彈出界面:

創建監聽服務(充當oracle服務器,讓別的oracle客戶端連接本oracle服務器)





配置本地網絡服務
配置本地網絡服務名(充當oracle客戶端,連接別的oracle服務器)





我填的是自己服務器的名稱,不知道填其他服務器的ip可不可以

進行連接測試


連接成功



到此就配置完畢了。
查看監聽狀態
[myos@localhost ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 05-APR-2018 18:06:52 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 05-APR-2018 17:41:44 Uptime 0 days 0 hr. 25 min. 8 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /home/myos/application/oracle/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File home/myos/application/oracle/oracle/diag/tnslsnr/localhost/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) Services Summary... Service "orcl" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "orclXDB" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully
其中:
1、Linux oracle數據庫listener.ora存放路徑 /home/myos/application/oracle/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora 2、Linux oracle數據庫tnsnames.ora存放路徑 /home/myos/application/oracle/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora 3、ORACLE啟動監聽器 (1)切換至普通安裝用戶(我的是myos) su - myos (2)啟動監聽器 lsnrctl start (3)停止監聽器 lsnrctl stop
Linux啟動時自動啟動Oracle監聽和實例
第一步:修改/etc/oratab文件
第一步:修改/etc/oratab文件
[oracle@localhost ~]$ vim /etc/oratab //如果沒有這個文件,下面問題有說明
找到: orcl:/data/oracle/oracle/product/11.2.0/db_1:N 修改為: orcl:/data/oracle/oracle/product/11.2.0/db_1:Y (每個人安裝路徑不一定一樣)
第二步:把lsnrctl start和dbstart添加到rc.local文件中:
root權限執行
[root@localhost oracle]# vim /etc/rc.d/rc.local
添加:
su - oracle -lc "/data/oracle/oracle/product/11.2.0/db_1/bin/lsnrctl start" su - oracle -lc "/data/oracle/oracle/product/11.2.0/db_1/bin/dbstart"
說明:
第一行為開機啟動數據庫監聽服務,第二行為開機啟動數據庫。(路徑跟安裝路徑相關)。
注意:CentOs7中/etc/rc.d/rc.local不會開機執行,需添加執行權限。
查看/etc/rc.d/rc.local的權限
[root@localhost oracle]# ll /etc/rc.d/rc.local
添加執行權限
[root@localhost oracle]# chmod +x /etc/rc.d/rc.local
完成。
問題一
如果使用Navicat Premium軟件遠程連接不了Centos的Oracle數據庫
出現:“ORA-12514 TNS 監聽程序當前無法識別連接描述符中請求服務”
具體操作步驟如下:
一、修改數據庫服務器中listener.ora文件內容
命令:
[oracle@localhost admin]$ vi /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
修改為:
# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /data/oracle/product/11.2.0/db_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 192.168.0.102) #這里為centos的ip地址
(PORT = 1521)
)
)
ADR_BASE_LISTENER = /data/oracle
二、修改數據庫服務器中tnsnames.ora文件內容
命令:
[oracle@localhost admin]$ vi /data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
修改為:
# tnsnames.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
rcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.102)(PORT = 1521)) #這里的host為centos的ip地址
)
(CONNECT_DATA =
(SID = orcl)
)
)
修改完成。
重啟監聽
lsnrctl start
使用Navicat Premium軟件遠程連接

即可連接成功
問題二
遠程連接oracle數據庫出現
ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Process ID: 0 Session ID: 0 Serial number: 0
解決方式
SQL> conn / as sysdba Connected to an idle instance. SQL> startup ORACLE instance started.
問題三
遠程連接Oracle出現
ora-01033:oracle initializationg or shutdown in progress
解決
lsnrctl start //啟動數據庫監聽
問題四
/etc/oratab 文件不存在
解決
原因是安裝oracle的時候,忘記去執行 一個root.sh文件了 找到該文件 執行 ./root.sh
