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

  • 阿里云镜像

https://mirrors.aliyun.com/oracle/

  • 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)
  • 关于版本选择与支持问题可以参考下方链接

https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/additional-drivers-and-software-packages-for-linux.html

1. Oracle 数据库

1.1 简介

Oracle Database,又名 Oracle RDBMS,或简称 Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说 Oracle 数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库解决方案。

1.2 Oracle 与 MySQL 的SQL 区别

类型OracleMySQL
整型number(N)/integerint/integer
浮点型floatfloat/double
字符串类型varchar2(N)varchar(N)
NULL‘’null 和’'不一样
分页rownumlimit
""限制很多,一般不让用与单引号一样
价格闭源,收费开源,免费
主键自动增长×
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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LpMYH0Xx-1675306617404)(./0.jpeg)]

如果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 26 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 26 2019 db_install.rsp
-rw-r--r-- 1 oracle sql 19932 110 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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tGAwoOsi-1675306617405)(1.png)]

[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的区别,useraddusermod的区别

# 强制使用 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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5sOWlXV6-1675306617406)(1.jpeg)]

  • 根据上述日志提示完成以下步骤
[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软件安装成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMOwFa4m-1675306617407)(./2.jpeg)]

3.5 设置Oracle 监听

默认监听端口1521

  • 创建监听
[oracle@node01 ~]$ cd /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/netca
[oracle@node01 netca]$ pwd
/home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/netca
[oracle@node01 netca]$
[oracle@node01 netca]$ netca /silent /responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp

正在对命令行参数进行语法分析:
    参数"silent" = true
    参数"responsefile" = /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
    正在运行监听程序控制:
      /home/oracle/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start LISTENER
   监听程序控制完成。
    监听程序已成功启动。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0

要在响应文件模式下运行 Oracle DBCA,请执行以下操作

Warnning:修改响应文件模板并保存文件以供使用时,响应文件可能包含纯文本密码。响应文件的所有权应仅授予 Oracle 软件安装所有者,并且响应文件的权限应更改为 600。Oracle 强烈建议数据库管理员或其他管理员在不使用响应文件时删除或保护它们。

  • 操作如下:

以静默方式创建和配置 Oracle 数据库 使用Oracle DBCA。

[oracle@node01 ~]$ cd /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/
[oracle@node01 dbca]$ ll
总用量 40
-rw-r----- 1 oracle sql 25502 4月   6 2019 dbca.rsp
drwxr-xr-x 2 oracle sql  4096 4月  17 2019 doc
drwxr-xr-x 2 oracle sql  4096 4月  17 2019 jlib
drwxr-xr-x 2 oracle sql  4096 4月  17 2019 template
[oracle@node01 dbca]$ cp dbca.rsp dbca.rsp.bak
[oracle@node01 dbca]$ vim dbca.rsp

Note:如果未正确配置响应文件,那么 Oracle DBCA 将失败。

  • 添加的内容如下:
gdbName=node01gdb
sid=node01gdb
databaseConfigType=SI

templateName=General_Purpose.dbc
sysPassword=123456
systemPassword=123456
emConfiguration=DBEXPRESS
dbsnmpPassword=123456
datafileDestination=/home/oracle/app/oracle/oradata
characterSet=AL32UTF8
totalMemory=1024

totalMemory参数在老版本中默认是800MB

totalMemory:调大内存,一般设置为1.5-2倍的物理内存大小即可

  • 可以通过以下命令检查配置是否正确
[oracle@node01 ~]$ egrep -v "(^#|^$)" /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=node01gdb
sid=node01gdb
databaseConfigType=SI
RACOneNodeServiceName=
policyManaged=
createServerPool=
serverPoolName=
cardinality=
force=
pqPoolName=
pqCardinality=
createAsContainerDatabase=
numberOfPDBs=
pdbName=
useLocalUndoForPDBs=
pdbAdminPassword=
nodelist=
templateName=General_Purpose.dbc
sysPassword=123456
systemPassword=123456
oracleHomeUserPassword=
emConfiguration=DBEXPRESS
emExpressPort=5500
runCVUChecks=
dbsnmpPassword=123456
omsHost=
omsPort=
emUser=
emPassword=
dvConfiguration=
dvUserName=
dvUserPassword=
dvAccountManagerName=
dvAccountManagerPassword=
olsConfiguration=
datafileJarLocation=
datafileDestination=/home/oracle/app/oracle/oradata
recoveryAreaDestination=
storageType=
diskGroupName=
asmsnmpPassword=
recoveryGroupName=
characterSet=AL32UTF8
nationalCharacterSet=
registerWithDirService=
dirServiceUserName=
dirServicePassword=
walletPassword=
listeners=
variablesFile=
variables=
initParams=
sampleSchema=
memoryPercentage=
databaseType=
automaticMemoryManagement=
totalMemory=1024

创建存储Oracle数据的存储路径/home/oracle/app/oracle/oradata

[oracle@node01 oracle]$ cd /home/oracle/app/oracle
[oracle@node01 oracle]$ pwd
/home/oracle/app/oracle
[oracle@node01 oracle]$ mkdir oradata
[oracle@node01 oracle]$ ll
总用量 20
drwxr-x---  3 oracle sql 4096 111 21:29 cfgtoollogs
drwxr-xr-x  2 oracle sql 4096 111 21:06 checkpoints
drwxrwxr-x 23 oracle sql 4096 111 21:06 diag
drwxr-xr-x  2 oracle sql 4096 111 21:44 oradata
drwxr-xr-x  3 oracle sql 4096 110 18:39 product

3.6 静默创建数据库

DBCA 静默模式命令语法说明

选择描述
-silent指定以静默模式运行 DBCA。-silent在静默模式下,DBCA 使用您指定为命令行选项的值来创建或修改数据库。
command options指定 DBCA 命令和该命令的有效选项。
`-h-help`
  • 使用以下命令语法以静默方式或响应文件方式运行 Oracle DBCA
$ORACLE_HOME/bin/dbca [-silent] -createDatabase -responseFile /local_dir/dbca.rsp 

使用响应文件:

[oracle@node01 dbca]$ dbca -silent -createDatabase -responseFile /home/oracle/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
[WARNING] [DBT-06208] 输入的 'SYS(S)' 口令未遵从 Oracle 建议的标准。
   原因:
a. Oracle 建议, 输入的口令长度不应少于 8 个字符, 至少包含 1 个大写字符, 1 个小写字符和 1 个数字 [0-9]。
b. 输入的口令是一个关键字, Oracle 建议不要将其用作口令
   操作: 指定强口令。如果需要, 请参阅 Oracle 文档以了解相关指南。
[WARNING] [DBT-06208] 输入的 'SYSTEM' 口令未遵从 Oracle 建议的标准。
   原因:
a. Oracle 建议, 输入的口令长度不应少于 8 个字符, 至少包含 1 个大写字符, 1 个小写字符和 1 个数字 [0-9]。
b. 输入的口令是一个关键字, Oracle 建议不要将其用作口令
   操作: 指定强口令。如果需要, 请参阅 Oracle 文档以了解相关指南。
准备执行数据库操作
已完成 10%
复制数据库文件
已完成 40%
正在创建并启动 Oracle 实例
已完成 42%
已完成 46%
已完成 50%
已完成 54%
已完成 60%
正在进行数据库创建
已完成 66%
已完成 70%
执行配置后操作
已完成 100%
数据库创建完成。有关详细信息, 请查看以下位置的日志文件:
 /home/oracle/app/oracle/cfgtoollogs/dbca/node01gdb。
数据库信息:
全局数据库名:node01gdb
系统标识符 (SID):node01gdb
有关详细信息, 请参阅日志文件 "/home/oracle/app/oracle/cfgtoollogs/dbca/node01gdb/node01gdb.log"

Note:该步骤考验网络情况,大概10min左右考研完成!

3.7 验证

  • 登录数据库,进入到SQL交互界面即成功!!!

Note:以sqlplus / as sysdba方式登录时,采用的是操作系统验证的方式,所以用户名/密码输入与不输入本质上是没有差别的。

[oracle@node01 dbca]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 11 22:48:20 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> show parameter name;
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0


SQL> 
  • 查询数据库状态
SQL> select status from v$instance;
select status from v$instance
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0


SQL> 

出现Error:ORA-01034: ORACLE not available

  • 执行startup命令,根据提示修复上述Error
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/19.3.0/dbhome_1/dbs/initORCL.ora'

根据startup命令的结果提示,我们需要将$ORACLE_BASE/admin/你设置的数据库名称/pfile目录下的init.ora.xxx形式的文件复制到ORACLE_HOME/dbs目录下initORCL.ora(请注意命名)即可

Note:上述「你设置的数据库名称」指的是在bdbca.rsp文件中参数gdbName的值(此处本人的数据库名称为node01gd)

[oracle@node01 pfile]$ cp init.ora.0112023223752 $ORACLE_HOME/dbs/initORCL.ora
[oracle@node01 pfile]$ ll $ORACLE_HOME/dbs
总用量 28
-rw-rw---- 1 oracle sql 1544 111 22:40 hc_node01gdb.dat
-rw-r--r-- 1 oracle sql 3079 514 2015 init.ora
-rw-r----- 1 oracle sql 2052 112 19:48 initORCL.ora
-rw-r----- 1 oracle sql   24 111 22:30 lkHADOOP10
-rw-r----- 1 oracle sql   24 111 22:29 lknode01GDB
-rw-r----- 1 oracle sql 2048 111 22:31 orapwnode01gdb
-rw-r----- 1 oracle sql 3584 111 22:42 spfilenode01gdb.ora
  • 再次执行startup命令,出现同样的错误

查看$ORACLE_BASE/dbs/init.ora文件中db_name的参数值和环境变量(.bash_profile)中ORACLE_SID的参数值是否一致「注意大小写」

  • 本人确实是大小写不一致的问题,修改.bash_profile中ORACLE_SID为db_name的参数值即可,并重新source一下环境变量
[oracle@node01 pfile]$ cat /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 pfile]$ cat $ORACLE_HOME/dbs/init.ora
....
db_name='ORCL'
memory_target=1G
....
[oracle@node01 pfile]$ vim ~/.bash_profile
[oracle@node01 pfile]$ source /home/oracle/.bash_profile
  • 依旧执行startup命令,成功打开数据库
[oracle@node01 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 12 20:11:07 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1073737800 bytes
Fixed Size                  8904776 bytes
Variable Size             704643072 bytes
Database Buffers          352321536 bytes
Redo Buffers                7868416 bytes
Database mounted.
Database opened.
SQL>
  • 再次查询数据库状态,可以看到状态为open
SQL> select status from v$instance;

STATUS
------------------------
OPEN

SQL>

简单的示例:查询当前数据库show parameter name,执行结果的最后一行就是当前数据库名

SQL> show parameter name;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
cdb_cluster_name                     string

cell_offloadgroup_name               string

db_file_name_convert                 string

db_name                              string
hadoop10
db_unique_name                       string

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
node01gdb
global_names                         boolean
FALSE
instance_name                        string
ORCL
lock_name_space                      string

log_file_name_convert                string


NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
pdb_file_name_convert                string

processor_group_name                 string

service_names                        string
node01gdb

4. 进入虚拟机图像化页面安装Oracle软件

5. 创建数据库实例

5.1 查看监听状态

  • 命令行输入lsn,连续按下两次「Tab」键即可查看到lsnsrctl命令
[oracle@node01 dbhome_1]$ lsn
lsnodes  lsnrctl  lsns
  • 查看状态
[oracle@node01 dbhome_1]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 12-JAN-2023 19:23:22

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node01)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
[oracle@node01 dbhome_1]$ lsnrctl start

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 12-JAN-2023 19:23:34
	
Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Starting /home/oracle/app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /home/oracle/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Log messages written to /home/oracle/app/oracle/diag/tnslsnr/node01/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node01)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node01)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                12-JAN-2023 19:23:36
Uptime                    0 days 0 hr. 0 min. 2 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/node01/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node01)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

5.2. 创建一个普通用户并授权

  • 创建用户
[oracle@node01 dbs]$ sqlplus

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 12 21:20:56 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Enter user-name: system
Enter password:
Last Successful login time: Thu Jan 12 2023 21:18:48 +08:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> create user whybigdata identified by 123456;

User created.

SQL> 
  • 授权
SQL> grant create session,create table,create view,create sequence,unlimited tablespace to whybigdata;

Grant succeeded.

5.3 创建表

Note:student表的创建实在system用户下创建的

  • 创建表student
SQL> create TABLE student(id INTEGER,name VARCHAR2(20));

Table created.

SQL> insert into student values (1,'zhangsan');

1 row created.

SQL> select * from student;

        ID NAME
---------- ----------------------------------------
         1 zhangsan

SQL>
  • 在其他会话窗口(虚拟机终端工具)查询不到表student的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGXu4kcl-1675306617408)(2.png)]

原因:在当前会话(创建表的会话)中需要提交(commit)才可以在终端(其他会话)查询到表插入的数据

SQL> commit;

Commit complete.
  • 虚拟机终端再次查询表数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oi18BRXA-1675306617410)(3.png)]

  • 切换到上述创建的普通用户whybigdata中,查询不到表student的数据
[oracle@node01 dbs]$ sqlplus

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jan 12 21:28:38 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Enter user-name: whybigdata
Enter password:

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select * from student;
select * from student
              *
ERROR at line 1:
ORA-00942: table or view does not exist


原因:Oracle是按照用户来隔离的,每个用户所属的表空间是不一样的

注意:安装完成后重启机器可能出现 ORACLE not available 错误,解决方法如下:

[oracle@node01 ~]$ sqlplus / as sysdba 
SQL>startup
SQL>conn whybigdata Enter password:

6. 参考

  • https://www.cnblogs.com/charelee/p/13866895.html
  • Creating Operating System Privileges Groups (oracle.com)
  • https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/installing-the-oracle-database-software.html
  • https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/completing-preinstallation-tasks-manually.html
  • https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/configuring-operating-systems-for-oracle-database-on-linux.html
  • https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/Chunk72467155.html
  • https://community.oracle.com/mosc/discussion/3997981/ins-35341-while-installing-11g-and-12c
  • Running Oracle DBCA Using Response Files
  • https://docs.oracle.com/en/database/oracle/oracle-database/21/multi/dbca-reference.html
  • https://docs.oracle.com/en/database/oracle/oracle-database/18/rilin/editing-a-response-file-template.html
  • http://www.dba-oracle.com/sf_ora_01034_oracle_not_available.htm
  • https://www.techiepage.net/how-to-fix-ora-01034-oracle-not-available-error/
  • https://asktom.oracle.com/pls/apex/asktom.search?tag=ora-01034-oracle-not-available
  • https://blog.sina.com.cn/s/blog_4b5bc0110101d310.html
  • https://community.oracle.com/tech/developers/discussion/4488389/ora-01078-failure-in-processing-system-parameters-lrm-00109-could-not-open-parameter-file
  • https://ittutorial.org/ora-01078-failure-in-processing-system-parameters/
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux安装Oracle数据库,你需要按照以下步骤进行操作: 1. 首先,确保你的Linux系统满足Oracle数据库的最低系统要求。你可以在Oracle官方网站上找到这些要求。 2. 下载适用于LinuxOracle数据库软件包。根据你的需求选择正确的软件版本,并确保下载的软件与你的Linux系统架构相匹配。 3. 在你的Linux系统上创建一个新的目录,用于安装Oracle数据库软件。例如,你可以创建一个名为“oracle”或“oracle_home”的目录。 4. 解压下载的Oracle数据库软件包。这将创建一个包含安装所需文件的目录。 5. 通过运行安装脚本来启动Oracle数据库软件的安装过程。你需要使用root用户或具有管理员权限的用户来执行此操作。 6. 按照安装向导的指示进行操作。这将包括接受许可协议、指定安装目录、选择所需的组件以及配置数据库实例等步骤。 7. 在安装过程中,你需要提供一些必要的信息,如数据库名称、监听器配置和数据库管理员(DBA)密码等。 8. 完成安装后,你可以使用Oracle提供的工具来管理和配置数据库实例。这些工具包括SQL*Plus、SQL Developer和Enterprise Manager等。 请注意,这只是一个概述,具体安装过程可能因Oracle数据库版本和Linux发行版而有所不同。在进行安装之前,请务必阅读相关文档和安装指南,以确保正确地执行每个步骤。 希望这些信息能对你有所帮助!如有任何进一步的疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值