一、安裝準備
0)上傳安裝包
上傳安裝包到 /db
目錄:
$ mkdir /db
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
1)解壓安裝包
$ cd /db
$ unzip linux.x64_11gR2_database_1of2.zip
$ unzip linux.x64_11gR2_database_2of2.zip
2)安裝依賴
如果沒有互聯網環境無法使用 yum
,可以掛載 CentOS-7-x86_64-Everything-2009.iso
$ mkdir /cdrom
$ mount -o loop /xxx/CentOS-7-x86_64-Everything-2009.iso /cdrom
// 查看是否掛載上
$ df -h
安裝依賴:
yum -y install binutils \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
make \
pdksh \
ksh \
sysstat \
unixODBC \
unixODBC-devel
如果
pdksh
沒有安裝,可以忽略,已經安裝了ksh
。
二、系統設置
0)創建 oracle 用戶
$ userdel -r oracle
$ groupadd -g 700 oinstall
$ groupadd -g 701 dba
$ useradd -g oinstall -G dba -u 700 oracle
$ passwd oracle // 設置oracle用戶密碼
$ id oracle
uid=700(oracle) gid=700(oinstall) 組=700(oinstall),701(dba)
1)限制 oracle 用戶的 shell 權限
添加以下配置:
$ vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
limits.conf
配置說明:
<domain> <type> <resource> <value>
<domain>:
username 或 @groupname:設置需要被限制的用戶名,組名前面加 @ 與 用戶名 區別。 * 表示所有用戶(注意有的系統不支持)
<type>:
soft 指的是當前系統生效的設置值
hard 表明系統中所能設定的最大值(soft 的限制不能比 hard 限制高 )
- 就表明同時設置了 soft 和 hard 的值
<resource>:(針對 Oracle 的我們主要配置 nproc nofile):
as - 地址空間限制
rss - 最大持久設置大小
cpu - 以分鐘為單位的最多 CPU 時間
core - 限制內核文件的大小
date - 最大數據大小
stack - 最大棧大小
fsize - 最大文件大小
noproc - 進程的最大數目
nofile - 打開文件的最大數目
memlock - 最大鎖定內存地址空間
maxlogins - 此用戶允許登錄的最大數目
<value>:: 限制的值
2)優化 OS 內核參數
$ vi /etc/sysctl.conf
kernel.shmmni=4096
kernel.shmall=8388608
kernel.shmmax=34359738368
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.shmmni
: 該參數為共享內存段的最大數量,缺省值為 4096 ,一般情況下無需調整。
kernel.shmall
: shmall 表示共享內存總量,以頁為單位(ARM64 或者 Intel64 一頁=4K), shmall 不能低于 SGA 大小,若 shmall 低于 SGA 大小,實例啟動時會報:ORA-27123: unable to attach to shared memory segment 錯誤,無法啟動實例。
kernel.shmmax
: shmmax 參數用來定義單個共享內存段的最大值,該值應該配置足夠大,能夠在一個共享內存段中容下整個的 SGA ,如果配置過低可能導致需要創建多個共享內存段,這樣可能會導致系統性能下降。
shmmni 缺省值為 4096 ,一般情況下無需調整
shmmax 的單位為 Byte (字節), 最小取值為一半的物理內存,以設置 shmmax 為 32G 為例:
32 * 1024 * 1024 * 1024 = 34359738368
shmall 的單位為頁(ARM64 或者 Intel64 一頁=4K),一頁 = 4k。一般取值 >= shmmax / 4096 = 8388608
參考:https://www.modb.pro/db/390568
kernel.sem
:表示設置的信號量
fs.file-max // 表示一個進程可以打開的文件句柄的最大數量.
net.ipv4.ip_local_port_range// 專用服務器模式下與用戶進程通信時分配給用戶的端口區間
net.core.rmem_default // 默認接收緩沖區大小
net.core.rmem_max // 接收緩沖區最大值
net.core.wmem_default // 默認的發送緩沖區大小
net.core.wmem_max // 發送緩沖區最大值
使參數生效:
$ sysctl -p
查看參數情況
$ ipcs -l
3)創建安裝目錄
// 當前為 root 用戶
$ mkdir -p /db/oracle/product/11.2.0
$ mkdir /db/oracle/oradata
$ mkdir /db/oracle/oraInventory
$ mkdir /db/oracle/fast_recovery_area
$ chown -R oracle:oinstall /db/oracle
$ chmod -R 775 /db/oracle
// 切換到 oracle 用戶
$ su - oracle
// 打開配置文件
$ vim ~/.bash_profile
// 文件最后添加
export ORACLE_BASE=/db/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
$ source ~/.bash_profile
$ exit
三、安裝
0)開始安裝
準備 db_install.rsp
文件:
// 創建 /home/oracle/etc 目錄
$ mkdir /home/oracle/etc
// 復制 db_install.rsp 到 /home/oracle/etc 目錄下
$ cp db_install.rsp /home/oracle/etc/db_install.rsp
// 修改權限
$ chown -R oracle:oinstall /home/oracle/etc
開始靜默安裝:
// 切換到 oracle 用戶
$ su - oracle
$ /db/database/runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp -ignorePrereq
Checking Temp space: must be greater than 120 MB. Actual 39151 MB Passed
Checking swap space: must be greater than 150 MB. Actual 16383 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2022-07-30_11-42-23AM. Please wait ...
[WARNING] [INS-32055] The Central Inventory is located in the Oracle base.
CAUSE: The Central Inventory is located in the Oracle base.
ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.
[WARNING] [INS-30011] The password entered does not conform to the Oracle recommended standards.
CAUSE: Oracle recommends that the ADMIN password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
ACTION: Provide a password that conforms to the Oracle recommended standards.
[WARNING] [INS-32055] The Central Inventory is located in the Oracle base.
CAUSE: The Central Inventory is located in the Oracle base.
ACTION: Oracle recommends placing this Central Inventory in a location outside the Oracle base directory.
[WARNING] [INS-30011] The password entered does not conform to the Oracle recommended standards.
CAUSE: Oracle recommends that the ADMIN password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
ACTION: Provide a password that conforms to the Oracle recommended standards.
You can find the log of this install session at:
/db/oracle/oraInventory/logs/installActions2022-07-30_11-42-23AM.log
查看實時安裝日志:
// 另開一個終端 // root 用戶 $ tailf /db/oracle/oraInventory/logs/installAction>2022-XX-XX_XX-XX-XX.log
安裝進度
可能遇到的問題
[FATAL] [INS-35172] Target database memory (6144MB) exceeds the systems available shared memory (3908MB). CAUSE: The total available shared memory on the system (3908 MB) was less than the chosen target database memory (6144 MB). ACTION: Enter a value for target database memory that is less than 3908 MB.
假設系統物理內存為 8G,現在想分配 6G 給 ORACLE 使用,假設我們之前配置了 shmmax=6G,shmall=6G,這里為什么還會報錯?難道 shmmax 配置不起作用嗎?
這里要涉及到 Linux 系統共享內存的概念(/dev/shm
),待補充!簡單解釋: ORACLE 的系統全局區(SGA)是通過系統共享內存技術實現的,
/dev/shm
分區的大小默認是系統物理內存的 50%(CentOS),具體大小可以通過df -h
命令查看。[root@centos-linux ~]df -h /dev/shm 文件系統 容量 已用 可用 已用% 掛載點 tmpfs 3.9G 0 3.9G 0% /dev/shm
假設系統內存 8G,那么可用共享內存大小就是 4G,接近上面報錯信息中的 3908M,所以才會報錯。
如果有需要,共享內存大小可以支持修改,修改/etc/fstab
文件即可,修改/dev/shm
所在行,沒有則新增:tmpfs /dev/shm tmpfs defaults,size=6G 0 0
// 修改后重新掛載 [root@centos-linux ~]mount –o remount /dev/shm // 或者卸載再掛載 [root@centos-linux ~]umount /dev/shm [root@centos-linux ~]mount -t tmpfs -o size=6G tmpfs /dev/shm [root@centos-linux ~]df -h /dev/shm 文件系統 容量 已用 可用 已用% 掛載點 shmfs 6.0G 0 6.0G 0% /dev/shm
安裝完成,提示 Successfully Setup Software.
,按提示執行腳本:
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 21313 MB Passed
Checking swap space: must be greater than 150 MB. Actual 4015 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2015-11-30_11-40-10AM. Please wait ...[oracle@JY-DB01 database]$ [WARNING] [INS-13014] Target environment do not meet some optional requirements.
CAUSE: Some of the optional prerequisites are not met. See logs for details. /u01/app/oraInventory/logs/installActions2015-11-30_11-40-10AM.log
ACTION: Identify the list of failed prerequisite checks from the log: /db/oracle/oraInventory/logs/installActions2015-11-30_11-40-10AM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
You can find the log of this install session at:
/db/oracle/oraInventory/logs/installActions2015-11-30_11-40-10AM.log
The installation of Oracle Database 11g was successful.
Please check '/db/oracle/oraInventory/logs/silentInstall2015-11-30_11-40-10AM.log' for more details.
As a root user, execute the following script(s):
1. /db/oracle/oraInventory/orainstRoot.sh
2. /db/oracle/product/11.2.0/dbhome_1/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue
Successfully Setup Software.
新開一個終端:
// root 用戶執行腳本
$ /db/oracle/oraInventory/orainstRoot.sh
$ /db/oracle/product/11.2.0/dbhome_1/root.sh
1)啟動監聽
// 切換 oracle 用戶
su - oracle
// 啟動監聽
$ lsnrctl start
// 查看監聽狀態
$ lsnrctl status
2)登錄數據庫
$ sqlplus / as sysdba
// 查看數據庫狀態
$ select status from v$instance;
3)配置加密傳輸
Oracle 服務器和客戶端之間的數據傳輸默認是使用明文方式傳輸,對于敏感信息是很不安全的。
啟動傳輸加密和校驗的方法是通過修改服務器端和客戶端的 sqlnet.ora
文件實現。
修改sqlnet.ora
配置:(路徑:$ORACLE_HOME/network/admin
)
# 加密級別
SQLNET.ENCRYPTION_SERVER = REQUIRED
# 加密算法
SQLNET.ENCRYPTION_TYPES_SERVER = RC4_256
# 數據完整性校驗
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
# 校驗算法
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = MD5
理論上需要在數據庫 server 端和 oracle 客戶端都修改 sqlnet.ora 文件,但因為 client 端默認傳輸加密級別是 ACCEPTED,默認一致性校驗級別是 ACCEPTED,所以只需要在服務器端設置就可以打開傳輸加密和一致性校驗功能,而不需要再對 client 端的 sqlnet.ora 進行設置
設置參數后對新建立的 session 起作用。
4)安裝安全補丁
參考:http://www.lxweimin.com/p/a7978d6a3a18
5)配置審計
參考:http://www.lxweimin.com/p/fd34c9fcfa21