一、安装准备
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
配置说明:
:
username 或 @groupname:设置需要被限制的用户名,组名前面加 @ 与 用户名 区别。 * 表示所有用户(注意有的系统不支持)
soft 指的是当前系统生效的设置值
hard 表明系统中所能设定的最大值(soft 的限制不能比 hard 限制高 )
- 就表明同时设置了 soft 和 hard 的值
as - 地址空间限制
rss - 最大持久设置大小
cpu - 以分钟为单位的最多 CPU 时间
core - 限制内核文件的大小
date - 最大数据大小
stack - 最大栈大小
fsize - 最大文件大小
noproc - 进程的最大数目
nofile - 打开文件的最大数目
memlock - 最大锁定内存地址空间
maxlogins - 此用户允许登录的最大数目
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
),待补充!简单解释:
/dev/shm
分区的大小默认是系统物理内存的 50%(CentOS),具体大小可以通过df -h
命令查看。文件系统 容量 已用 可用 已用% 挂载点 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
参考:https://www.cnblogs.com/tinywan/p/10550356.html
安装完成,提示 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
理论上需要在数据库 server 端和 oracle 客户端都修改 sqlnet.ora 文件,但因为 client 端默认传输加密级别是 ACCEPTED,默认一致性校验级别是 ACCEPTED,所以只需要在服务器端设置就可以打开传输加密和一致性校验功能,而不需要再对 client 端的 sqlnet.ora 进行设置
设置参数后对新建立的 session 起作用。
4)安装安全补丁
参考:https://www.jianshu.com/p/a7978d6a3a18
5)配置审计
参考:https://www.jianshu.com/p/fd34c9fcfa21