1. 先决条件:

1. 先决条件:

自 Oracle 18c 发布以来,这个问题一直没有得到解答。除了 Ubuntu Linux 平台,大多数其他 Linux 平台都支持 Oracle 18c 安装。我自己测试过CentOS 7,Oracle 18c 安装没有任何故障!

不幸的是甲骨文公司没有特别记录安装过程Ubuntu Linux platform,不过有一点好,那就是图像文件db_home.zip是通用的,可在所有 Linux 平台上安装。

那么如何在 Ubuntu 18.04 上安装 Oracle 18c(企业版)?

答案1

让我们开始第一部分答题环节。

1. 先决条件:

1.1. 所需存储空间

  • Oracle 下载文件大小为 4.3 GB。如果您的目录或 db_home.zip存储空间不够,可以使用至少 8GB 容量的 Pendrive 来保存下载的文件,直到解压完成。$HOME/tmpdb_home.zip
  • 由于我们要在目录中安装 Oracle /opt,因此它应该至少有 13 GB 的未使用空间,因为 Oracle 提取本身将占用大约 9.3 GB 的存储空间。使用以下命令验证/opt分区存储空间:

$ df -h /opt 在此处输入图片描述 Figure-1: Amount of free space available under "/opt" partition.

1.2. 您的计算机上安装了 JDK-11。

$ echo $JAVA_HOME 在此处输入图片描述 Figure-2: Installation of JDK-11 is already done.

1.3. 启用多架构支持 (32-bit support).

在启用32-bit support64 位 Ubuntu 18.04 之前,让我们验证您是否具有 64 位内核架构:

$ dpkg --print-architecture 在此处输入图片描述 Figure-3: This Computer system has 64-bit Kernel Architecture.

多架构支持允许您同时使用 32 位库和 64 位库。

$ dpkg --print-foreign-architectures 在此处输入图片描述 Figure-4: This Computer system also supports i386 Architecture (i.e. supports 32-bit Libraries too).

如果您得到如图 4 所示的输出,那么您应该中断此步骤并继续下一步 1.4。

输入以下命令启用多架构支持:

$ sudo dpkg --add-architecture i386
$ sudo apt-get update

它开始下载更新并运行。之后,您输入以下命令:

$ sudo apt-get dist-upgrade

现在通过输入以下内容来验证对 i386 的支持,您应该得到如图 4 所示的输出:

$ dpkg --print-foreign-architectures

1.4. 安装Oracle安装所需的依赖包。

发出以下命令来安装依赖包:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential libaio1 libaio-dev rpm rpm-common ndctl

1.5. 创建符号链接。

创建所需的软链接,以便安装程序可以在预期的位置找到所需的文件:

$ sudo mkdir -p /usr/lib64

$ sudo ln -s /usr/bin/rpm /bin/
$ sudo ln -s /usr/bin/awk /bin/
$ sudo ln -s /usr/bin/basename /bin/
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a /usr/lib64/
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib64/
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libndctl.so.6.10.1 /usr/lib64/libndctl.so
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0 /usr/lib64/libnuma.so

找出指向谁/bin/sh

$ ls -l /bin/sh 在此处输入图片描述 Figure-5: '/bin/sh' points towards 'dash' shell

如果/bin/sh指向dashshell(参见上图 5),那么就很好了!现在,您可以打破这一步并继续进行下一步 1.6。

在此处输入图片描述 Figure-6: /bin/sh points towards 'bash' shell

如果它是bash如图 6 所示的 shell,则创建以下符号链接:

$ sudo ln -s /usr/lib/x86_64-linux-gnu/crti.o /usr/lib64/
$ sudo ln -s /usr/lib/x86_64-linux-gnu/crtn.o /usr/lib64/
$ sudo ln -s /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib64/

1.6. 配置内核参数/etc/sysctl.conf

要配置内核参数,请按照以下步骤操作:

$ sudo cp /etc/sysctl.conf /etc/sysctl.conf.back

$ sudo vi /etc/sysctl.conf

将以下内容复制并粘贴到文件中。

#  ------------------------------------------------
# kernel parameter configuration for 18c installation
# 1. Configure kernel shared memory segment
# Calculate shmmax and shmall based on your Computer system RAM (physical memory).
# shmmax = (half the size of RAM in bytes) = (16 GB / 2) * 1024*1024*1024 = 8589934592 bytes
#  (or)         = (one quarter of RAM in bytes) = 4294967296 bytes
# shmall = shmmax/pagesize = 8589934592 / 4096 = 2097152 pages
# 2. Configure kernel semaphore parameters which are semmsl, semmns, semopm and semmni respectively.
# kernel.sem = semmsl  semmns  semopm  semmni = 250 32000 100 128
#
# to display all kernel parameters, issue this command: sysctl -a
# to display current kernel parameters, issue this command: sysctl -p
# -------------------------------------------------------
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 8589934592
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

保存并退出 vi 编辑器。

运行以下命令显示当前内核参数。

$ sudo sysctl -p 在此处输入图片描述 Figure-7: The list of Kernel Parameters configured in "/etc/sysctl.conf" file.

1.7. 配置用户的 shell 限制oracle

历史上,进程的资源限制在 中定义/etc/security/limits.conf。对于使用 PAM 登录的用户(通过文件 ),登录时会读取此文件pam_limits.so。但是,通过 启动的系统服务不使用 PAM 进行登录,因此会忽略systemd中的限制。/etc/security/limits.conf

进行 GUI 登录并打开终端Ctrl+Alt+T并发出以下命令:

$ ulimit -n -s -u -l 在此处输入图片描述 Figure-8: Limits for a GUI login with empty '/etc/systemsd/user.conf' file.

通过命令进行非 GUI 登录su <username>,然后发出ulimit命令:

$ su krishna
$ ulimit -n -s -u -l

在此处输入图片描述 Figure-9: Limits for a non-GUI login with empty '/etc/security/limits.conf' file.

1.7.1. 使用文件配置 GUI 登录的限制参数/etc/systemd/user.conf

要配置限制参数system.conf,请按照以下步骤操作:

$ sudo cp /etc/systemd/system.conf /etc/systemd/system.conf.back
$ sudo vi /etc/systemd/system.conf

将以下行复制并粘贴到文件中。

DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535

保存并退出vi编辑器。

要配置限制参数user.conf,请按照以下步骤操作:

$ sudo cp /etc/systemd/user.conf /etc/systemd/user.conf.back
$ sudo vi /etc/systemd/user.conf

将以下行复制并粘贴到文件中。

DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000

保存并退出vi编辑器。

重启计算机来实现更改。

观察:当我试图改变默认限制堆栈参数在“/etc/systemd/system.conf”和“/etc/systemd/user.conf”中都设置为各种值,系统在重启时要么冻结要么崩溃。虽然我大多数时候都能成功恢复系统,但有两次我不得不从头开始重新安装 Ubuntu 操作系统,这真是一段艰难的时光!

进行 GUI 登录并打开终端Ctrl+Alt+T并发出以下命令:

$ ulimit -n -s -u -l 在此处输入图片描述 Figure-10: Limits for a GUI login with parameters configured in '/etc/systemsd/user.conf' file.

通过命令进行非 GUI 登录su <username>,然后发出ulimit命令:

$ su krishna
$ ulimit -n -s -u -l

在此处输入图片描述 Figure-11: Limits for a non-GUI login with empty '/etc/security/limits.conf' file.

/etc/security/limits.conf1.7.2. 使用文件配置非 GUI 登录的限制参数

要配置限制参数limits.conf,请按照以下步骤操作:

$ sudo cp /etc/security/limits.conf /etc/security/limits.conf.back
$ sudo vi /etc/security/limits.conf

将以下内容复制并粘贴到文件中。

#-------------------------------------------------------------------------------------------------
# shell limits for users of oracle 18c
# [domain] is either username or group or the wildcard *, for default entry or 
# the wildcard %, can be also used with %group syntax, for maxlogin limit
# [type] is either soft (enforcing soft limits) or hard (enforcing hard limits)
# [item] is among core, data, fsize, memlock, nofile, rss, stack, cpu, nproc, as,
# maxlogin, maxsyslogins, priority, locks, sigpending, msgqueue, nice, rtprio
#[domain][type]  [item]  [value]
#-------------------------------------------------------------------------------------------------
krishna   soft   nofile   60000
krishna   hard   nofile   65535
krishna   soft   nproc    60000
krishna   hard   nproc    65535
krishna   soft   stack    30000
krishna   hard   stack    32768
krishna   soft   memlock  3000000
krishna   hard   memlock  3145728

保存并退出vi编辑器。

重新启动计算机以使更改生效。进行 GUI 登录并打开终端,Ctrl+Alt+T然后发出以下命令:

$ ulimit -n -s -u -l 在此处输入图片描述 Figure-12: Limits for a GUI login with parameters configured in '/etc/systemsd/user.conf' file.

通过命令进行非 GUI 登录su <username>,然后发出ulimit命令:

$ su krishna
$ ulimit -n -s -u -l

在此处输入图片描述 Figure-13: Limits for a non-GUI login with parameters configured in '/etc/security/limits.conf' file.

使用 vi 编辑器并编辑,/etc/security/limits.conf以便更改"krishna"为,"oracle"因为用户名krishna用于生成屏幕截图和解释概念。以下是 Oracle 安装所需的设置:

oracle   soft   nofile   60000
oracle   hard   nofile   65535
oracle   soft   nproc    60000
oracle   hard   nproc    65535
oracle   soft   stack    30000
oracle   hard   stack    32768
oracle   soft   memlock  3000000
oracle   hard   memlock  3145728

1.7.3. 如何显示用户进程的限制?

要显示用户进程的限制,您要做的就是简单地使用"cat"如下限制文件:

$ sudo cat /proc/PID/limits

使用命令PID可以找到哪里。ps

$ ps -a | grep -v tty2 | grep gnome-shell 在此处输入图片描述 Figure-14: PID for gnome-shell.

$ sudo cat /proc/1202/limits 在此处输入图片描述 Figure-15: Soft limits for gnome-shell (marked in red).

MaxStackSize为 8,192 KB (8388608 % 1024)、MaxProcess63,077、1,024MaxOpenFileMaxLockedMemory16,384 KB (16777216 % 1024)。将这些值与图 11 进行比较。

$ ps -a | grep -v tty2 | grep bash 在此处输入图片描述 Figure-16: PID for 'bash'.

$ sudo cat /proc/2697/limits 在此处输入图片描述 Figure-17: Soft limits for 'bash' (marked in red).

MaxStackSize为 30,000 KB (30720000 % 1024)、MaxProcess为 60,000、MaxOpenFile为 60,000 和MaxLockedMemory为 3,000,000 KB (3072000000 % 1024)。将这些值与图 13 进行比较。

1.7.4. 将 pam_limits 添加到您的 PAM(可插入身份验证模块)配置中。

/etc/security/limits.conf允许为通过 PAM 登录的用户设置资源限制。这是一种防止 fork-bombs 耗尽所有系统资源的有效方法。由于/etc/security/limits.conf被 读取pam_limits.so,因此您需要检查此模块是否在文件中启用:login, common-session, common-session-noninteractive, su。在进行更改之前请先备份:

$ sudo cp /etc/pam.d/login /etc/pam.d/login.back
$ sudo cp /etc/pam.d/common-session /etc/pam.d/common-session.back
$ sudo cp /etc/pam.d/common-session-noninteractive /etc/pam.d/common-session-noninteractive.back
$ sudo cp /etc/pam.d/su /etc/pam.d/su.back

发出以下命令:

$ echo 'session    required     pam_limits.so' | sudo tee -a /etc/pam.d/login
$ echo 'session    required     pam_limits.so' | sudo tee -a /etc/pam.d/common-session
$ echo 'session    required     pam_limits.so' | sudo tee -a /etc/pam.d/common-session-noninteractive
$ echo 'session    required     pam_limits.so' | sudo tee -a /etc/pam.d/su

笔记:请参阅/var/log/auth.log文件以了解任何与限制相关的错误。

1.8. 配置安全Linux。 要确定计算机已配置secured linux,请键入以下命令:

$ sestatus 在此处输入图片描述 Figure-18: Output confirms that secured linux is not installed which is good.

如果您得到如图 18 所示的输出,那就太好了!现在,您可以打破这一步,继续进行下一步 1.9。

如果您安装了该软件包policycoreutils,并且得到了如下图 19 所示的输出,那么一切就都好了!您可以中断此步骤并转到下一步 1.9。

$ sudo sestatus

在此处输入图片描述 Figure-19: Output of 'sestatus' command.

由于您已经配置了安全的 Linux,因此通过编辑文件将SELINUX标志更改为宽容:/etc/selinux/config

$ sudo cp /etc/selinux/config /etc/selinux/config.back
$ sudo vi /etc/selinux/config

现在,将SELINUX标志设置为permissive

SELINUX=permissive

保存并退出vi编辑器。

要确认您的更改,请发出以下命令:

$ sudo sestatus

笔记:由于我的计算机没有配置secure linux,我无法生成上述命令的屏幕截图!

1.9. 禁用透明大页面。

透明大页面 (THP) 是一种 Linux 内存管理系统,它通过使用更大的内存页面来减少具有大量内存的机器上的转换后备缓冲区 (TLB) 查找的开销。

但是,数据库工作负载在使用 THP 时通常表现不佳,因为它们往往具有稀疏而非连续的内存访问模式。对于MySQLMongoDBOracle等,总体建议是在 Linux 机器上禁用 THP 以确保最佳性能。

您可以通过运行以下命令来检查 THP 是否已启用:

$ cat /sys/kernel/mm/transparent_hugepage/enabled 在此处输入图片描述 Figure-20: The output shows THP 'enabled' is set to default value '[madvise]' in this computer at present.

$ cat /sys/kernel/mm/transparent_hugepage/defrag 在此处输入图片描述 Figure-21: The output shows THP 'defrag' is set to default value '[madvise]' in this computer at present.

如果图 20 和图 21 显示类似的输出[never],则 THP 未启用或未运行。

如何在整个当前会话期间关闭 THP?

现在,发出以下命令:

$ su -
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# exit
$ cat /sys/kernel/mm/transparent_hugepage/enabled

在此处输入图片描述 Figure-22: The output shows THP enabled is stopped from this computer as indicated by the value '[never]'.

$ su -
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# exit
$ cat /sys/kernel/mm/transparent_hugepage/defrag

在此处输入图片描述 Figure-23: The output shows THP 'defrag' is stopped from this computer as indicated by the value '[never]'.

如何持久、永久地关闭 THP?

但是,一旦系统重新启动,它将再次恢复其默认值。为了使设置在 Ubuntu 18.04 上持久,您可以通过创建单元systemd文件在系统启动时禁用 THP:

$ sudo vi /etc/systemd/system/disable-thp.service

将以下内容复制并粘贴到文件中/etc/systemd/system/disable-thp.service

# ---------------------------------------------------
# Disable THP in Ubuntu 18.04:
# ---------------------------------------------------
[Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

要在启动时启用并运行/etc/systemd/system/disable-thp.service文件,请输入以下命令:

$ sudo systemctl daemon-reload
$ sudo systemctl start disable-thp
$ sudo systemctl enable disable-thp

在此处输入图片描述 Figure-24: The THP disable service is enabled to start up at boot time.

$ sudo systemctl status disable-thp 在此处输入图片描述 Figure-25: The THP disable service has started successfully.

现在,要验证 THP 是否永久关闭,请输入以下命令:

$ cat /sys/kernel/mm/transparent_hugepage/enabled 在此处输入图片描述 Figure-26: The output shows THP 'enabled' is turned off persistently as indicated by the value '[never]'.

$ cat /sys/kernel/mm/transparent_hugepage/defrag 在此处输入图片描述 Figure-27: The output shows THP 'defrag' is turned off persistently as indicated by the value '[never]'.

1.10. 与 Oracle 安装相关的最终检查点。

1.10.1. 使用以下命令确定服务器上的物理 RAM 大小:

$ grep MemTotal /proc/meminfo 在此处输入图片描述 Figure-28: Abundant Physical RAM is available (16 GB).

笔记:如果系统中安装的物理 RAM 大小小于所需大小(2 GB),则必须安装更多内存才能继续。

1.10.2. 确定配置的交换空间的大小:

$ grep SwapTotal /proc/meminfo 在此处输入图片描述 Figure-29: Abundant Memory is available for swap partition (16 GB).

笔记:如果系统中的交换内存大小小于所需大小(见下表recommended by oracle),那么您必须配置更多内存才能继续。

RAM                         Swap Space
Between 1 GB and 2 GB       1.5 times the size of RAM
Between 2 GB and 16 GB      Equal to the size of RAM
More than 16 GB             16 GB

1.10.3.确定配置的空间大小/tmp

$ df -h /tmp 在此处输入图片描述 Figure-30: Abundant Memory is available for '/tmp' partition (16 GB).

笔记:如果系统中的内存大小/tmp小于所需大小(400 MB),则完成以下步骤之一:

  • 从目录中删除不必要的文件/tmp以满足磁盘空间要求。
  • 当您设置 Oracle 用户的环境时,还要将TMPTMPDIR环境变量设置为您想要使用的目录,而不是/tmp

1.10.4. 确定系统上的可用 RAM 和磁盘交换空间量:

$ free -h 在此处输入图片描述 Figure-31: A glance of Free RAM (physical) and swap (disk space) available on the system.

1.10.5. 确定系统架构是否可以运行该软件:

验证处理器体系结构是否与要安装的 Oracle 软件版本匹配。例如,对于 1 位x86-64系统,您应该看到以下内容。

$ uname -m 在此处输入图片描述 Figure-32: The output shows that the computer system has 64-bit architecture.

如果您没有看到预期的输出,则您无法在此系统上安装该软件

1.10.6. 适合 Oracle 安装的 120 GB SSD 示例分区表:

我有一个 120 GB 的 SSD,上面安装了 Ubuntu。以下是我的分区详细信息:

Sl.No:  Partition  File System           Device         Allocated Size   Partition Type
1       efi        FAT32                /dev/sda1       0.5 GB           Primary
2       swap       Swap area            /dev/sda2       16 GB            Primary
3       /          ext4 with journaling /dev/sda3       6 GB             Primary
4       /usr       ext4 with journaling /dev/sda4       16 GB            Primary
5       /opt       ext4 with journaling /dev/sda5       44 GB            Primary
6       /tmp       ext2                 /dev/sda6       16 GB            Primary
7       /var       ext4 with journaling /dev/sda7       8 GB             Primary
8       /home      ext4 with journaling /dev/sda8       13.5 GB          Primary

我特别安排了这个分区设置Oracle 18c(企业版)心里

1.10.7. 验证共享内存(/dev/shm)是否已正确安装且具有足够的大小:

发出以下命令来检查共享内存的可用性及其总大小:

$ df -h /dev/shm 在此处输入图片描述 Figure-33: The tmpfs filesystem mounted on '/dev/shm' and has 7.8 GB of total shared memory.

要将限制从 7.8 GB 减少到 7.0 GB,请发出以下命令:

$ sudo mount -o remount,size=7G /dev/shm
$ df -h /dev/shm

在此处输入图片描述 Figure-34: The '/dev/shm' shared memory size has changed from 7.8 GB to 7 GB.

为了永久限制对大小的任何修改/dev/shm,并确保在系统重新启动时安装内存文件系统,请将此条目放入/etc/fstab文件中,如下所示:

首先进行备份:

$ sudo cp /etc/fstab /etc/fstab.back

修改size参数为8GB:

$ echo '# To restrict any modification on the size of /dev/shm permanently' | sudo tee -a /etc/fstab
$ echo '# To ensure that the in-memory file system is mounted when the system restarts' | sudo tee -a /etc/fstab
$ echo 'tmpfs     /dev/shm        tmpfs   defaults,size=8G        0 0' | sudo tee -a /etc/fstab

$ grep tmpfs /etc/fstab 在此处输入图片描述 Figure-35: Entry of 'tmpfs' filesystem in '/etc/fstab' file mounted on '/dev/shm' with 8 GB shared memory.

为了使我们所做的更改/etc/fstab立即生效,请重新挂载/dev/shm

$ sudo mount -o remount /dev/shm
$ df -h /dev/shm

在此处输入图片描述 Figure-36: The '/dev/shm' shared memory size is 8 GB.

1.11. 网络配置。

1.11.1. 配置/etc/hosts文件.

要找出/etc/hosts文件的内容,请发出以下命令:

$ cat /etc/hosts 在此处输入图片描述 Figure-37: Contents of /etc/hosts file.

图 37 截图的内容复制如下,以便任何需要的人都可以复制和粘贴。

# <IP-address> <fully-qualified-machine-name> <machine-name>
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain
::1         localhost localhost.localdomain localhost6 localhost6.localdomain

嗯,名称解析的顺序实际上是在中定义的/etc/nsswitch.conf,您应该看到这样的条目:

hosts:          files dns

输入以下命令,查看hosts对应的实际记录:

$ cat /etc/nsswitch.conf | grep hosts: 在此处输入图片描述 Figure-38: Hosts record in '/etc/nsswich.conf' where 'files' precedes dns in order which is good.

警告:如果/etc/hosts文件配置不正确,那么 Oracle 安装程序将在某个时间点失败!

1.11.2. 配置/etc/resolv.conf文件.

要显示系统中可用的网络接口,请发出以下命令:

$ ip link show 在此处输入图片描述 Figure-39: The WiFi network adapter wlp5s0 is active, up and running.

应检查网络配置文件netplan/.yaml以获取配置详细信息。要显示文件的内容,请发出以下命令:

$ cat /etc/netplan/01-network-manager-all.yaml 在此处输入图片描述 Figure-40: Network Manager file '01-network-manager-all.yaml' is not configured.

使用以下命令确定是否/etc/resolv.confstatic file或:symlink

$ ls -l /etc/resolv.conf 在此处输入图片描述 Figure-41: File '/etc/resolv.conf' is a symlink pointing to stub file 'stub-resolv.conf'.

/etc/resolv.conf通过命令显示内容:cat /etc/resolv.conf 在此处输入图片描述 Figure-42: The contents of symlink '/etc/resolv.conf' having 127.0.0.53 as nameserver.

显示的 dns/etc/resolv.conf不是127.0.0.53为 dhcp 配置的默认名称服务器。发出以下命令来查找默认 dns 服务器:

$ systemd-resolve --status wlp5s0 在此处输入图片描述 Figure-43: The default DNS server for WiFi network adapter is 192.168.43.1.

通过以下命令显示 的内容/run/systemd/resolve/resolv.conf

$ cat /run/systemd/resolve/resolv.conf 在此处输入图片描述 Figure-44: The contents of '/run/systemd/resolve/resolv.conf' indicating default nameserver. Compare with figure-43

从图 44 中,您可以观察到它/run/systemd/resolve/resolv.conf确实承载着默认名称服务器 192.168.43.1。

发出以下命令将符号链接更改/etc/resolv.conf为指向默认 DNS 服务器192.168.43.1而不是127.0.0.53

$ sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
$ ls -l /etc/resolv.conf

在此处输入图片描述 Figure-45: File /etc/resolv.conf is a symlink pointing to default nameserver which is good.

如图 45 所示设置 sysmlink 后,您必须通过发出以下命令确保您的 Wi-Fi 已连接、启动并正在运行:

$ nmcli device

在此处输入图片描述 Figure-45-a: Wi-Fi network interface adapter 'wlp5s0' is connected, up and running.

1.12. 禁用 Linux 防火墙。

如果您启用了 Linux 防火墙,则需要禁用它,请按照以下步骤操作:

$ sudo ufw disable
$ sudo ufw status

在此处输入图片描述 Figure-46: Disable Firewall before Oracle installation.

笔记:安装完成后,请不要忘记使用以下命令启用防火墙:$ sudo ufw enable

第一部分到此结束第二部分答辩环节将开始,内容涉及:

1) Create oracle User, and Groups.
2) Creation of Oracle Mount, Base and Home directories.
3) Tips for Oracle account creation to download installable image file.
4) Extraction of image file.
5) Manipulation and altering of make files required for building binaries on Ubuntu Linux platform.

答案2

第三部分答辩环节现在开始。

3.使用 安装 Oracle runInstaller18.c。

3.1. 清理目录/tmp/tmp在安装开始之前,第一步是 发出以下命令来清理目录:

$ cd /tmp
$ sudo rm -rf *

3.2. 开始安装:

仅从 Oracle 主目录运行runInstaller命令。不要使用runInstaller位于$ORACLE_HOME/oui/bin/或任何其他位置的命令来安装Oracle Database, Oracle Database Client, or Oracle Grid Infrastructure

从 Oracle 主目录运行runInstaller命令以启动 Oracle 数据库安装向导。

$ cd /oracle18c/app/oracle/product/18.0.0/dbhome_1
$ ./runInstaller

在此处输入图片描述 Figure-64: Execute 'runInstaller' from '/oracle18c/app/oracle/product/18.0.0/dbhome_1/' directory.

在此处输入图片描述 Figure-65: Launching Oracle Database 18c Installer.

在此处输入图片描述 Figure-66: Hit button Yes and go ahead with installation.

在此处输入图片描述 Figure-67: Select 'Set up Software Only' option and press Next.

在此处输入图片描述 Figure-68: Select 'Single instance database installation' option and press Next.

在此处输入图片描述 Figure-69: Select 'Enterprise edition' option and press Next.

在此处输入图片描述 Figure-70: Accept the default 'Intallation Location' and press Next.

在此处输入图片描述 Figure-71: Accept the default Oracle Inventor directory/oracle18c/app/oralInventory and hit Next.

在此处输入图片描述 Figure-72: Select Operating System Groups and press Next.

在此处输入图片描述 Figure-73: This is Summary screen and Click button 'Save Response File' to take a copy of 'db.rsp' file.

在此处输入图片描述 Figure-74: Double-click "Documents" folder and then save a copy of 'db.rsp' file by clicking "Save" button.

请将响应文件保存db.rsp~/Documents目录中。这供您参考。

在此处输入图片描述 Figure-75: Now click Install button on the Summary Screen to proceed further.

在此处输入图片描述 Figure-76: Now Install Product is under progress…...

在此处输入图片描述 Figure-77: Execute both the scripts one after another with "root" login.

输入以下命令打开第二个终端Ctrl+AlT+T。输入以下命令以 root 用户身份登录命令行su –

$ su -

复制第一个脚本的整个路径orainstRoot.sh并将其粘贴到终端上(在命令前加上". "

# . /oracle18c/app/oraInventory/orainstRoot.sh

在此处输入图片描述 Figure-78: Execution of first script orainstRoot.sh with "root" login.

现在,复制第二个脚本的整个路径root.sh并将其粘贴到终端上(在命令前加上". ")并点击<CR>

# . /oracle18c/app/oracle/product/18.0.0/dbhome_1/root.sh

在执行此脚本期间,系统会询问您"Enter the full pathname of the local bin directory: /usr/local/bin:"。您只需"default bin directory"按下<return>键即可接受此路径。

随后还会询问另一个问题,"Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes [no] : "请输入"y"并安装。

在此处输入图片描述 Figure-79: Execution of second script root.sh with "root" login.

在登录并完成两个脚本的执行后"root",您应该返回安装程序并点击OK按钮继续安装(参见图 80 下面的屏幕截图)。

在此处输入图片描述 Figure-80: After the execution of scripts hit OK button and proceed further.

在此处输入图片描述 Figure-81: Click Close button to finish Database software Installation.

在此处输入图片描述 Figure-82: Congratulations! You have successfully installed database software using runInstaller interactively!!

3.3 . 监听器安装:

按下打开终端Ctrl+Alt+T并输入以下命令:

$ cp /oracle18c/app/oracle/product/18.0.0/dbhome_1/network/install/netca_typ.rsp ~/Documents/.

输入cat netca_typ.rsp命令列出netca_typ.rsp文件的内容:

$ cat ~/Documents/netca_typ.rsp 在此处输入图片描述 Figure-83: The contents of typical 'netca_typ.rsp' capable of generating 'listener.ora' and 'sqlnet.ora'

响应文件虽然能够创建listener.orasqlnet.ora但不能tnsnames.ora。所以,让我们学会netca_typ.rsp输入"custom"以生成 TNS 别名!

netca_typ.rsp首先从到复制一份netca.rsp,然后依次发出命令:

$ cp ~/Documents/netca_typ.rsp ~/Documents/netca.rsp
$ sed -i 's/TYPICAL/CUSTOM/' ~/Documents/netca.rsp
$ sed -i 's/typical/custom/' ~/Documents/netca.rsp

使用vi编辑器,将以下内容复制并附加到netca.rsp

#---------------------------------------------------------
# Instructions to create tnsnames.ora having TNS alias list
#----------------------------------------------------------
NSN_NUMBER=1
NSN_NAMES={"orcl"}
NSN_SERVICE={"orcl"}
NSN_PROTOCOLS={"TCP;UBUNTU-H170N-WIFI;1521"}

警告:请不要忘记UBUNTU-H170N-WIFI用您的替换Computer Hostname
注-1:要打印您的computer hostname,请发出以下命令:$ hostname
笔记2:要打印您的computer FQDN,请发出以下命令:$ hostname -f$ hostname -A

保存并退出vi编辑器。

netca.rspwised up现在可以生成的内容tnsnames.ora如下:

$ cat ~/Documents/netca.rsp 在此处输入图片描述 Figure-84: The wised up 'netca.rsp' now generates not only 'listener.ora' and 'sqlnet.ora' but also 'tnsnames.ora'.

运行网络配置辅助工具netca

$ /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/netca -silent -responseFile ~/Documents/netca.rsp

在此处输入图片描述 Figure-85: NETCA has configured Listener as well as Net Services successfully executed in silent mode.

通过键入以下命令来检查监听器状态:

$ export ORACLE_HOME=/oracle18c/app/oracle/product/18.0.0/dbhome_1
$ /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/lsnrctl status

在此处输入图片描述 Figure-86: Output of 'lsnrctl status' command.

如上图 86 所示设置。跟踪级别的允许值为、和。使用编辑器并将以下内容复制并粘贴到Trace Level中。offoffuseradminsupportvilistener.ora

$ cd /oracle18c/app/oracle/product/18.0.0/dbhome_1/network/admin
$ vi listener.ora

#---------------------------------------------------------------------
# To prevent "Warning: Subscription for node down event still pending"
#---------------------------------------------------------------------
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=off
#-------------------------------------------------------------------------------
# Permitted values for trace level are "off", "user", "admin" and "support".
#   OFF (equivalent to 0) provides no tracing.
#   USER (equivalent to 4) traces to identify user-induced error conditions.
#   ADMIN (equivalent to 6) traces to identify installation-specific problems.
#   SUPPORT (equivalent to 16) provides trace information for troubleshooting
#            information for support.
#--------------------------------------------------------------------------------
DIAG_ADR_ENABLED_LISTENER=off
TRACE_TIMESTAMP_LISTENER=true
TRACE_LEVEL_LISTENER=support
TRACE_DIRECTORY_LISTENER=/tmp
TRACE_FILE_LISTENER=listener.trc
LOG_DIRECTORY_LISTENER=/tmp
LOG_FILE_LISTENER=listener.log

保存并退出vi编辑器。

listener.ora发出以下命令来显示文件的内容:

$ cd /oracle18c/app/oracle/product/18.0.0/dbhome_1/network/admin
$ cat listener.ora

在此处输入图片描述 Figure-87: 'listener.ora' contains the server-side network configuration parameters.

使用vi编辑器打开并将sqlnet.ora以下内容复制并粘贴到文件中:

$ cd /oracle18c/app/oracle/product/18.0.0/dbhome_1/network/admin
$ vi sqlnet.ora

#----------------------------------------
# set trace and log parameters for client
#----------------------------------------
DIAG_ADR_ENABLED=off
TRACE_UNIQUE_CLIENT=off
TRACE_TIMESTAMP_CLIENT=true
TRACE_FILELEN_CLIENT=100
TRACE_LEVEL_CLIENT=support
TRACE_DIRECTORY_CLIENT=/tmp
TRACE_FILE_CLIENT=sqlnet_client.trc
LOG_DIRECTORY_CLIENT=/tmp
LOG_FILE_CLIENT=sqlnet_client.log
#----------------------------------------
# set trace and log parameters for server
#----------------------------------------
TRACE_TIMESTAMP_SERVER=true
TRACE_FILELEN_SERVER=100
TRACE_LEVEL_SERVER=support
TRACE_DIRECTORY_SERVER=/tmp
TRACE_FILE_SERVER=sqlnet_server.trc
LOG_DIRECTORY_SERVER=/tmp
LOG_FILE_SERVER=sqlnet_server.log 
#----------------------------------------
# set TNSPING Diagnostic Parameters
#----------------------------------------
TNSPING.TRACE_LEVEL=support
TNSPING.TRACE_DIRECTORY=/tmp

保存并退出vi编辑器。

sqlnet.ora发出以下命令来显示文件的内容:

$ cd /oracle18c/app/oracle/product/18.0.0/dbhome_1/network/admin
$ cat sqlnet.ora

在此处输入图片描述 Figure-88: 'sqlnet.ora' is a profile configuration file that contain parameters used by both client and server.

名称.目录路径: 此参数指定客户端尝试连接数据库时使用的命名方法的顺序。可能的值包括:LDAP、、、和。TNSNAMESHOSTNAMEONAMESEZCONNECT

tnsnames.ora发出以下命令来显示文件的内容:

$ cd /oracle18c/app/oracle/product/18.0.0/dbhome_1/network/admin
$ cat tnsnames.ora

在此处输入图片描述 Figure-89: 'tnsnames.ora' file contains alias list.

listener.ora为了使对和所做的更改生效sqlnet.oralistener请使用以下命令重新加载:

$ /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/lsnrctl reload
$ /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/lsnrctl status

在此处输入图片描述 Figure-90: Listener Parameters are set up successfully (compare with figure-86).

这是结束第三部分以及即将到来的第四部分由组成:

1) Generate database scripts by DBCA.
2) Create Orcale 18c database by running scripts.

答案3

第四部分答辩环节现在开始。

4. DBCA生成脚本来创建数据库

4.1. 运行DBCA:

按下打开终端Ctrl+Alt+T并运行数据库配置辅助工具dbca

$ /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/dbca

在此处输入图片描述 Figure-91: Run database configuration assistance tool 'dbca'

在此处输入图片描述 Figure-92: dbca logo

在此处输入图片描述 Figure-93: Select 'Create a database operation' and press 'Next'.

在此处输入图片描述 Figure-94: Select 'Advanced configuration' mode and press 'Next'.

在此处输入图片描述 Figure-95: Select 'Deployment type' and press 'Next'.

在此处输入图片描述 Figure-96: Enter 'Global database name', 'SID', 'PDB name' then click 'Next' button.

在此处输入图片描述 Figure-97: Select storage option "Use template file for database storage attributes" and click 'Next'.

在此处输入图片描述 Figure-98: Select Fast Recovery Option "Specify Fast Recovery Area" and click 'Next'

在此处输入图片描述 Figure-99: Choose listener to register database and click 'Next'.

在此处输入图片描述 Figure-100: Configure Database Vault and Label Security and click 'Next'.

在此处输入图片描述 Figure-101: Choose Memory option " Use Automatic Shared Memory Management (ASMM)" and configure "SGA" and "PGA" shared memory size and then hit menu 'Sizing'.

在此处输入图片描述 Figure-102: Specify "Processes" Number then hit menu "Character Sets".

在此处输入图片描述 Figure-103: Select "Unicode character" set and hit menu "Connection mode"

在此处输入图片描述 Figure-104: Select Dedicated server mode and hit "Sample Schemas"

在此处输入图片描述 Figure-105: Mark checkbox to "add sample schemas to the database" and then hit "Next".

在此处输入图片描述 Figure-106: Select "Configure Enterprise Manager (EM) database express " and specify port. Click 'Next'

在此处输入图片描述 Figure-107: Specify passwords for SYS, SYSTEM, PDBADMIN separately or select "Use the same passwords for all accounts". Click 'Next'.

在此处输入图片描述 Figure-108: Uncheck "Create database" checkbox to avoid creation of a database and check "Generate database creation scripts" checkbox. Click "Next" button.

在此处输入图片描述 Figure-109: Click "Save Response File " button.

在此处输入图片描述 Figure-110: Double-click "Documents" folder and then save a copy of dbca.rsp file by clicking "Save" button.

将响应文件保存dbca.rsp~/Documents目录中。rsp稍后将需要此文件。

在此处输入图片描述 Figure-111: After saving "dbca.rsp" file, click "Finish" button.

在此处输入图片描述 Figure-112: Finish database script generation by clicking "Close" button.

4.2. 通过运行以下生成的脚本创建 Oracle 18c 数据库DBCA

按下打开终端Ctrl+Alt+T并执行 shell 脚本orcl.sh,该脚本将提示输入用户密码SYS,并SYSTEM选择足够难的密码以确保安全。

Scripts path is: {ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/scripts

$ cd /oracle18c/app/oracle/admin/orcl/scripts
$ . orcl.sh | tee ~/Documents/create_database_scripts.log

create_database_scripts.log现在使用编辑器打开日志文件vi

$ vi ~/Documents/create_database_scripts.log

"ORA-12547: TNS:lost contact"您将看到如下图 113 所示的 错误:更改在此处输入图片描述 Figure-113: "Error: ORA-12547: TNS:lost contact".

现在,我们必须找出是谁造成了这场麻烦。

shell 脚本从实际操作开始的地方orcl.sh调用脚本。然后按顺序调用一组其他脚本。让我们将跟踪语句放在第一个 sql 脚本周围,如下图 114 所示:orcl.sqlorcl.sqlsqlCloneRmanRestore.sqloracl.sql

在此处输入图片描述 Figure-114: Trace statements in 'orcl.sql' file around 'CloneRmanRestore.sql' at the point of calling.

如果再运行orcl.sh一次,那么跟踪到的点的执行状态如下图-115所示:

在此处输入图片描述 Figure-115: "Error: ORA-12547: TNS:lost contact" appears soon after entering into 'CloneRmanRestore.sql'.

因此,打开CloneRmanRestore.sql文件并将跟踪语句放在CONNECT语句周围,如下very first one upon entry图 116 所示:

在此处输入图片描述 Figure-116: Trace statements in 'CloneRmanRestore.sql' file around 'CONNECT' Statement.

当再次运行shell脚本时orcl.sh,在进入文件执行状态的瞬间CloneRmanRestore.sql,出现了如下图117所示的错误:

在此处输入图片描述 Figure-117: Trace statements around 'CONNECT' prove that error occurred while executing 'CONNECT' statement.

了解point of origination错误的原因以及CONNECT导致错误的 SQL 语句是件好事。现在是时候清理failed installation并重新安装直到调用为止orcl.sh。所以,让我们继续下一步 [第4.3节] 以下。

4.3. 安装失败后清理系统。

在尝试再次安装之前,应先清理系统。按 打开终端Ctrl+Alt+T并发出以下命令:

$ su -
# rm -f /etc/oraInst.loc
# rm -f /etc/oratab
# cd /oracle18c
# rm -rf *
# cd /opt/oracle
# rm -rf *
# cd /opt
# rm -rf ORCLfmap
# cd /tmp
# rm -rf *
# exit

现在重启电脑然后进入下一步[第 4.4 节]重新安装oracle。

4.4. 安装失败后重新安装 Oracle。

4.4.1. 提取 Oracledb_home.zip映像文件。

清理系统后,让我们尝试再次安装。请按照以下步骤操作:

$ mkdir -p /oracle18c/app/oracle/product/18.0.0/dbhome_1
$ unzip /mnt/ShareMe/'Software(downloaded)'/'MySQL & Oracle'/'Oracle 18.c LINUX.X64_180000_db_home.zip' -d /oracle18c/app/oracle/product/18.0.0/dbhome_1/
$ chmod -R 775 /oracle18c

回想一下,在[部分 - 2.2.10],omkfix.sh文件已创建并保存在~/scripts/目录下,现在运行脚本:

$ . ~/scripts/omkfix.sh

4.4.2. 安装数据库软件.

要安装数据库软件,请按照[第 3.2 节] 从图 64 到图 82。

4.4.3. 安装监听器.

返回 [第 3.3 节], 完全的LISTENER 安装然后立即返回这里。

要验证监听器是否处于活动状态,请发出以下命令: $ ps -ef | grep tnslsnr

在此处输入图片描述 Figure-118: 'Listener' is alive and active in the background.

4.4.4. 生成脚本来创建数据库。

要生成安装数据库所需的脚本,请dbca以交互方式运行dbca.rsp(请参阅figure-110,其中显示响应文件dbca.rsp已保存在~/Documents我们现在要使用的文件夹中!):

$ /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/dbca -responseFile /home/oracle/Documents/dbca.rsp

重复 [ 中的指令第 4.1 节] 直到figure-92生成figure-112用于创建数据库的脚本。

这是结束第四部分以及最后一次会议第五部分开始覆盖“故障排除和安装后”

答案4

在尝试在 ubuntu 18.04 上安装 Oracle 18c(企业版)时,我每一步都面临障碍。你应该不断解决出现的每个障碍并继续前进。如果你没有毅力,你就会放弃!

由于 Ubuntu 18.04 上的 Oracle 18c(企业版)的安装过程很长,包括167 张截图附有非常详细的说明(88 pages of Microsoft Word document containing both instructions and screenshots)。我花了两个多月的时间才安装好并尝到了成功的滋味!

我犹豫着是否要一次性把这个答疑环节的所有材料都转储出来。我确信这会造成混乱,并且可能无法达到预期的目的。

我的意图是让这些材料传达给每一位需要它的读者并使他们受益!

我的建议是将整个材料分成 5 个答案部分,然后按如下方式依次发布:

1. 第一部分预安装。

  • 本部分涵盖存储空间要求、启用多架构支持、安装所需的软件包、创建符号链接、配置内核参数、配置用户 shell 限制oracle、配置安全 Linux 以及禁用 THP(透明大页面)。
  • 找出物理 RAM 大小、交换大小、/tmp 空间大小等,并将它们与 Oracle 建议进行比较。
  • 安装共享内存、配置/etc/hosts文件和 /etc/resolv.conf文件并禁用防火墙。
  • 警告:如果您忽略此部分,您将永远无法在系统上安装 Oracle 18c(企业版)!

2. 第二部分创建 Oracle 用户和组。

  • 本部分涉及 Oracle 用户和组 ID 的创建、数据库 Mount、Base 和 Home 目录的讨论和创建,包括db_home.zip 从 Oracle 网站下载可安装映像文件的提示。
  • 本部分的另一个重要方面是,在第 III 部分中particularly linker/loader flags suitable for Ubuntu Linux platform由(Oracle Universal Installer)执行的数据库软件安装过程中,动态构建二进制文件所需的make 文件()的操作和修改。runInstaller
  • 对 makefile 的修改非常仔细,并在我的 Ubuntu 桌面上进行了彻底的测试,以便动态构建期间引发的链接器/加载器错误能够被识别并完全解决,从而确保您在即将到来的第三部分中拥有干净、愉快的构建体验。

3. 第三部分数据库软件和监听器的安装。

  • 数据库软件的安装以交互方式完成runInstaller
  • Oracle 软件二进制文件在此阶段动态构建,此过程确保您永远不会在 Ubuntu 平台上遇到任何链接器/加载器问题,从而为您提供干净、愉快的软件安装!
  • 软件安装完成后,进行监听器的安装。
  • 监听器安装使用响应文件以静默模式进行。典型的 Oracle 响应文件只能netca_typ.rsp生成listener.orasqlnet.ora文件,而不能生成 tnsnames.ora。因此,ntca_typ.rsp明智的做法是使用附加指令来tnsnames.ora自动生成其他两个文件。
  • listener.ora文件被修改以设置跟踪和日志配置参数。同样,sqlnet.ora文件也被修改以设置跟踪和日志配置参数,不仅用于客户端,还用于服务器端。

4. 第四部分通过 DBCA 生成数据库脚本并使用脚本创建数据库。

  • 本部分涉及脚本的生成(sql files)的使用 DBCA以及通过运行脚本来创建数据库manually
  • 虽然您可以automatically使用DBCA交互方式或静默方式创建数据库,但创建阶段抛出的错误DBCA会让您感到困惑,并且几乎不会为您提供任何解决它们的线索!
  • 而这样做则manually提供了一个调试错误的机会,因为您手头有脚本,可以为您提供定位和进一步挖掘的sql途径。point of origination of error

5. 第五部分故障排除和安装后。

  • 最后一部分调试了第四部分中抛出的错误。
  • 故障排除成功完成后,通过运行脚本启动数据库创建,最后通过启动 Oracle 数据库实例结束该过程“orcl”以及其他自动显示为监听服务的程序。
  • VersionBanner使用的显示sqlplus作为安装成功的证明。
  • 安装后说明包括准备数据库实例 start/stopshell 脚本、配置/etc/oratab、配置 PDB 以与数据库实例一起启动、启用防火墙、恢复 LD_LIBRARY_PATH和创建有用的 oraclealias列表。
  • 这篇冗长的 Oracle18c (企业版) 安装问答会以结论包含以下最后评论的部分: 作者

相关内容