本文為原創:如要轉發,請注明出處地址!
1、下載Oracle安裝包:
官網:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip ,可以下載到本地,通過ftp服務上傳到Linux系統(參考CentOS7 FTP服務器搭建),也可以使用Linux系統的wget命令,下載文件包;
2、創建運行oracle數據庫的系統用戶和用戶組:
用Root賬號登錄,運行下面指令,創建所需要用戶和用戶組;
groupadd oinstall #創建用戶組oinstall
groupadd dba #創建用戶組dba
useradd -g oinstall -g dba -m oracle #創建oracle用戶,並加入到oinstall和dba用戶組
groups oracle #查詢用戶組是否授權成功
passwd oracle #設置用戶oracle的登陸密碼,不設置密碼,在CentOS的圖形登陸界面沒法登陸
id oracle #查看新建的oracle用戶
3、創建oracle數據庫安裝目錄(運行下面指令,創建賬號和分配權限)
mkdir -p /data/oracle #oracle數據庫安裝目錄
mkdir -p /data/oraInventory #oracle數據庫配置文件目錄
mkdir -p /data/database #oracle數據庫軟件包解壓目錄
cd /data
ls #創建完畢檢查一下
chown -R oracle:oinstall /data/oracle
#設置目錄所有者為oinstall用戶組的oracle用戶
chown -R oracle:oinstall /data/oraInventory
chown -R oracle:oinstall /data/database
4、修改OS系統標識
oracle默認不支持CentOS系統安裝, 修改文件 /etc/RedHat-release 內容為RedHat-7 vi /etc/redhat-release修改成redhat-7
將CentOS Linux release 7.5.1511 (Core) 修改為redhat-7,
5、安裝oracle數據庫所需要的軟件包
以下是按照需要依賴的安裝包,通過 yum install {包名} 來驗證是否安裝,例如yum install binutils
binutils-2.23.52.0.1-12.el7.x86_64
compat-libcap1-1.10-3.el7.x86_64
gcc-4.8.2-3.el7.x86_64
gcc-c++-4.8.2-3.el7.x86_64
glibc-2.17-36.el7.i686
glibc-2.17-36.el7.x86_64
glibc-devel-2.17-36.el7.i686
glibc-devel-2.17-36.el7.x86_64
ksh
libaio-0.3.109-9.el7.i686
libaio-0.3.109-9.el7.x86_64
libaio-devel-0.3.109-9.el7.i686
libaio-devel-0.3.109-9.el7.x86_64
libgcc-4.8.2-3.el7.i686
libgcc-4.8.2-3.el7.x86_64
libstdc++-4.8.2-3.el7.i686
libstdc++-4.8.2-3.el7.x86_64
libstdc++-devel-4.8.2-3.el7.i686
libstdc++-devel-4.8.2-3.el7.x86_64
libXi-1.7.2-1.el7.i686
libXi-1.7.2-1.el7.x86_64
libXtst-1.2.2-1.el7.i686
libXtst-1.2.2-1.el7.x86_64
make-3.82-19.el7.x86_64
sysstat-10.1.5-1.el7.x86_64
通過下列命令一鍵安裝
yum install binutils-2.* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh-2* libaio-0.* libaio-devel-0.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat.* unixODBC-2.* unixODBC-devel-2.* ksh*
yum install libaio-0.* glibc-2.* compat-libstdc++-33* libaio-devel-0.* libgcc* unixODBC-2.* unixODBC-devel-2.* ksh*
yum install tigervnc tigervnc-server
6、關閉防火牆和selinux
關閉firewall:
Centos 7關閉方法
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
Centos 6關閉方法
service iptables stop #停止firewall
chkconfig --del iptables #禁止firewall開機啟動
關閉SELINUX:
vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
7、修改內核參數
vi /etc/sysctl.conf #要添加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
8、對oracle用戶設置限制,提高軟件運行性能(紅色為添加部分)
vi /etc/security/limits.conf #紅色部分要添加到Limits.conf內容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
9、配置用戶的環境變量
vi /home/oracle/.bash_profile #要追加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 #防止安裝過程出現亂碼
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK #設置Oracle客戶端字符集,必須與Oracle安裝時設置的字符集保持一致
配置完成,:wq保存退出,運行source /home/oracle/.bash_profile時上述配置生效
10、獲取安裝包文件后解壓安裝包
解壓方式如下:
unzip linux.x64_11gR2_database_1of2.zip -d /data/database/ #解壓文件1
unzip linux.x64_11gR2_database_2of2.zip -d /data/database/ #解壓文件2
chown -R oracle:oinstall /data/database/database/
#分配安裝文件授權Oracle
11、oracle用戶登錄系統,
使用命令行跳轉到data/database/database目錄下,輸入./runInstaller 調出安裝頁面;
oracle用戶登錄:
[oracle@centos7 ~]$ cd /data/database/database/
[oracle@centos7 database]$ ./runInstaller
這時會報錯,要求至少256種顏色
。。。。。。。display at least 256 colors”
解決辦法
yum install tigervnc-server
vncserver
export DISPLAY=192.168.43.173:1.0 //如果后面還報錯用這2個export反復試 //export DISPLAY=192.168.43.173:0.0 //export DISPLAY=:0.0
xhost +
這時再啟動./runInstaller
12 、圖形化安裝過程
(1)Configure Security Updates
全部選項都留空,包括“I wish to receive security updates via My Oracle Support”復選框,系統會提示沒有輸入email地址,點擊Yes繼續
(2)Installtion Option
選擇“Install database software only”,只安裝數據庫軟件,點擊Next繼續
第一項為安裝數據庫軟件並創建一個數據庫實例
第二項為只安裝數據庫軟件
第三項為升級已經存在的數據庫
選擇第二項,可以在安裝數據庫軟件后,手工通過dbca來創建實例。
(3)Grid Options
選擇第一項點擊Next繼續。對於單節點的數據庫選擇“Single instance database installation”進行安裝,如果是安裝集群數據庫則要選擇“Real Application Clusters database installation”這個選項進行安裝。
(4)Product Languages
這個界面上選擇支持的語言,在左面列表里面選擇“Simplified Chinese”,添加到右面列表,點擊Next繼續:
(5)Database Edition
這個界面選擇oracle的版本,選擇第一項“Enterprise Edition”企業版,點擊Next繼續。
Standard版(標准版)的oracle有很多功能上的限制,生產系統上務必選擇Enterprise Edition(企業版)。
(6)Installation Location
選擇安裝位置,配置好oracle用戶的.bash_profile文件后,安裝程序會自動把ORACLE_BASE變量作為Oracle Base,軟件安裝目錄Software Location取的是ORACLE_HOME變量。不用修改,直接在界面點擊Next繼續
(7)Create Inventory
選擇Inventory的位置,保持默認,點擊Next繼續。這個位置是在ORACLE_BASE下創建oraInventory目錄,用於注冊ORACLE_HOME下安裝的數據庫的組件及其版本,存放oracle軟件安裝的目錄信息。oracle數據庫軟件的升級、增刪組件,都需要用到inventory。oracle OUI會創建一個有oraInst.ora文件指定的全局inventory。
(8)Operating System Groups
選擇oralce使用的操作系統用戶組,保持默認,點擊Next繼續
(9)Prerequiste Checks
Oracle安裝程序用檢查系統參數,以確定是否滿足了安裝oracle的前提條件,包括系統內核、虛擬內存和軟件包等。安裝3.3章節介紹的方法把包安裝好之后,由於操作系統的包版本過高,會導致oracle提示如下包缺失,實際上已經安裝好了。勾選右上角的“Ignore All”復選框,點擊Next繼續:
如果提示沒有pdksh-5.2.14,請根據64位或者32位系統安裝對應的包。
(10)Summary
Oracle安裝程序提示安裝摘要,點擊Finish繼續:
(11)Summary
Oracle開始按照前面步驟的設定,開始安裝:
(12)Finish
使用root用戶執行系統提示的2個腳本,完成安裝:
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/db_1/root.sh
對於腳本中的提示,直接回車確認即可,執行完畢后,點擊OK安裝過程就完成了。
13、配置監聽
vim /data/oracle/product/11.2.0/dbhome_1/network/admin/samples/listener.ora
# lstener.ora Network Configuration File: /data/oracle/product/11.2.0/dbhome_1/network/admin/samples/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
)
)
ADR_BASE_LISTENER = /data/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
)
)
數據庫路徑(快速查找$ORACLE_HOME)
/data/oracle/product/11.2.0/dbhome_1
啟動和關閉監聽
lsnrctl start lsnrctl stop
無法啟動監聽
lsnrctl status 或netca或netmgr命令找不到,是因為vi /home/oracle/.bash_profile配置環境變量這一步數據庫路徑不對,
每次開機再source /home/oracle/.bash_profile一下,才能使用監聽命令
停止監聽報錯((HOST = localhost有空格)
14、配置oracle本地解析文件
/data/oracle/product/11.2.0/dbhome_1/network/admin/samples/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.73.143)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl)
)
zbh =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.73.143)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl)
)
)
15、安裝完后創建數據庫實例
su oracle
dbca (本人執行命令后一直報錯,后來重啟機器后沒報錯,
並修改了sqlnet.ora文件 sqlnet.authentication_services=(all) )
(0)歡迎界面,在界面上點擊Next繼續
(1)選擇“Create a Database”,在界面上點擊Next繼續
(2)選擇“General Purpose”,在界面上點擊Next繼續
如果是單節點數據庫那么此處應該選擇“General Purpose”,如果是集群數據庫系統那么此處選擇“custom database”選項
(3)設置Global Database Name 和 SID,在界面上點擊Next繼續
當數據庫運行在沒有域服務的環境中時,兩個值是相同的;當運行在域環境中時,Global Database Name應該設置為SID.域名。注意:這里設置的SID值,要跟oracle用戶.bash_profile中的ORACLE_SID設置保持一致。
(4)設置Enterprise Manger,在界面上點擊Next繼續
Oracle Enterprise Manger (OEM)是oracle一套基於Web的監控和管理程序,管理程序是emctl。配置OEM會占用一部分系統資源,這里可以不勾選。
勾選之后,如果有下面的提示,可以根據8.1章節的介紹,用netca創建一個監聽並繼續:
(5)設置oracle用戶的密碼,建議為所有用戶設置相同的密碼,密碼最好不要含有”@”特殊字符,在界面上點擊Next繼續 (本人設置密碼:1242972899)
如果你設置的密碼太簡單,會有以下提示界面,選擇Yes繼續
(6)選擇存儲設置,這里選擇File System,把數據庫文件保存在本地磁盤,在界面上點擊Next繼續
選擇File System,把數據庫文件保存在本地磁盤。
ASM即自動存儲管理,是oracle提供的一套存儲管理程序,可以平台無關的方式提供文件系統、邏輯卷管理器以及軟件 RAID(磁盤陣列)等服務,有ASM管理經驗的可以選擇這個選項。
(7)在安裝界面上點擊Next繼續
這個界面設置Flash Recovery Area的位置和大小,保持默認即可。下面的復選框,“Enable Archiving”是啟用歸檔日志,並可以指定歸檔日志的位置,默認是沒有啟用歸檔日志的。
(8)在安裝界面上點擊Next繼續
這里選擇,是否安裝Oracle的演示數據,包括幾個測試用戶及其表、視圖等數據。生產系統不用安裝這些演示數據,會占用一部分資源,而且會產生安全問題。
(9)初始化參數選項,設置完畢后在安裝界面上點擊Next繼續
u Memory選項
選擇Typical,Oracle會自動分配SGA和PGA大小,推薦物理內存的75%
或者選擇Custom,SGA設置為內存的一半,PGA設置為SGA的一半,即
MEM:SGA:PSA =4:2:1
如果SGA設置超過1G,那么必須設置為16M的倍數,SGA設置小於等於1G,那么必須將它的大小設置為4M的倍數,這個倍數被稱之為granules(顆粒),SGA必須是granules的整數倍。
* Sizing選項
即同時連接到數據庫的客戶端進程的最大數目,在專用服務器模式下,等同於oracle前台進程的數量,恆生推薦值是 1500到3000
u Character Sets選項
必須選擇ZHS16GBK,否則保存和顯示中文數據的時候會產生亂碼
u Connetction Mode選項
選擇oracle數據庫工作在專用模式還是共享模式,現在生產系統都是專用模式,性能更好一些,適合於中間件與數據庫保持持續連接。
(10)數據庫文件的存放位置,設置完畢后,在界面上點擊Next繼續
這個界面設置控制文件(Controlfile)、數據文件(Datafiles)和重做日志組(Redo Log Groups)的位置和大小。對於重做日志組,文件大小默認是50M,默認值太小了,對於業務比較頻繁的系統建議調整到500M至1G,重做日志組數據量默認為3個,增加到5個,盡可能減少日志切換發生checkpoint時造成數據庫性能下降。如果沒有在這個界面添加,也可以通過以下語句手工添加:
alter database add logfile group 4 ('/u02/oradata/redo04_1.dbf','/u02/oradata/redo04_2.dbf') size 500m;
alter database add logfile group 5 ('/u02/oradata/redo05_1.dbf','/u02/oradata/redo05_2.dbf') size 500m;
推薦將上面所有文件保存在/u02/oradata目錄
(11)確認創建數據庫實例,在安裝界面上點擊Finish結束
保持默認即可,不用保存模版,也不用保存數據庫的創建語句。
(12)確認創建數據庫實例,在界面上點擊OK
(13)oracle執行創建實例的過程
(14)實例安裝完畢
16、測試連接
在linux無論怎么連接數據庫都報錯,下面是報錯截圖
//sqlplus /nolog
sqlplus system/1242972899@zbh
連接報錯
sqlplus / as sysdba
連接報錯
ERROR:
ORA-01031: insufficient privileges
chown -R oracle:dba oracle
chmod 6751 $ORACLE_HOME/bin/oracle
ls -la oracle
用本地測試連通性
L/SQL不論是連接LINUX上的baiduORACLE還是windows上的oracle 都是一樣的,只要你把服務zhi器上的監聽dao打開,根本不用去管服務端是啥操作系統。
最簡單的辦法是在你的本機上裝個oracle客戶端,安裝完成后
在開始菜單中選擇oracle-》配置和移植工具-->net manager
出來一個oracle net manager 的工具 其中選擇 本地-》服務器命名
再點下左邊的綠色加號,添加一個新的
第一步:網絡服務名:這個填寫你連接時需要使用的字符串可隨便取名如test
第二步:選擇TCP/IP
第三步:主機名:填寫服務器IP 端口: 一般為1521
第四步:填寫oracle的實例名
第五步:測試連通性
然后就完成了配置
發現在windows連接Linux測試還是不同
后來在windows用pl/sql工具成功連接,
登錄測試。
完成
17、自動啟動Oracle
Oracle實例和監聽創建完畢后,需要設置oracle隨着操作系統自動啟動,這里介紹兩種方法,rc.local方式或者增加一個系統服務,兩者是等效的。
方式一:rc.local
1、root用戶修改oratab
# vi /etc/oratab
文件尾部的N改為Y:
orcl:/u01/app/oracle/product/11.2.0/db_1:Y
2、root用戶修改
vi /etc/rc.local
在文件尾部添加:
su - oracle -c "dbstart"; su - oracle -c "lsnrctl start"
勘誤:有以上兩步就足夠了。有的文檔要求設置/app/oracle/product/11.2.0/db_1/bin/dbstart的ORACLE_HOME_LISTNER,這是沒有必要的。su - oracle -c "dbstart";將啟動實例,su - oracle -c "lsnrctl start"啟動監聽。
方式二:系統服務
1、root用戶修改oratab
# vi /etc/oratab
把文件尾部的N改為Y:
orcl:/u01/app/oracle/product/11.2.0/db_1:Y
2、增加oracle服務
用root用戶創建並編輯服務腳本:
touch /etc/init.d/dbora
chmod 750 /etc/init.d/dbora
chkconfig --level 345 dbora on
vi /etc/init.d/dbora
將內容設置為:
#!/bin/sh
# description: Oracle auto start-stop script.
# chkconfig: - 20 80
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/u01/app/oracle/product/11.2.0/db_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
;;
esac
勘誤:有以上兩步就足夠了。有的文檔會要求執行
ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora和
ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora
這是沒有必要的,chkconfig --level 345 dbora on會自動創建這些鏈接。
18、安裝后的參數優化
關閉OEM,使用oracle用戶登錄,執行命令:
emctl status dbconsole
emctl stop dbconsole
以下命令推薦用sys用戶登錄PLSQL Developer,使用命令窗口執行:
Oracle 11g默認密碼過期日為180天,設置為永不過期:
alter profile default limit PASSWORD_LIFE_TIME unlimited;
Oracle 11g默認密碼是大小寫敏感的,設置為大小寫不敏感:
alter system set sec_case_sensitive_logon=false scope=spfile;
Oracle 11g新特性: deferred_segment_creation延遲段創建,如果不修改會導致空表無法通過exp導出:
alter system set deferred_segment_creation = false scope=spfile;
優化最大連接數
alter system set processes=2000 scope=spfile sid='*';
優化游標數
alter system set open_cursors=20000 scope=spfile sid='*';
alter system set session_cached_cursors=300 scope=spfile;
設置dbwr進程數
alter system set db_writer_processes=4 scope=spfile;
查詢優化器設置:
06版應該設置為基於成本的:
alter system set optimizer_mode=ALL_ROWS scope=spfile sid='*';
alter system set OPTIMIZER_INDEX_COST_ADJ=10 scope=spfile;
UF20設置為基於規則的:
alter system set optimizer_mode= RULE scope=spfile sid='*';
取消登錄失敗超過10次鎖定用戶的限制
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
關閉job
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB');
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB');
exec sysman.emd_maintenance.remove_em_dbms_jobs;
其他優化項目
alter system set "_gc_undo_affinity"=false scope=spfile sid='*';
重新設置SGA和PGA大小:(慎用)
如果啟用了AMM(Automatic memory management)自動內存管理:
alter system memory_target=1800M scope=spfile;
alter system memory_max_target=1800M scope=spfile;
如果為SGA和PGA分別設置:
alter system set sga_max_size=1200M scope=spfile;
alter system set sga_target=1200M scope=spfile;
alter system set pga_aggregate_target=600M scope=spfile;
請根據實際情況修改上面的值,如果啟用了AMM則將memory_target和memory_max_target設置為物理內存的75%,這部分內存oracle會動態的分配給SGA和PGA。如果分別為SGA和PGA設置,前2個命令設置SGA,最后一個命令設置PGA,修改完畢后重啟實例檢查數據庫是否正常。
附:
Linux下啟動和關閉ORACLE
sqlplus system/1242972899@zbh
SQL> startup
SQL> shutdown