前情提要:
1. 實驗環境:Linux (RedHat7.6)+ Oracle 12C
2. 實驗目的:完全是用於自己學習的實驗環境,下列所有截圖均是實驗環境截圖
3. VMware Workstation版本:WORKSTATION 15.5 PRO
4. 整個流程比較長,因為幾乎每一步都有截圖,生產環境中大體流程也是如此,細節部分根據生產環境實際情況來
安裝流程:
1. 創建虛擬機
1.1 自定義(高級)來安裝

1.2 虛擬機硬件兼容性選擇“workstation 15.x” (這里的兼容性是和物理機版本有關系,本實驗環境物理機是Windows10)

1.3 選擇“稍后安裝操作系統”

1.4 客戶機操作系統選擇“Linux(L)”,版本選擇“RedHat7 64位”

1.5 自定義虛擬機名稱及安裝路徑

1.6 處理器配置保持默認即可

1.7 虛擬機內存設置為物理機內存的一半即可(該實驗環境物理機內存為8G)

1.8 網絡連接建議使用橋接網絡(這樣可以保證虛擬機和物理機處於同一個網段)

1.9 I/O控制器類型保持默認即可

1.10 磁盤類型保持默認即可

1.11 選擇“創建新虛擬磁盤”

1.12 磁盤容量自定義,選擇“將虛擬磁盤存儲為單個文件”,后面還會再創建兩塊磁盤,每一塊磁盤都是專盤專用

1.13 自定義名字即可(此塊磁盤是用來存儲Linux 相關安裝)

1.14 最后點擊 “完成”

完成以上步驟,此時虛擬機是不能正常啟動的,因為還沒有加載鏡像文件,還需要進行下列步驟
1.15 點擊“編輯虛擬機設置”

1.16 點擊“添加”,此處要添加另外兩塊磁盤,其中一塊大小為20G,用來存放各種軟件,另外一塊大小為100G,用來存放安裝的數據庫以及后續數據庫中創建的各種表空間等都將使用此磁盤空間,添加新磁盤的各種選項與上面創建第一塊磁盤時相同,此處不在贅述





添加完成后,如下圖所示

1.17 加載鏡像文件

1.18 設置網絡,點擊VMware左上角的“編輯”選項,然后選擇“虛擬網絡編輯器”,點擊右下角的“更改設置”,選擇“橋接模式”,其中“已橋接至”后面要選擇物理機正在使用的網卡(注意:有線網卡和無線網卡不要選錯)選擇完成,點擊“確定”


1.19 點擊“開啟此虛擬機”

1.20 看到此界面后,鼠標點擊一下,然后用鍵盤的方向鍵,選擇到第一行,按下TAB鍵,然后空格,輸入 vga=791(此處是用來調整分辨率,也可忽略此步驟,直接選擇到第一行,按回車)

1.21 選擇“English” 點擊繼續

1.21 點擊繼續后,看到如下界面,其中時間和日期,設置成上海即可,鍵盤不用更改,語言支持(此處選擇中文--中文簡體)INSTALLATION SOURCE 選擇下圖的"Auto-detected installation media",SOFTWARE SELECTION 按照下圖選擇“Server with GUI” 勾選圖中的8個選項即可,

INSTALLATION SOURCE 選擇下圖的"Auto-detected installation media"

SOFTWARE SELECTION 按照下圖選擇“Server with GUI” 勾選圖中的8個選項即可


INSTALLATION DESTINATION 如下圖所示

選擇 標准分區

划分三個分區,/boot分區 /swap分區 /根分區 划分完成后,選擇"Done“, "Accept Changes"


SECURITY POLICY 選擇OFF,KDUMP選擇不啟用


NETWORK & HOST NAME 為了保證虛擬機IP地址不變,建議將其設置成靜態IP,hostname自定義即可




配置完成后,點擊"Begin Installation" 開始安裝,

這里要設置一下ROOT PASSWORD (密碼可以不滿足密碼復雜度要求)

完成安裝后點擊右下角的”Reboot“ 重啟,重啟完成后,有一個LICENSE 需要勾選一下,如下圖

這里需要創建一個用戶,並且設置密碼(此處的密碼需要滿足密碼復雜度要求)設置完成后,即可進入虛擬機,虛擬機創建成功。

2. 創建文件系統,分區並格式化 /software/ 和 /u01/
1 [root@oracle12c ~]# fdisk -l 2 [root@oracle12c ~]# fdisk /dev/sdb --- 輸入n/回車/回車/回車/回車/w 3 [root@oracle12c ~]# fdisk /dev/sdc --- 輸入n/回車/回車/回車/回車/w 4 格式化 5 [root@oracle12c ~]# mkfs.xfs /dev/sdb1 6 [root@oracle12c ~]# mkfs.xfs /dev/sdc1 7 創建目錄並授權 8 [root@oracle12c ~]# mkdir /software/ 9 [root@oracle12c ~]# mkdir /u01 10 [root@oracle12c ~]# chmod -R 777 /software/ 11 [root@oracle12c ~]# chmod -R 777 /u01/ 12 掛載 13 [root@oracle12c ~]# mount /dev/sdb1 /software/ 14 [root@oracle12c ~]# mount /dev/sdc1 /u01/ 15 [root@oracle12c ~]# df -Th
3. 更改開機自啟文件,將掛載好的分區加入到開機自啟文件,這樣下次開機時便可自動掛載
1 獲取分區的UUID 2 [root@oracle12c ~]# blkid /dev/sdb1 3 [root@oracle12c ~]# blkid /dev/sdc1 4 [root@oracle12c ~]# vim /etc/fstab 5 [root@oracle12c ~]# cat /etc/fstab 6 7 # 8 # /etc/fstab 9 # Created by anaconda on Fri Nov 13 18:09:57 2020 10 # 11 # Accessible filesystems, by reference, are maintained under '/dev/disk' 12 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 13 # 14 UUID=4e6cd6f6-df6b-459f-a0b1-8586aba017cd / xfs defaults 0 0 15 UUID=de906cc8-deed-4114-a3fa-2c46d53dc3b0 /boot xfs defaults 0 0 16 UUID=87a2f0bb-4df6-4aab-b151-6f4ed8a4b8a6 swap swap defaults 0 0 17 UUID=ac15bffc-cb81-4973-8d3c-ac082c408f59 /software xfs defaults 0 0 18 UUID=af29bc0a-b93b-43f4-8e81-d1b70950e778 /u01 xfs defaults 0 0
4. 將所需的各種軟件包上傳到/software 目錄,然后連接光盤,配置YUM源
1 [root@oracle12c ~]# mount /dev/cdrom /mnt 2 mount: /dev/sr0 is write-protected, mounting read-only 3 [root@oracle12c ~]# cd /etc/yum.repos.d/ 4 [root@oracle12c yum.repos.d]# ls 5 redhat.repo 6 [root@oracle12c yum.repos.d]# vim oracle12c.repo 7 [root@oracle12c yum.repos.d]# cat oracle12c.repo 8 [oracle12c.repo] 9 name = oracle12c 10 baseurl = file:///mnt/ 11 enable = 1 12 gpgcheck = 0 13 [root@oracle12c yum.repos.d]# yum repolist all 14 Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager 15 This system is not registered with an entitlement server. You can use subscription-manager to register. 16 oracle12c.repo | 4.3 kB 00:00:00 17 (1/2): oracle12c.repo/group_gz | 146 kB 00:00:00 18 (2/2): oracle12c.repo/primary_db | 4.2 MB 00:00:00 19 repo id repo name status 20 oracle12c.repo oracle12c enabled: 5,152 21 repolist: 5,152 22 [root@oracle12c yum.repos.d]#
5. 設置主機名,將其加入到配置文件中
1 [root@oracle12c ~]# hostname 2 oracle12c 3 [root@oracle12c ~]# echo "192.168.11.5 oracle12c" >> /etc/hosts 4 [root@oracle12c ~]# cat /etc/hosts 5 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 6 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 7 192.168.11.5 oracle12c 8 [root@oracle12c ~]#
6. 關閉防火牆,禁用SELINUX
1 [root@oracle12c ~]# systemctl stop firewalld.service 2 [root@oracle12c ~]# systemctl disable firewalld.service 3 Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. 4 Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. 5 [root@oracle12c ~]# vim /etc/selinux/config 6 [root@oracle12c ~]# cat /etc/selinux/config 7 8 # This file controls the state of SELinux on the system. 9 # SELINUX= can take one of these three values: 10 # enforcing - SELinux security policy is enforced. 11 # permissive - SELinux prints warnings instead of enforcing. 12 # disabled - No SELinux policy is loaded. 13 SELINUX=disabled 14 # SELINUXTYPE= can take one of three values: 15 # targeted - Targeted processes are protected, 16 # minimum - Modification of targeted policy. Only selected processes are protected. 17 # mls - Multi Level Security protection. 18 SELINUXTYPE=targeted 19 20[root@oracle12c ~]#
7. RPM包檢測,賦予腳本執行權限
1 [root@oracle12c ~]#chmod +x rpminstall.sh---注意該文件的目錄位置 2 [root@oracle12c ~]#./rpminstall.sh
8. 創建Oracle用戶及相關組
1 [root@oracle12c ~]# groupadd oinstall 2 [root@oracle12c ~]# groupadd dba 3 [root@oracle12c ~]# useradd -g oinstall -G dba -m oracle 4 [root@oracle12c ~]# passwd oracle 5 Changing password for user oracle. 6 New password: 7 BAD PASSWORD: The password is shorter than 8 characters 8 Retype new password: 9 passwd: all authentication tokens updated successfully. 10 [root@oracle12c ~]#
9. 更改官方要求的三個文件內容,最后執行 sysctl -p使其生效
9.1 /etc/pam.d/login
1 [root@oracle12c ~]# echo "session required pam_limits.so" >> /etc/pam.d/login 2 [root@oracle12c ~]#
9.2 /etc/security/limits.conf
1 [root@oracle12c ~]# vim /etc/security/limits.conf 2 [root@oracle12c ~]# tail -10 /etc/security/limits.conf 3 #ftp hard nproc 0 4 #@student - maxlogins 4 5 6 # End of file 7 oracle soft nproc 16384 8 oracle hard nproc 16384 9 oracle soft nofile 65536 10 oracle hard nofile 65536 11 oracle soft stack 32768 12 oracle hard stack 32768 13 [root@oracle12c ~]#
9.3 /etc/sysctl.conf
1 [root@oracle12c ~]# vim /etc/sysctl.conf 2 [root@oracle12c ~]# tail -15 /etc/sysctl.conf 3 # name in /etc/sysctl.d/ and put new settings there. 4 # 5 # For more information, see sysctl.conf(5) and sysctl.d(5). 6 fs.aio-max-nr = 1048576 7 fs.file-max = 6815744 8 kernel.sem = 250 32000 100 128 9 net.ipv4.ip_local_port_range = 9000 65500 10 net.core.rmem_default = 262144 11 net.core.rmem_max = 4194304 12 net.core.wmem_default = 262144 13 net.core.wmem_max = 1048586 14 kernel.panic_on_oops = 1 15 kernel.shmmax = 5033164800 16 kernel.shmall = 1228800 17 kernel.shmmni = 4096 18 [root@oracle12c ~]#
其中:(生產環境與實驗環境不同之處)
kernel.shmmax = 內存大小*1024*1024*1024*0.9
kernel.shmall = kernel.shmmax/4096
[root@oracle12c ~]# sysctl -p
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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
kernel.shmmax = 5033164800
kernel.shmall = 1228800
kernel.shmmni = 4096
[root@oracle12c ~]#
10. 配置Oracle環境變量
1 [root@oracle12c ~]# su - oracle --- 切換到Oracle用戶 2 [oracle@oracle12c ~]$ vim .bash_profile 3 [oracle@oracle12c ~]$ cat .bash_profile 4 # .bash_profile 5 6 # Get the aliases and functions 7 if [ -f ~/.bashrc ]; then 8 . ~/.bashrc 9 fi 10 11 # User specific environment and startup programs 12 13 PATH=$PATH:$HOME/.local/bin:$HOME/bin 14 15 export PATH 16 umask 022 17 export ORACLE_SID=OCP12C 18 export ORACLE_BASE=/u01/app/oracle 19 export ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/db_1 20 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib 21 export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS" 22 export TMP=/tmp 23 export TMPDIR=$TMP 24 export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH 25 export EDITOR=vim 26 export TNS_ADMIN=$ORACLE_HOME/network/admin 27 export ORACLE_PATH=.:$ORACLE_BASE/dba_scripts/sql:$ORACLE_HOME/rdbms/admin 28 export SQLPATH=$ORACLE_HOME/sqlplus/admin 29 export NLS_LANG="AMERICAN_CHINA.ZHS16GBK" 30 alias sqlplus='rlwrap sqlplus' 31 alias rman='rlwrap rman' 32 alias asmcmd='rlwrap asmcmd' 33 [oracle@oracle12c ~]$
11. 更改/software/和/u01/目錄的擁有者,所屬組,並賦予相關權限,然后切換到Oracle用戶,解壓之前已經上傳好的數據庫軟件包
1 [root@oracle12c ~]# chown -R oracle:oinstall /software/ 2 [root@oracle12c ~]# chmod -R 777 /software/---因為是實驗環境,所以授予777權限,生產環境要根據實際情況來 3 [root@oracle12c ~]# chown -R oracle:oinstall /u01/ 4 [root@oracle12c ~]# chmod -R 777 /u01/ 5 [root@oracle12c ~]# su - oracle 6 Last login: Fri Nov 13 22:48:59 CST 2020 on pts/1 7 [oracle@oracle12c ~]$ cd /software/ 8 [oracle@oracle12c software]$ unzip 數據庫軟件包.zip
12. 解壓完成后,重啟虛擬機,然后在圖形化界面中必須以Oracle用戶身份登錄,登錄成功后,打開終端,開始進行數據庫軟件的安裝,安裝完成后,再進行數據庫的創建,具體步驟如下
13. 進入/software/database目錄,里面有一個runInstaller的文件,直接 ./runInstaller,調出圖形化安裝界面,各種選項如下圖所示:


僅安裝數據庫軟件

單實例安裝

Enterprise Edition

保持默認

保持默認

選擇dba即可


在安裝過程中,會出現一個窗口,需要執行窗口中的兩個腳本,需要切換到root用戶執行,執行完成后,點擊OK

點擊 close,數據庫軟件安裝完成,

14. 數據庫軟件安裝完成后,開始建庫
1 查看監聽狀態 2 [oracle@oracle12c ~]$ lsnrctl status 3 4 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 13-NOV-2020 23:53:00 5 6 Copyright (c) 1991, 2016, Oracle. All rights reserved. 7 8 Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) 9 TNS-12541: TNS:no listener 10 TNS-12560: TNS:protocol adapter error 11 TNS-00511: No listener 12 Linux Error: 111: Connection refused 13 使用netca創建監聽文件,next-->next-->next-->next-->next-->next-->next-->next-->Finish 14 [oracle@oracle12c ~]$ netca 15 16 Oracle Net Services Configuration: 17 Configuring Listener:LISTENER 18 Listener configuration complete. 19 Oracle Net Listener Startup: 20 Running Listener Control: 21 /u01/app/oracle/product/12.2.0.1/db_1/bin/lsnrctl start LISTENER 22 Listener Control complete. 23 Listener started successfully. 24 Oracle Net Services configuration successful. The exit code is 0 25 啟動監聽 26 [oracle@oracle12c ~]$ lsnrctl start 27 28 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 13-NOV-2020 23:56:27 29 30 Copyright (c) 1991, 2016, Oracle. All rights reserved. 31 32 TNS-01106: Listener using listener name LISTENER has already been started
建庫的流程如下列各圖所示



下圖中建議Global database name 與 SID名字相同,如果不勾選Create as Container database 選項,則和11g是一樣的,這里勾選以后,就是創建容器數據庫,下面的PDB name 自定義


這里選擇不指定閃回區和不啟用歸檔


下圖中的兩個選項不要勾選


下圖中的Sample schemas選擇不勾選,因為后面會手動創建HR模式,如果勾選了,則會自動創建HR模式

不配置EM

下圖中的密碼設置時,密碼中不要包含 ”@" 字符,否則建庫失敗



這里一般情況下,超過4%不報錯,就可以建庫成功。

完成,點擊 close

登錄數據庫,建庫成功。
1 [oracle@oracle12c ~]$ sqlplus / as sysdba 2 3 SQL*Plus: Release 12.2.0.1.0 Production on Sat Nov 14 00:47:14 2020 4 5 Copyright (c) 1982, 2016, Oracle. All rights reserved. 6 7 8 Connected to: 9 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 10 11 SQL> show pdbs 12 13 CON_ID CON_NAME OPEN MODE RESTRICTED 14 ---------- ------------------------------ ---------- ---------- 15 2 PDB$SEED READ ONLY NO 16 3 ERP READ WRITE NO 17 SQL>
以上流程便是在Linux上安裝Oracle12C 數據庫的全過程,基本上每一步都有截圖。
