Linux安装Oracle数据库(待续)
Linux安装Oracle数据库(待续)
0. 写在前面
- Linux版本:CentOS7.5
- Oracle版本:Oracle19c
oracle19c其实就是属于12g版本的
- 至少预留10G的存储空间
[root@node01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda3 47G 31G 14G 70% /
/dev/sda1 976M 142M 768M 16% /boot
tmpfs 378M 0 378M 0% /run/user/1000
- Oracle 软件的最小本地磁盘存储空间
- 对于 Linux x86-64: 对于独立服务器安装的 Oracle 网格基础设施,至少为 6.5 GB。 Oracle Database Enterprise Edition 至少为 7.2 GB。 Oracle 数据库标准版 2 至少为 7.2 GB。
- 对于 IBM:System z 上的 Linux: 对于独立服务器安装的 Oracle 网格基础架构,至少为 5.5 GB。 Oracle Database Enterprise Edition 至少为 5.9 GB。 Oracle 数据库标准版 2 至少为 5.9 GB。
- 注意:Oracle 建议您分配大约 100 GB,以便在现有 Oracle 主目录之上留出额外的空间来应用任何未来的修补程序。有关与修补程序相关的特定磁盘空间要求,请参阅修补程序文档。
经过个人最终的实验,建议虚拟机所在的磁盘剩余空间要大于等于30G,再不济,至少20G,低于20G就得考虑扩容。
- 官网下载地址
https://www.oracle.com/cn/database/technologies/oracle-database-software-downloads.html
- 阿里云镜像
- SELinux和防火墙
关闭SELinux(SELINUX=disabled)和防火墙「Active: inactive (dead)」
[whybigdata@node01 ~]$ 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=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[whybigdata@node01 ~]$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
- 关于版本选择与支持问题可以参考下方链接
1. Oracle 数据库
1.1 简介
Oracle Database,又名 Oracle RDBMS,或简称 Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说 Oracle 数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库解决方案。
1.2 Oracle 与 MySQL 的SQL 区别
类型 | Oracle | MySQL |
---|---|---|
整型 | number(N)/integer | int/integer |
浮点型 | float | float/double |
字符串类型 | varchar2(N) | varchar(N) |
NULL | ‘’ | null 和’'不一样 |
分页 | rownum | limit |
"" | 限制很多,一般不让用 | 与单引号一样 |
价格 | 闭源,收费 | 开源,免费 |
主键自动增长 | × | √ |
if not exists | × | √ |
auto_increment | × | √ |
create database | × | √ |
select * from table as t | × | √ |
2. 前置准备
2.1 安装依赖包
- yum源安装
yum install -y bc binutils compat-libcap1 compat-libstdc++33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat kmod* gcc-c++ compat-libstdc++-33
- 检查安装结果:
rpm -qa bc binutils compat-libcap1 compat-libstdc++33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat kmod* gcc-c++ compat-libstdc++-33
如果
compat-libstdc++-33
在本地镜像没有,那么需要在线安装或先下载rpm包之后在单独安装
rpm –ivh compat-libstdc++-33-3.2.3-72.el7.x86_64
2.2 配置用户组
Oracle 安装文件不允许通过 root 用户启动,需要为oracle 配置一个专门的用户。此处创建一个名为oracle的用户
- 创建 sql 用户组
[root@node01 software]#groupadd sql
- 创建 oracle 用户并放入 sql 组中
[root@node01 software]#useradd oracle -g sql
- 修改 oracle 用户登录密码,输入密码后即可使用oracle 用户登录系统(密码设置为123456)
[root@node01 software]#passwd oracle
2.3 上传安装包并解压
注意:Oracle19c 需要把软件包直接解压到ORACLE_HOME 的目录下
- 进入存放Oracle的zip包的目录,解压到指定目录(安装目录)
Note:安装目录需要提前创建,因为解压zip包后的文件是分散的
[root@node01 software]# mkdir -p /home/oracle/app/oracle/product/19.3.0/dbhome_1
[root@node01 software]# unzip LINUX.X64_193000_db_home.zip -d
/home/oracle/app/oracle/product/19.3.0/dbhome_1
- 修改所属用户和组(不要在oracle用户下修改,不成功)
[root@node01 dbhome_1]# chown -R oracle:sql /home/oracle/app/
2.4 修改配置文件 sysctl.conf
[root@node01 module]# vim /etc/sysctl.conf
删除或者注释
里面的内容,并添加如下内容:
net.ipv4.ip_local_port_range = 9000 65500
fs.file-max = 6815744
kernel.shmall = 10523004
kernel.shmmax = 6465333657
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_max=1048576
fs.aio-max-nr = 1048576
参数解析:
- net.ipv4.ip_local_port_range :可使用的 IPv4 端口范围
- fs.file-max :该参数表示文件句柄的最大数量。文件句柄设置表示在 linux 系统中可以打开的文件数量。
- kernel.shmall :该参数表示系统一次可以使用的共享内存总量(以页为单位)
- kernel.shmmax :该参数定义了共享内存段的最大尺寸(以字节为单位)
- kernel.shmmni :这个内核参数用于设置系统范围内共享内存段的最大数量
- kernel.sem : 该参数表示设置的信号量。
- net.core.rmem_default:默认的TCP 数据接收窗口大小(字节)。
- net.core.wmem_default:默认的TCP 数据发送窗口大小(字节)。
- net.core.rmem_max:最大的 TCP 数据接收窗口(字节)。
- net.core.wmem_max:最大的 TCP 数据发送窗口(字节)。
- fs.aio-max-nr :同时可以拥有的的异步 IO 请求数目。
2.5 修改配置文件 limits.conf
[root@node01 module]# vim /etc/security/limits.conf
在文件末尾添加:(使用oracle用户)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
2.6 设置环境变量
oracle用户下新建
.bash_profile
文件
[oracle@node01 dbhome_1]# vim /home/oracle/.bash_profile
添加如下内容:
#ORACLE_HOME
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=/home/oracle/app/oracle/product/19.3.0/dbhome_1 export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
使环境变量生效
[oracle@node01 ~]$ source /home/oracle/.bash_profile
3. Linux最小化环境安装Oracle(静默安装)
3.1 备份db_install.rsp
进入oracle安装目录下的
install/response
目录,提前备份一份db_install.rsp
[oracle@node01 response]$ cd $ORACLE_HOME/install/response
[oracle@node01 response]$ ll
总用量 20
-rw-r--r-- 1 oracle sql 19932 2月 6 2019 db_install.rsp
[oracle@node01 response]$ cp db_install.rsp db_install.rsp.bak
[oracle@node01 response]$ ll
总用量 40
-rw-r--r-- 1 oracle sql 19932 2月 6 2019 db_install.rsp
-rw-r--r-- 1 oracle sql 19932 1月 10 19:10 db_install.rsp.bak
3.2 修改db_install.rsp
修改
db_install.rsp
文件
[oracle@node01 response]$ vim db_install.rsp
UNIX_GROUP_NAME=sql INVENTORY_LOCATION=/home/oracle/app/oraInventory ORACLE_HOME=/home/oracle/app/oracle/product/19.3.0/dbhome_1 ORACLE_BASE=/home/oracle/app/oracle/ oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=oper oracle.install.db.OSBACKUPDBA_GROUP=backupdba oracle.install.db.OSDGDBA_GROUP=dgdba oracle.install.db.OSKMDBA_GROUP=kmdba oracle.install.db.OSRACDBA_GROUP=racdba oracle.install.db.rootconfig.executeRootScript=false
参数介绍说明
- oracle.install.db.OSDBA_GROUP=dba
为数据库安装创建 OSDBA 组
每个 Oracle 数据库都需要将操作系统组指定为 OSDBA 组。此组的成员被授予管理数据库的 SYSDBA 系统特权。
在以下情况下,您必须创建 OSDBA 组:
- OSDBA 组不存在,例如,如果这是系统上首次安装 Oracle 数据库软件
- 存在 OSDBA 组,但您希望为新的 Oracle 数据库安装授予另一组操作系统用户的数据库管理权限
使用组名创建 OSDBA 组,除非已存在具有该名称的组:
dba
- oracle.install.db.OSOPER_GROUP=oper
为数据库安装创建 OSOPER 组
仅当要标识具有一组有限数据库管理权限(SYSOPER 操作员权限)的操作系统用户组时,才创建 OSOPER 组。
对于大多数安装,仅创建 OSDBA 组就足够了。但是,要使用 OSOPER 组,请在以下情况下创建它:
- 如果 OSOPER 组不存在;例如,如果这是首次在系统上安装 Oracle 数据库软件
- 如果存在 OSOPER 组,但您希望在新的 Oracle 安装中为不同的操作系统用户组授予数据库操作员权限
如果 OSOPER 组不存在,或者需要新的 OSOPER 组,请创建它。使用组名称,除非已存在具有该名称的组。例如:
oper
- oracle.install.db.OSBACKUPDBA_GROUP=backupdba
为数据库安装创建 OSBACKUPDBA 组
在安装过程中,必须将一个组指定为 OSBACKUPDBA 组。此组的成员被授予使用 RMAN 或 SQL*Plus 执行备份和恢复操作的 SYSBACKUP 权限。
使用组名创建 OSBACKUPDBA 组,除非已存在具有该名称的组:
backupdba
- oracle.install.db.OSDGDBA_GROUP=dgdba
创建用于数据库安装的 OSDGDBA 组
您必须在以下期间将组指定为 OSDGDBA 组 安装。此组的成员被授予 SYSDG 权限 以执行数据卫士操作。
使用组名称创建 OSDGDBA 组,除非已存在具有该名称的组:
dgdba,
- oracle.install.db.OSKMDBA_GROUP=kmdba
为数据库安装创建 OSKMDBA 组
在安装过程中,必须将一个组指定为 OSKMDBA 组。此组的成员被授予执行透明数据加密密钥库操作的 SYSKM 特权。
如果需要用于透明数据加密的单独组,请使用组名称创建 OSKMDBA 组,除非已存在具有该名称的组:
kmdba
- oracle.install.db.OSRACDBA_GROUP=racdba
为数据库安装创建 OSRACDBA 组
在数据库安装过程中,必须将一个组指定为 OSRACDBA 组。此组的成员被授予 SYSRAC 权限,以在 Oracle RAC 集群上执行 Oracle 数据库的日常管理。
使用组名称创建 OSRACDBA 组,除非已存在具有该名称的组:
racdba
3.3 执行安装
进入oracle安装目录
[oracle@node01 dbhome_1]$ ./runInstaller -silent -responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/install/response/db_install.rsp
正在启动 Oracle 数据库安装向导...
[FATAL] [INS-32031] 产品清单位置无效。
操作: 指定有效的产品清单位置。
[FATAL] [INS-32033] 主产品清单位置不可写。
操作: 请确保产品清单位置可以写入。
已将安装会话日志移动到:
/home/oracle/app/oraInventory/logs/InstallActions2023-01-10_09-31-27PM
出现Error,查看日志:
/tmp
下
[oracle@node01 ~]$ cd /tmp/InstallActions2023-01-10_09-31-27PM
[oracle@node01 InstallActions2023-01-10_09-31-27PM]$ ll
总用量 612
drwxr-xr-x 3 oracle sql 4096 1月 10 21:31 CVU_19.0.0.0.0_oracle
-rw-r--r-- 1 oracle sql 0 1月 10 21:31 installActions2023-01-10_09-31-27PM.err
-rw-r--r-- 1 oracle sql 49671 1月 10 21:31 installActions2023-01-10_09-31-27PM.log
-rw-r--r-- 1 oracle sql 558102 1月 10 21:31 installActions2023-01-10_09-31-27PM.out
-rw-r--r-- 1 oracle sql 138 1月 10 21:31 installerPatchActions_2023-01-10_09-31-27PM.log
-rw-r--r-- 1 oracle sql 4072 1月 10 21:31 time2023-01-10_09-31-27PM.log
[oracle@node01 InstallActions2023-01-10_09-31-27PM]$ tail -20 installActions2023-01-10_09-31-27PM.log
[root@node01 app]# mkdir oraInventory
[root@node01 app]# chown -R oracle:sql ./oraInventory/
Error2:[FATAL] [INS-35341] 安装用户不是以下组的成员: [dba, backupdba, dgdba, kmdba, racdba]
[oracle@node01 dbhome_1]$ ./runInstaller -silent -responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/install/response/db_install.rsp
正在启动 Oracle 数据库安装向导...
[FATAL] [INS-35341] 安装用户不是以下组的成员: [dba, backupdba, dgdba, kmdba, racdba]
原因: 安装用户帐户必须是安装所需的所有组的成员。
操作: 确保安装用户是所选系统权限操作系统组的成员。
已将安装会话日志移动到:
/home/oracle/app/oraInventory/logs/InstallActions2023-01-10_09-57-38PM
[root@node01 ~]# id oracle
uid=1001(oracle) gid=1001(sql) 组=1001(sql)
查看所有用户组:cat /etc/group
[root@node01 ~]# cat /etc/group | grep sql
mysql:x:27:
sql:x:1001:
[root@node01 ~]# cat /etc/group | grep dba
[root@node01 ~]# cat /etc/group | grep backupdba
[root@node01 ~]# cat /etc/group | grep dgdba
[root@node01 ~]# cat /etc/group | grep kmdba
[root@node01 ~]# cat /etc/group | grep racdba
[root@node01 ~]#
- 解释说明:
关于uid:0 表示管理员(root),1 - 500 表示系统用户,501 - 65535 表示普通用户
mail : x : 12 : postfix
⬇ ⬇ ⬇ ⬇
Group(用户组) 用户组口令 GID 该用户组包含的用户(user)
- 新增组:dba、oper、backupdba、dgdba、kmdba、racdba
- 增加dba、oper用户到sql组
# 查看用户
[root@node01 ~]# groups oracle
oracle : sql
[root@node01 ~]# useradd dba -g sql
[root@node01 ~]# useradd oper -g sql
[root@node01 ~]# groupadd dba
[root@node01 ~]# groupadd oper
[root@node01 ~]# groupadd backupdba
[root@node01 ~]# groupadd dgdba
[root@node01 ~]# groupadd kmdba
[root@node01 ~]# groupadd racdba
[root@node01 ~]# cat /etc/group | grep dba
dba:x:1002:
backupdba:x:1004:
dgdba:x:1005:
kmdba:x:1006:
racdba:x:1007:
[root@node01 ~]# id oracle
uid=1001(oracle) gid=1001(sql) 组=1001(sql)
[root@node01 ~]# id dba
uid=1002(dba) gid=1001(sql) 组=1001(sql)
[root@node01 ~]# id oper
uid=1003(oper) gid=1001(sql) 组=1001(sql)
# 查看用户
[root@node01 ~]# groups dba
dba : sql
[root@node01 ~]# groups oper
oper : sql
# 将oracle用户添加到创建的用户组dba、oper、backupdba、dgdba、kmdba、racdba中
[root@node01 etc]# id oracle
uid=1001(oracle) gid=1001(sql) 组=1001(sql)
[root@node01 etc]#
[root@node01 etc]# usermod -G dba,oper,backupdba,dgdba,kmdba,racdba oracle
[root@node01 etc]# id oracle
uid=1001(oracle) gid=1001(sql) 组=1001(sql),1002(dba),1003(oper),1004(backupdba),1005(dgdba),1006(kmdba),1007(racdba)
Note:usermod的option
-G
和-g
的区别,useradd
和usermod
的区别
# 强制使用 group_name 为新主组(-g)
usermod -g group_name user_name
# useradd是新建一个用户【oracle】并将其添加到sql用户组中,如下所示:
[root@node01 ~]# useradd oracle -g sql
# 当然,这个方法也应该是可以实现【将oracle用户添加到创建的用户组dba、oper、backupdba、dgdba、kmdba、racdba中】
[root@node01 ~]# useradd oracle -g sql -G dba backupdba dgdba kmdba racdba
Error3:[FATAL] [INS-35341] 安装用户不是以下组的成员: [dba, backupdba, dgdba, kmdba, racdba]
[oracle@node01 dbhome_1]$ ./runInstaller -silent -responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/install/response/db_install.rsp
正在启动 Oracle 数据库安装向导...
[WARNING] [INS-32047] 为主产品清单指定的位置 (/home/oracle/app/oraInventory) 不为空。
操作: 建议为产品清单提供空位置。
[FATAL] [INS-35341] 安装用户不是以下组的成员: [dba, backupdba, dgdba, kmdba, racdba]
原因: 安装用户帐户必须是安装所需的所有组的成员。
操作: 确保安装用户是所选系统权限操作系统组的成员。
已将安装会话日志移动到:
/home/oracle/app/oraInventory/logs/InstallActions2023-01-11_06-04-43PM
还是与Error2一样,当前会话需要断开重连
[oracle@node01 ~]$ id
uid=1001(oracle) gid=1001(sql) 组=1001(sql)
[oracle@node01 dbhome_1]$ id oracle
uid=1001(oracle) gid=1001(sql) 组=1001(sql),1002(dba),1003(oper),1004(backupdba),1005(dgdba),1006(kmdba),1007(racdba)
# 断开当前会话重连node01
[oracle@node01 ~]$ id
uid=1001(oracle) gid=1001(sql) 组=1001(sql),1002(dba),1003(oper),1004(backupdba),1005(dgdba),1006(kmdba),1007(racdba)
Error4:
[oracle@node01 dbhome_1]$ ./runInstaller -silent -responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/install/response/db_install.rsp
正在启动 Oracle 数据库安装向导...
[WARNING] [INS-32047] 为主产品清单指定的位置 (/home/oracle/app/oraInventory) 不为空。
操作: 建议为产品清单提供空位置。
[WARNING] [INS-13014] 目标环境不满足一些可选要求。
原因: 不满足一些可选的先决条件。有关详细信息, 请查看日志。installActions2023-01-11_08-36-29PM.log
操作: 从日志 installActions2023-01-11_08-36-29PM.log 中确定失败的先决条件检查列表。然后, 从日志文件或安装手册中查找满足这些先决条件的适当配置, 并手动进行修复。
可以在以下位置找到此会话的响应文件:
/home/oracle/app/oracle/product/19.3.0/dbhome_1/install/response/db_2023-01-11_08-36-29PM.rsp
可以在以下位置找到本次安装会话的日志:
/tmp/InstallActions2023-01-11_08-36-29PM/installActions2023-01-11_08-36-29PM.log
^[
^C[FATAL] 调用 makefile '/home/oracle/app/oracle/product/19.3.0/dbhome_1/ldap/lib/ins_ldap.mk' 的目标 'clientonlyinstall' 时出错。有关详细信息, 请参阅 '/tmp/InstallActions2023-01-11_08-36-29PM/installActions2023-01-11_08-36-29PM.log'。
Error5:
[oracle@node01 dbhome_1]$ ./runInstaller -silent -responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/install/response/db_install.rsp
正在启动 Oracle 数据库安装向导...
[FATAL] [INS-32035] 为主产品清单指定的位置 (/home/oracle/app/oraInventory) 不为空。
原因: 指定的主产品清单位置由其他安装会话锁定, 或者指定的位置没有日志写入权限。
操作: 为产品清单指定空位置。
已将安装会话日志移动到:
/home/oracle/app/oraInventory/logs/InstallActions2023-01-11_08-43-04PM
[oracle@node01 dbhome_1]$ ./runInstaller -silent -responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/install/response/db_install.rsp
正在启动 Oracle 数据库安装向导...
[WARNING] [INS-13014] 目标环境不满足一些可选要求。
原因: 不满足一些可选的先决条件。有关详细信息, 请查看日志。installActions2023-01-11_09-05-44PM.log
操作: 从日志 installActions2023-01-11_09-05-44PM.log 中确定失败的先决条件检查列表。然后, 从日志文件或安装手册中查找满足这些先决条件的适当配置, 并手动进行修复。
可以在以下位置找到此会话的响应文件:
/home/oracle/app/oracle/product/19.3.0/dbhome_1/install/response/db_2023-01-11_09-05-44PM.rsp
可以在以下位置找到本次安装会话的日志:
/tmp/InstallActions2023-01-11_09-05-44PM/installActions2023-01-11_09-05-44PM.log
以 root 用户的身份执行以下脚本:
1. /home/oracle/app/oraInventory/orainstRoot.sh
2. /home/oracle/app/oracle/product/19.3.0/dbhome_1/root.sh
在以下节点上执行/home/oracle/app/oraInventory/orainstRoot.sh:
[node01]
在以下节点上执行/home/oracle/app/oracle/product/19.3.0/dbhome_1/root.sh:
[node01]
Successfully Setup Software with warning(s).
已将安装会话日志移动到:
/home/oracle/app/oraInventory/logs/InstallActions2023-01-11_09-05-44PM
- 根据上述日志提示完成以下步骤
[root@node01 ~]# /home/oracle/app/oraInventory/orainstRoot.sh
更改权限/home/oracle/app/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/home/oracle/app/oraInventory 到 sql.
脚本的执行已完成。
[root@node01 ~]# /home/oracle/app/oracle/product/19.3.0/dbhome_1/root.sh
Check /home/oracle/app/oracle/product/19.3.0/dbhome_1/install/root_node01_2023-01-11_21-11-18-051196576.log for the output of root script
3.4 验证是否安装正确
命令行输入net,连续按两下
Tab
键,观察是否有netca
,若有则代表Oracle软件安装成功
全文暂未结束!
- 点赞
- 收藏
- 关注作者
评论(0)