把自己在RHEL7.0上安裝Oracle12c R2 的過程記錄下來
1.準備工作
1.0 設置本地域名解析
安裝時提示需要這個東西
[root@oracle12c ~]# echo '192.168.10.10 oracle12c' >> /etc/hosts
[root@oracle12c ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.10 oracle12c
[root@oracle12c ~]#
1.1 主機內存
文檔中對內存的要求是最小1G,推薦2G,查看本機內存爲4G,符合條件:
[root@oracle12c ~]# grep MemTotal /proc/meminfo
MemTotal: 4033904 kB
1.2 操作系統版本
文檔中要求範圍比較寬泛,Oracle linux [5|6|7] ,RHEL[5|6|7] 或其它發行版都可以,本機系統爲 RHEL7.0 符合條件:
[root@oracle12c ~]# uname -a
Linux oracle12c 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@oracle12c ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)
1.3 臨時目錄大小
臨時目錄要求最小1G,要求不是很嚴格
[root@oracle12c ~]# df -h /tmp
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 2.9G 15G 17% /
1.4 Swap空間大小
文檔裏對Swap空間的大小要求依賴內存大小;
內存爲1~2G時,Swap應爲內存的1.5倍;內存爲2~16G時,Swap應等於內存大小;本機Swap大小2G,需增加:
[root@oracle12c ~]# free -m
total used free shared buffers cached
Mem: 3939 1420 2519 9 0 320
-/+ buffers/cache: 1098 2840
Swap: 2047 0 2047
增加方法:
1.創建2G文件 /usr/swap
[root@oracle12c Desktop]# dd if=/dev/zero of=/usr/swap bs=1G count=2
2.設置交換分區
[root@oracle12c Desktop]# mkswap /usr/swap
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=b4fe13a0-89ea-4d71-8ada-6516f20cec8e
3.啓動交換分區
[root@oracle12c Desktop]# swapon /usr/swap
swapon: /usr/swap: insecure permissions 0644, 0600 suggested.
[root@oracle12c Desktop]# chmod 0644 /usr/swap
4.開機自動掛載
[root@oracle12c Desktop]# vim /etc/fstab
[root@oracle12c Desktop]# mount -a
[root@oracle12c Desktop]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Sep 1 20:22:34 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=ed8d7ba8-d900-4481-a7a6-7fcd3995c062 /boot xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
/usr/swap swap swap defaults 0 0
之前使用UUID做自動掛載,結果安裝時沒有了,重新用文件名掛載,現Swap空間符合要求:
[root@oracle12c Desktop]# free -m
total used free shared buffers cached
Mem: 3939 2811 1127 9 0 1811
-/+ buffers/cache: 1000 2939
Swap: 4095 0 4095
1.5 安裝所需Packages
Item | Requirements |
---|---|
Packages for Red HatEnterprise Linux 7 | The following packages (or later versions) must be installed: binutils-2.23.52.0.1-12.el7 (x86_64) compat-libcap1-1.10-3.el7 (x86_64) compat-libstdc+±33-3.2.3-71.el7 (i686) compat-libstdc+±33-3.2.3-71.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) libxcb-1.9-5.el7 (i686) libxcb-1.9-5.el7 (x86_64) libX11-1.6.0-2.1.el7 (i686) libX111.6.0-2.1.el7 (x86_64) libXau-1.0.8-2.1.el7 (i686) libXau-1.0.8-2.1.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) libXrender (i686) libXrender (x86_64) libXrender-devel (i686) libXrender-devel (x86_64) make-3.82-19.el7 (x86_64) net-tools-2.0-0.17.20131004git.el7 (x86_64) (for Oracle RAC and Oracle Clusterware) nfs-utils-1.3.0-0.21.el7.x86_64 (for Oracle ACFS) smartmontools-6.2-4.el7 (x86_64) sysstat-10.1.5-1.el7 (x86_64) |
實際安裝的都能在系統光盤中找到,配置yum倉庫之後直接安裝,實際安裝如下:
[root@oracle12c ~]# yum -y install binutils-* compat-libcap1-* gcc-* gcc-c++-* glibc-* glibc-devel-* ksh libaio-* libaio-devel-* libgcc-* libstdc++-* libstdc++-devel-* libXi-* libXtst-* make-* sysstat-* unixODBC*
1.6 內核配置
文檔中給出的參數配置的建議:
Parameter | Value | File |
---|---|---|
semmsl semmns semopm semmni |
250 32000 100 128 |
/proc/sys/kernel/sem |
shmall | 40 percent of the size of physical memory in pages Note: If the server supports multiple databases, or uses a large SGA, then set this parameter to a value that is equal to the total amount of shared memory, in 4K pages, that the system can use at one time. |
/proc/sys/kernel/shmall |
shmmax | Half the size of physical memory in bytes See My Oracle Support Note 567506.1 for additional information about configuring shmmax. |
/proc/sys/kernel/shmmax |
shmmni | 4096 | /proc/sys/kernel/shmmni |
panic_on_oops | 1 | /proc/sys/kernel/panic_on_oops |
file-max | 6815744 | /proc/sys/fs/filemax |
aio-max-nr | 1048576 Note: This value limits concurrent outstanding requests and should be set to avoid I/O subsystem failures. |
/proc/sys/fs/aiomax-nr |
ip_local_port_range | Minimum: 9000 Maximum: 65500 |
/proc/sys/net/ipv4/ip_local_port_range |
rmem_default | 262144 | /proc/sys/net/core/rmem_default |
rmem_max | 4194304 | /proc/sys/net/core/rmem_max |
wmem_default | 262144 | /proc/sys/net/core/wmem_default |
wmem_max | 1048576 | /proc/sys/net/core/wmem_max |
實際使用根據自己的系統去調整,以下是參考:
[root@oracle12c Desktop]# cat /etc/sysctl.conf
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
kernel.shmall = 2097152
kernel.shmmax = 976678912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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
[root@oracle12c Desktop]# sysctl -p
kernel.shmall = 2097152
kernel.shmmax = 976678912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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.shmall :該參數控制可以使用的共享內存的總頁數。Linux共享內存頁大小爲4KB,共享內存段的大小都是共享內存頁大小的整數倍。一個共享內存段的最大大小是16G,那麼需要共享內存頁數是16GB/4KB=16777216KB /4KB=4194304(頁),也就是64Bit系統下16GB物理內存,設置kernel.shmall = 4194304才符合要求(幾乎是原來設置2097152的兩倍)。這時可以將shmmax參數調整到16G了,同時可以修改SGA_MAX_SIZE和SGA_TARGET爲12G(您想設置的SGA最大大小,當然也可以是2G~14G等,還要協調PGA參數及OS等其他內存使用,不能設置太滿,比如16G);
kernel.shmmax:是核心參數中最重要的參數之一,用於定義單個共享內存段的最大值。設置應該足夠大,能在一個共享內存段下容納下整個的SGA ,設置的過低可能會導致需要創建多個共享內存段,這樣可能導致系統性能的下降。至於導致系統下降的主要原因爲在實例啓動以及ServerProcess創建的時候,多個小的共享內存段可能會導致當時輕微的系統性能的降低(在啓動的時候需要去創建多個虛擬地址段,在進程創建的時候要讓進程對多個段進行“識別”,會有一些影響),但是其他時候都不會有影響。
官方建議值:
32位linux系統:可取最大值爲4GB(4294967296bytes)-1byte,即4294967295。建議值爲多於內存的一半,所以如果是32爲系統,一般可取值爲4294967295。32位系統對SGA大小有限制,所以SGA肯定可以包含在單個共享內存段中。
64位linux系統:可取的最大值爲物理內存值-1byte,建議值爲多於物理內存的一半,一般取值大於SGA_MAX_SIZE即可,可以取物理內存-1byte。例如,如果爲12GB物理內存,可取1210241024*1024-1=12884901887,SGA肯定會包含在單個共享內存段中。
kernel.shmmni:該參數是共享內存段的最大數量。shmmni缺省值4096,一般肯定是夠用了。
kernel.sem:以kernel.sem = 250 32000 100 128爲例:
250是參數semmsl的值,表示一個信號量集合中能夠包含的信號量最大數目。
32000是參數semmns的值,表示系統內可允許的信號量最大數目。
100是參數semopm的值,表示單個semopm()調用在一個信號量集合上可以執行的操作數量。
128是參數semmni的值,表示系統信號量集合總數。
fs.aio-max-nr:此參數限制併發未完成的請求,應該設置避免I/O子系統故障。
fs.file-max:該參數決定了系統中所允許的文件句柄最大數目,文件句柄設置代表linux系統中可以打開的文件的數量。
net.ipv4.ip_local_port_range:表示應用程序可使用的IPv4端口範圍。
net.core.rmem_default:表示套接字接收緩衝區大小的缺省值。
net.core.rmem_max:表示套接字接收緩衝區大小的最大值。
net.core.wmem_default:表示套接字發送緩衝區大小的缺省值。
net.core.wmem_max:表示套接字發送緩衝區大小的最大值。
1.7 設置oracle用戶的shell限制
1.7.1 編輯配置文件limits.conf
[root@oracle12c ~]# vim /etc/security/limits.conf
[root@oracle12c ~]# tail -n 10 /etc/security/limits.conf
#@student - maxlogins 4
# End of file
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
參數解釋
oracle:被限制的用戶名,如果是限制組組名前面加@以用戶名區分;
soft: 當前系統生效的設置值
hard :系統中所能設定的最大值。soft 的限制不能比har 限制高。用 - 就表明同時設置了 soft 和 hard 的值
。
noproc :進程的最大數目
stack :最大棧大小
nofile :打開文件的最大數目
1.7.2 使配置文件生效(放入登錄驗證模塊)
[root@oracle12c ~]# echo 'session required pam_limits.so' >> /etc/pam.d/login
[root@oracle12c ~]# tail -n 5 /etc/pam.d/login
session optional pam_keyinit.so force revoke
session include system-auth
session include postlogin
-session optional pam_ck_connector.so
session required pam_limits.so
1.7.3 oracle用戶的登錄限制設置
[root@oracle12c ~]# vim /etc/profile
[root@oracle12c ~]# tail -n 15 /etc/profile
done
unset i
unset -f pathmunge
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -u 16384
ulimit -n 65536
ulimit -s 10240
else
ulimit -u 16384 -n 65536 -s 10240
fi
umask 022
fi
1.8 關閉安全子系統
爲了省事,關閉安全子系統:
[root@oracle12c ~]# vim /etc/selinux/config
[root@oracle12c ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
1.9 創建用戶及用戶組
[root@oracle12c ~]# groupadd oinstall
[root@oracle12c ~]# groupadd dba
[root@oracle12c ~]# useradd -g oinstall -G dba oracle
[root@oracle12c ~]# echo 'oracle' | passwd --stdin oracle
Changing password for user oracle.
passwd: all authentication tokens updated successfully.
[root@oracle12c ~]# id oracle
uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)
1.10 創建目錄並授權
由於裝系統時沒考慮到存儲問題,導致存儲有點小,所以另外掛了兩塊硬盤做lvm:
[root@oracle12c ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
[root@oracle12c ~]# vgcreate oracle12c /dev/sdb /dev/sdc
Volume group "oracle12c" successfully created
[root@oracle12c ~]# lvcreate -L 39G -n oracle oracle12c
Logical volume "oracle" created
[root@oracle12c ~]# mkfs.xfs /dev/oracle12c/oracle
meta-data=/dev/oracle12c/oracle isize=256 agcount=4, agsize=2555904 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=10223616, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=4992, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@oracle12c ~]# mkdir /u01
[root@oracle12c ~]# vim /etc/fstab
[root@oracle12c ~]# mount -a
[root@oracle12c ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 5.3G 13G 31% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 140K 2.0G 1% /dev/shm
tmpfs 2.0G 8.8M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/mapper/oracle12c-oracle 39G 33M 39G 1% /u01
[root@oracle12c ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Sep 1 20:22:34 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=ed8d7ba8-d900-4481-a7a6-7fcd3995c062 /boot xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
UUID=b4fe13a0-89ea-4d71-8ada-6516f20cec8e swap swap defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0
/dev/oracle12c/oracle /u01 xfs defaults 0 0
[root@oracle12c ~]# mkdir -p /u01/app/oracle
[root@oracle12c ~]# chown -R oracle:oinstall /u01
[root@oracle12c ~]# chmod -R 777 /u01
1.11 設置oracle用戶環境變量
[oracle@oracle12c Desktop]$ cd
[oracle@oracle12c ~]$ vim .bash_profile
[oracle@oracle12c ~]$ source .bash_profile
[oracle@oracle12c ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/12.2.0/dbhome_1
[oracle@oracle12c ~]$ tail -n 15 .bash_profile
. ~/.bashrc
fi
# User specific environment and startup programs
ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1;export ORACLE_HOME
ORACLE_SID=orcl;export ORACLE_SID
TMP=/tmp;export TMP
TMPDIR=$TMP;export TMPDIR
#NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8";export NLS_LANG
TNS_ADMIN=$ORACLE_HOME/network/admin;export TNS_ADMIN
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH;export PATH
PATH=$PATH:$HOME/.local/bin:$HOME/bin;export PATH
2.安裝
2.1 解壓並安裝
[oracle@oracle12c ~]$ mv linuxx64_12201_database.zip /u01/app/oracle/
[oracle@oracle12c ~]$ cd /u01/app/oracle
[oracle@oracle12c oracle]$ ls
linuxx64_12201_database.zip
[oracle@oracle12c oracle]$ unzip linuxx64_12201_database.zip
Archive: linuxx64_12201_database.zip
creating: database/
creating: database/sshsetup/
inflating: database/sshsetup/sshUserSetup.sh
[oracle@oracle12c oracle]$ cd database/
[oracle@oracle12c database]$ ls
install response rpm runInstaller sshsetup stage welcome.html
[oracle@oracle12c database]$ ./runInstaller
Starting Oracle Universal Installer...
2.2 軟件安裝過程截圖:
2.2.1 選擇不推送
2.2.2 只安裝數據庫軟件
2.2.3 單實例數據庫平臺
2.2.4 選擇版本
2.2.5 安裝位置確認
2.2.6 安裝目錄位置
2.2.7 系統組權限分配
2.2.8 安裝概覽
2.2.9 安裝
第一次安裝時系統不知道什麼原因重啓了。把文件全部刪掉重新安裝的。
使用root用戶執行兩個shell腳本
1./u01/app/oraInventory/orainsRoot.sh
1./u01/app/oracle/product/12.2.0/dbhome_1/root.sh
3.dbca安裝數據庫
[root@oracle12c ~]# dbca
第一次輸入沒有反應,發現是環境變量ORACLE_HOME與實際安裝不服,改一下就好了
3.1 選擇行爲-創建數據庫
3.2 選擇創建模式-高級配置
3.3 部署類型-單實例,通用,事務
3.4 數據庫身份-名字、ID、是否容器
3.5 存儲選項-文件系統位置、非OMF
3.6 指定快速恢復區
3.7 網絡配置-以後手動配置
3.8 配置Vault安全-忽略
3.9.1 配置內存管理
3.9.2 配置字符集
3.10 管理工具選擇–忽略
3.11 身份驗證-用戶密碼
3.12 創建選項-建庫、保留建庫腳本
3.13 建庫摘要
3.14 創建過程
3.15 完成
4.驗證登錄
[oracle@oracle12c ~]$
[oracle@oracle12c ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 13 21:22:46 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
ORCL READ WRITE