![1. 先决条件:](https://linux22.com/image/1066030/1.%20%E5%85%88%E5%86%B3%E6%9D%A1%E4%BB%B6%EF%BC%9A.png)
自 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
/tmp
db_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 support
64 位 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
指向dash
shell(参见上图 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.conf
1.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)、MaxProcess
63,077、1,024MaxOpenFile
和MaxLockedMemory
16,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 时通常表现不佳,因为它们往往具有稀疏而非连续的内存访问模式。对于MySQL
、MongoDB
、Oracle
等,总体建议是在 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 用户的环境时,还要将
TMP
和TMPDIR
环境变量设置为您想要使用的目录,而不是/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.conf
为static 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 runInstaller
18.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.ora
,sqlnet.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.rsp
wised 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
中。off
off
user
admin
support
vi
listener.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
、、、和。TNSNAMES
HOSTNAME
ONAMES
EZCONNECT
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.ora
,listener
请使用以下命令重新加载:
$ /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-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.sql
orcl.sql
sql
CloneRmanRestore.sql
oracl.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.ora
和sqlnet.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”以及其他自动显示为监听服务的程序。
Version
和Banner
使用的显示sqlplus
作为安装成功的证明。- 安装后说明包括准备数据库实例
start/stop
shell 脚本、配置/etc/oratab
、配置 PDB 以与数据库实例一起启动、启用防火墙、恢复LD_LIBRARY_PATH
和创建有用的 oraclealias
列表。 - 这篇冗长的 Oracle18c (企业版) 安装问答会以结论包含以下最后评论的部分: 作者。