(適用於centos7和redhat7)
(由於部分的i686依賴包沒有安裝,故不適用於32位操作系統)
新系統編輯工具如果沒有vim也可用vi,看個人習慣
(一) 修改
關閉並禁用防火牆和seLinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
關閉 seLinux
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=disabled
查看並修改主機名
[root@localhost ~]# hostname
localhost.localdomain #Oracle 數據庫的安裝在生產中要慎重考慮主機名,避免二次修改。
[root@localhost ~]# hostnamectl set-hostname oracle.example.com
[root@localhost ~]# hostname ##驗證是否成功
配置hostname本機IP映射
vim /etc/hosts
192.168.200.10 oracle.example.com oracle //192.168.200.10為本機地址
重啟操作系統
[root@localhost ~]# reboot
(二) 安裝依賴包
安裝依賴包
更改yum源
1.有外網的情況,個人建議將yum源修改為aliyun源,下載速度快些,執行如下命令即可:
cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
wget –O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
2.如果沒有外網,則需要配置鏡像文件為本地yum源
mkdir /media/cdrom //記住此目錄,需要在yum源中寫入
mount /dev/cdrom /media/cdrom
如果第二條命令報錯如下,則是沒有鏡像文件,需要上傳鏡像文件到服務器,如無報錯請忽略
報錯解決方法:
這里我把鏡像文件放到/home/目錄下為例,執行掛載鏡像操作:
mount -o loop /home /CentOS-7-4-x86_64-DVD-1708.iso /media/cdrom
解決報錯后開始寫入yum源文件:
cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
vim /etc/yum.repos.d/lichao.repo //lichao.repo名稱隨意,但必須repo結尾
[lichao] //標識符隨意
name=lichao //名稱隨意
baseurl=file:///media/cdrom //必須與上述我們掛載鏡像的位置一致
enabled=1 //開啟
gpgcheck=0 //本地源,不校驗
然后保存退出
yum clean all //寫入上述五行后,清除並重新建立緩存
yum makecache
完成上述修改成功后,准備安裝如下依賴包:
說到依賴包就多說一句,可能其他地方講到需要安裝32位的依賴包,例如下面的兩個包
glibc-2.3.4-2.41
glibc-2.3.4-2.41 (32 bit)
或者這樣
glibc-2.3.4-2.41.el7.x86_64
glibc-2.3.4-2.41.el7.i686
但官方文檔有很明確的講述:11G:從Oracle Database 11g第2版(11.2.0.2)開始,除gcc-32bit之外的所有32位軟件包,在Linux x86-64上安裝數據庫不再需要。僅需要64位軟件包。但是,對於11.2.0.2之前的任何Oracle Database 11g發行版,列出的32位和64位軟件包都是必需的。所以注意數據庫版本。如下截圖
12C:linux7及更高版本。。僅當您打算使用32位客戶端應用程序訪問64位服務器時,才需要這些要求列表中的32位軟件包。對於Oracle數據庫或Oracle Grid Infrastructure安裝,Oracle數據庫12c第2版(12.2)和更高版本在Oracle Linux和Red Hat Enterprise Linux上不需要編譯器軟件包gcc和gcc-c ++。如下截圖
11g需要安裝:
yum install binutils
yum install compat-libcap1
yum install compat-libstdc++-33
yum install gcc
yum install gcc-c++
yum install glibc
yum install glibc-devel
yum install ksh
yum install libaio
yum install libaio-devel
yum install libgcc
yum install libstdc++
yum install libstdc++-devel
yum install libXi
yum install libXtst
yum install libXext
yum install libX11
yum install libXau
yum install libxcb
yum install make
yum install sysstat
yum install unixODBC
yum install unixODBC-devel
yum install zlib-devel
yum install elfutils-libelf-devel
yum install mpfr #以下三個IBM 的Linux on System z系統服務器需要安裝
yum install glibc-headers
yum install cpp
12c需要安裝:
yum install bc
yum install binutils
yum install compat-libcap1
yum install compat-libstdc++-33
yum install gcc
yum install gcc-c++
yum install glibc
yum install glibc-devel
yum install ksh
yum install libaio
yum install libaio-devel
yum install libgcc
yum install libstdc++
yum install libstdc++-devel
yum install libxcb
yum install libX11
yum install libXau
yum install libXi
yum install libXtst
yum install libXrender
yum install libXrender-devel
yum install make
yum install net-tools
yum install nfs-utils
yum install smartmontools
yum install sysstat
yum install unixODBC
yum install unixODBC-devel
yum install libXaw #以下的包IBM 的Linux on System z系統服務器需要安裝
yum install libXft
yum install libXmu
yum install libXp
yum install libgfortran
檢查安裝結果:
rpm –qa binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel zlib-devel elfutils-libelf-devel libXrender libXrender-devel smartmontools numactl-devel glibc-common glibc-headers
compat-libstdc++-33在本地鏡像沒有,需要聯網安裝或下載rpm單獨安裝
rpm –ivh compat-libstdc++-33.86_64.rpm
(三) 添加oracle用戶組和用戶
groupadd oinstall
groupadd dba
groupadd asmadmin
groupadd asmdba
useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
查看oracle用戶
id oracle
初始化oracle用戶密碼
echo oracle | passwd --stdin oracle
(四) 優化OS內核參數
vim /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
#(RAM:操作系統的物理內存,這里以2G內存為例)
# kernel.shmmax=RAM*80%*1024*1024*1024
# kernel.shmall=(RAM*1024*1024)/4
kernel.shmall = 2097152
kernel.shmmax = 1717986918
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
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=1048586
kernel.panic_on_oops = 1 12c需要
使參數生效
sysctl -p
(五) 限制oracle用戶的shell權限
vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536
oracle soft stack 10240
oracle soft memlock 134217728
vim /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so
vim /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
(六) 創建oracle安裝目錄
mkdir -p /u01/app/oracle/product/11.2.0/dbhome_1
mkdir /u01/app/oracle/oradata
mkdir /u01/app/inventory //12c不支持在$ORACLE_BASE中,故在app目錄中
mkdir /u01/app/oracle/ flash_recovery_area
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app
(七) 配置oracle用戶環境變量
su - oracle
vim .bash_profile
umask 022
export ORACLE_HOSTNAME=oracle.example.com
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
以上配置完成后,個人建議重啟下系統
reboot
(八) 靜默安裝
解壓oracle壓縮文件
cd /tmp #oracle包提前拷貝到此處的,若安裝包在其他位置,則需要改變目錄
unzip linux.x64_11gR2_database_1of2.zip -d /u01
unzip linux.x64_11gR2_database_2of2.zip -d /u01
配置安裝應答文件
mkdir /u01/etc/
cp /u01/database/response/* /u01/etc/
vim /u01/etc/db_install.rsp #將里面一些字段修改與下面的對應
oracle.install.option=INSTALL_DB_SWONLY //類型為安裝
UNIX_GROUP_NAME=oinstall //組
INVENTORY_LOCATION=/u01/app/inventory //其他文件等存放位置
SELECTED_LANGUAGES=en,zh_CN //查詢語言
ORACLE_HOSTNAME=oracle.example.com //主機名
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 //安裝目錄
ORACLE_BASE=/u01/app/oracle //主目錄
oracle.install.db.InstallEdition=EE //企業版本
oracle.install.db.isCustomInstall=true //自定義組件
oracle.install.db.DBA_GROUP=dba //dba組
oracle.install.db.OPER_GROUP=dba //oper組
oracle.install.db.OSDBA_GROUP=dba //12c有此選項,需要選
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //數據庫類型
racle.install.db.config.starterdb.globalDBName=orcl //全局實例名
oracle.install.db.config.starterdb.SID=orcl //實例名
#oracle.install.db.config.starterdb.memoryLimit=81920
//自動管理內存大小,一般為物理內存的40%,11g新特性可以自動調節,可以不設置
oracle.install.db.config.starterdb.password.ALL=ccense
//設定所有用戶使用同一個密碼
DECLINE_SECURITY_UPDATES=true //安全更新,11g的bug,必須為true
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false //不設置metalink密碼
開始安裝
su - oracle
./runInstaller -silent -responseFile /u01/etc/db_install.rsp –ignorePrereq
安裝期間可以使用tail命令監看oracle的安裝日志
tail -f /u01/app/oracle/inventory/logs/installActions2017-07-12_03-48-29PM.log
路徑根據提示查看,例如12c可能提示在/tmp目錄下
安裝完成,提示Successfully Setup Software.
根據提示完成配置(使用root運行兩個shell腳本)
執行root腳本完成安裝
su - root
sh /u01/app/oracle/inventory/orainstRoot.sh #根據提示,可能路徑不一樣
sh /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
配置靜默監聽
#netca.rsp 不用修改,默認即可,可以查看其中不帶注釋的內容應該如下:
[GENERAL]
RESPONSEFILE_VERSION="11.2"
CREATE_TYPE="CUSTOM"
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
配置監聽
su - oracle
netca -silent -responsefile /u01/etc/netca.rsp
查看監聽端口
netstat -tnulp | grep 1521
如果提示沒有 netstat 命令,請 yum install net-tools -y
准備靜默建庫
注:TOTALMEMORY 默認的為物理內存的40%,可以手動更改
修改建庫自動響應腳本
vim /u01/etc/dbca.rsp #修改字段對應
GDBNAME = orcl
SID = orcl
SYSPASSWORD = ccense #各用戶密碼,自己設置
SYSTEMPASSWORD = ccense
SYSMANPASSWORD = ccense
DBSNMPPASSWORD = ccense
DATAFILEDESTINATION =/u01/app/oracle/oradata
TEMPLATENAME=General_Purpose.dbc
listeners=LISTENER
RECOVERYAREADESTINATION=/u01/app/oracle/flash_recovery_area
CHARACTERSET = " ZHS16GBK"
#TOTALMEMORY = "1638" //12c不設置
執行靜默建庫
dbca -silent -responseFile /u01/etc/dbca.rsp //11g執行
dbca -silent -createDatabase -responseFile /u01/etc/dbca.rsp //12c
查看oracle實例進程
ps -ef | grep ora_ | grep -v grep
(九) 圖形化安裝
[oracle@oracle ~]$ export DISPLAY=192.168.10.1:0.0
[oracle@oracle ~]$ ./database/runInstaller // 執行安裝程序
開始安裝
跳過 email 登錄
當然如果有購買也可以登陸
跳過更新
只安裝軟件(后期使用 DBCA 或手工建庫)
單實例安裝(后面是集群安裝和集群節點)
英文和簡體中文
選擇安裝企業版
這里是我們前面寫的環境變量生效的結果,確認直接下一步
產品安裝清單和用戶組,這路路徑要是報錯就改成/u01/app/oracle/inventory即可
Oracle 系統參數檢測及修改,當出現點擊需要修復讀警告,選擇 Fix& Check Again 進行修復
運行腳本 復制腳本,以 root 用戶執行,執行成功后點擊 OK 完成修復
[root@oracle ~]# /tmp/CVU_11.2.0.4.0_oracle/runfixup.sh
注意:如果是有組件需要安裝,在生產環境是不能忽略的,需要全部安裝,安裝步驟:
[root@oracle ~]# yum -y install xxxx
完成以下步驟,進行安裝
這里出現報錯,此報錯為 Oracle 在 RHEL7 上允許的漏洞,需要修改參數
[oracle@oracle ~]$ vi /u01/app/oracle/product/11.2.0.4/dbhome_1/sysman/lib/ins_emagent.mk
//后面添加 "-lnnz11"字段。
修改后點擊 Retry 重試
完成安裝
Oracle 讓我們安裝腳本,兩個腳本完成后點擊 OK 繼續,第二個腳本一路按回車。
創建監聽
[oracle@oracle ~]#netca //在圖形化界面填入地址和sid直接下一步
建庫
開始建庫
[oracle@oracle ~]#dbca //彈出圖形化界面
創建數據庫
設置全局名和 SID(實例名)
配置 EM,反選
配置系統用戶密碼
我選擇了全部都設置為一個密碼,在生產中,建議各個密碼不一樣而且復雜
存儲類型設置(選擇 File System)
設置需要分配 Oracle 內存的大小
字符集設置建議為(ZHS16GBK)
下一步
開始創建點擊 Finish
配置完成 exit 退出
(十) 查看數據庫基本信息
查看監聽狀態
lsnrctl status
查看數據庫狀態
sqlplus / as sysdba
select status from v$instance;
查看實例狀態
sqlplus / as sysdba
select status from v$instance;
查看數據庫編碼
select userenv('language') from dual;
查看數據庫版本信息
select * from v$version;
(十一) 其他錯誤
出現以下情況,解決方式如下:輸入startup,根據提示信息,將$ORACLE_BASE/admin/數據庫名稱/pfile目錄下的init.ora.xxx形式的文件copy到$ORACLE_HOME/dbs目錄下init{sid}.ora(根據startup提示)即可。
如果是圖形化界面安裝可能會出現錯誤:
可能會出現的兩個錯誤:ins_ctk.mk錯誤:
修改/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk,將
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) //11行
修改為:
ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
點擊Retry繼續安裝。
接着又出現”Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk.' ,
解決方法:在makefile中添加鏈接libnnz11庫的參數,修改/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk,將
$(MK_EMAGENT_NMECTL)
修改為:$(MK_EMAGENT_NMECTL) -lnnz11 //190行左右
點擊Retry繼續安裝。
安裝成功!
(十二) 設置Oracle開機啟動
修改 oratab文件
vim /etc/oratab
把最下面要啟動的實例設置成 Y
orcl:/home/oracle/app/oracle/product/12.2.0/dbhome_1:Y
編寫啟動服務
標紅色的地方請替換為$ORACLE_HOME 的絕對路徑
[root@localhost system]# vim /usr/lib/systemd/system/oracle.service
[Unit]
Description=Oracle Database 11g Startup/Shutdown Service
After=syslog.target network.target
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=oneshot
RemainAfterExit=yes
User=oracle
Group=oinstall
Environment="ORACLE_HOME=$ORACLE_HOME"
ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME >> 2>&1 &
ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME 2>&1 &
[Install]
WantedBy=multi-user.target
執行命令使服務生效
使用服務生效:systemctl daemon-reload
開始服務:systemctl start oracle.service
停止服務:systemctl stop oracle.service
查看狀態:systemctl status oracle.service
開機自啟動服務:systemctl enable oracle.service