Как установить Oracle 18c (Enterprise Edition) в Ubuntu 18.04?

Этот вопрос остается без ответа с момента выпуска Oracle 18c. За исключением платформы Ubuntu Linux, большая часть другой платформы Linux поддерживает установку Oracle 18c. Я сам проверял это на CentOS 7 и oracle 18c был установлен без сбоев!

К сожалению, корпорация Oracle не документировала процедуру установки, особенно для Ubuntu Linux platformТем не менее, одна хорошая вещь заключается в том, что файл изображения db_home.zip является общим, устанавливается на все платформы Linux.

Итак, как я могу установить Oracle 18c (Enterprise Edition) в Ubuntu 18.04?

6 ответов

Давайте начнем с первой части сессии ответов.

1. Предварительное условие:

1.1. Требуется место для хранения

  • Oracle скачать файл db_home.zip чей размер составляет 4,3 ГБ. Если у вас нет так много места для хранения либо в $HOME каталог или /tmp, вы можете использовать Pendrive объемом не менее 8 ГБ для хранения загруженного файла db_home.zip пока извлечение не сделано.
  • Как мы собираемся установить Oracle на каталог /opt в нем должно быть неиспользованное свободное пространство не менее 13 ГБ, поскольку само извлечение Oracle будет занимать около 9,3 ГБ дискового пространства. Используйте следующую команду для проверки /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. Включить поддержку Multi-Arch (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. Установите пакеты Dependancy, необходимые для установки 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 оболочка (см. рисунок-5 выше), значит, вы хороши! Теперь вы нарушаете этот шаг и переходите к следующему шагу 1.6.

Figure-6: /bin/sh points towards 'bash' shell

Если это bash shell, как показано на рисунке 6, затем создайте следующие символические ссылки:

$ 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. Настройка ограничений оболочки для пользователя oracle

Исторически ограничения ресурсов для процессов определены в /etc/security/limits.conf, Этот файл читается во время входа в систему для пользователей, которые входят в систему с помощью PAM (через файл pam_limits.so). Однако системные службы, которые запускаются через systemd не используйте PAM для входа в систему, поэтому ограничения в /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.

Выполните вход в систему без графического интерфейса с помощью команды 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. Настройте параметры пределов для входов в систему с помощью /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 редактор.

Перезагрузите компьютер, чтобы изменения вступили в силу.

Наблюдение: Когда я попытался изменить параметр DefaultLimitSTACK на различные значения в файлах /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.

Выполните вход в систему без графического интерфейса с помощью команды 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.

1.7.2. Сконфигурируйте параметры пределов для не-GUI входов /etc/security/limits.conf файл:

Настроить лимиты параметров в 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.

Выполните вход в систему без графического интерфейса с помощью команды 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 КБ (8388608 % 1024), MaxProcess 63,077, MaxOpenFile 1024 и MaxLockedMemory 16,384 КБ (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 составляет 30000 КБ (30720000 % 1024), MaxProcess это 60000, MaxOpenFile 60000 и MaxLockedMemory 3 000000 КБ (3072000000 % 1024). Сравните эти значения с рисунком-13.

1.7.4. Добавьте pam_limits к вашей конфигурации PAM (сменные модули аутентификации).

/etc/security/limits.conf позволяет устанавливать лимиты ресурсов для пользователей, вошедших в систему через PAM. Это полезный способ предотвратить, например, использование бомб-вилок всеми системными ресурсами. поскольку /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, которая сокращает накладные расходы при поиске в трансляции Lookaside Buffer (TLB) на машинах с большим объемом памяти за счет использования больших страниц памяти.

Тем не менее, рабочие нагрузки базы данных часто работают плохо с THP, потому что они, как правило, имеют разреженные, а не непрерывные шаблоны доступа к памяти. Общая рекомендация для MySQL, MongoDB, Oracle и т. д. отключить THP на машинах Linux, чтобы обеспечить лучшую производительность.

Вы можете проверить, включен ли 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, вы можете отключить THP при запуске системы, выполнив systemd единичный файл:

$ 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. Используйте следующую команду для определения физического объема оперативной памяти на сервере:

$ grep MemTotal /proc/meminfo Figure-28: Abundant Physical RAM is available (16 GB).

Примечание. Если размер физической оперативной памяти, установленной в системе, меньше необходимого размера (2 ГБ), то перед продолжением необходимо установить больше памяти.

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 МБ), затем выполните одно из следующих действий:

  • Удалите ненужные файлы из /tmp каталог для удовлетворения требований дискового пространства.
  • Когда вы устанавливаете среду пользователя Oracle, также устанавливаете TMP а также TMPDIR переменные окружения в каталог, который вы хотите использовать вместо /tmp,

1.10.4. Определите объем свободной оперативной памяти и дискового пространства в системе:

$ free -h Figure-31: A glance of Free RAM (physical) and swap (disk space) available on the system.

1.10.5. Определите, может ли системная архитектура запускать программное обеспечение:

Убедитесь, что архитектура процессора соответствует версии программного обеспечения Oracle для установки. Например, вы должны увидеть следующее для x86-64 битовая система.

$ uname -m Figure-32: The output shows that the computer system has 64-bit architecture.

Если вы не видите ожидаемый результат, вы не можете установить программное обеспечение в этой системе

1.10.6. Пример таблицы разделов для SSD на 120 ГБ, подходящей для установки Oracle:

У меня есть SSD на 120 ГБ, на котором была установлена ​​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 (Enterprise Edition)

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 ГБ до 7,0 ГБ, введите следующую команду:

$ 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

Измените параметр размера на 8 ГБ:

$ 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.

Содержимое скриншота figure-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

Введите следующую команду, чтобы увидеть фактическую запись, соответствующую хостам:

$ 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.

Днс показано /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.

После настройки sysmlink, как показано на рисунке 45, вы должны убедиться, что ваш 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

Часть I заканчивается здесь, и начинается часть II сессии ответов, которая касается:

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.

Часть III сеанса ответов начинается сейчас.

3. Установка Oracle 18.c с использованием runInstaller ,

3.1. Каталог очистки /tmp : Введите следующую команду для очистки /tmp каталог в качестве первого шага до начала установки:

$ cd /tmp
$ sudo rm -rf *

3.2. Начать установку:

Бежать runInstaller команда только из домашнего каталога Oracle. Не используйте 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.

Откройте 2-й терминал, набрав 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 кто сейчас способен генерировать 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.

Trace Level установлено off как видно на рисунке выше-86. Допустимые значения для уровня трассировки 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.

Names.directory_path: этот параметр указывает порядок именования методов, используемых, когда клиент пытается подключиться к базе данных. Возможные значения включают в себя: 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).

Вот конец Части-III и предстоящая Часть-IV состоит из:

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

Часть IV сессии ответов начинается сейчас.

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 и выполнить сценарий оболочки 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".

Теперь мы должны выяснить, кто был причиной этой проблемы.

Сценарий оболочки orcl.sh вызывается orcl.sql сценарий, с которого началось настоящее действие. orcl.sql вызвал множество других sql сценарии последовательно. Давайте поместим операторы трассировки вокруг первого скрипта sql CloneRmanRestore.sql называется oracl.sql показано на рисунке-114 ниже:

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.

Когда вы запускаете сценарий оболочки 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. Извлечение Oracle db_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 с целью генерации скриптов для создания базы данных.

На этом конец Части-IV и заключительная сессия Части-V начинается с раздела "Устранение неполадок и послеустановка".

Заключительная и заключительная часть V сессии ответов начинается сейчас.

5. Устраните неполадки ORA-12547: TNS: ошибка потерянного контакта.

5.1. Создать файл паролей.

Теперь создайте файл паролей, расположенный в "$ORACLE_HOME/dbs" чье имя должно быть решено следующим образом:

Формула имени файла пароля: orapw + ORACLE_SID знак равно orapw + orcl знак равно orapworcl,

Команда выдачи orapwd создать и добавить пользователя SYS в файл паролей 'orapworcl' вместе с паролем 'oracle18c' как показано ниже:

$ /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/orapwd file=/oracle18c/app/oracle/product/18.0.0/dbhome_1/dbs/orapworcl password=oracle18c ENTRIES=30 FORCE=Y IGNORECASE=Y format=12

5.2. Установите Oracle Environment.

Чтобы установить среду оракула, создайте файл ~/scripts/oenv.sh и скопируйте и вставьте содержимое, указанное в этом разделе:

$ vi ~/scripts/oenv.sh

#!/bin/sh
#--------------------------------------------------------------------
# Oracle Environment Variables Settings
#--------------------------------------------------------------------
export ORACLE_BASE=/oracle18c/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/18.0.0/dbhome_1
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export ORACLE_LIBPATH=$ORACLE_HOME/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$CLASSPATH
export ORACLE_HOSTNAME=$HOSTNAME
export ORA_INVENTORY=/oracle18c/app/oraInventory
export DATA_DIR=$ORACLE_BASE/oradata
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ADR_HOME=$ORACLE_BASE/diag
#--------------------------------------------------------------------
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export PDB_NAME=pdb
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#--------------------------------------------------------------------
export TMP=/tmp; export TMPDIR=$TMP; export TEMP=$TMP
#--------------------------------------------------------------------

Изменить разрешение файла:

$ chmod +x ~/scripts/oenv.sh

Добавьте следующее в ~/.bashrc по этой команде:

$ echo '# Environment settings for Oracle ' | tee -a ~/.bashrc
$ echo '. ~/scripts/oenv.sh' | tee -a ~/.bashrc

Теперь перезагрузите компьютер и вернитесь сюда, чтобы продолжить.

5.3. Создать каталоги.

открыто vi Редактировать и скопировать и вставить следующее содержимое:

$ vi ~/scripts/ocdir.sh

#!/bin/sh
umask 0027
mkdir -p /oracle18c/app/oracle
mkdir -p /oracle18c/app/oracle/admin/orcl/adump
mkdir -p /oracle18c/app/oracle/admin/orcl/dpdump
mkdir -p /oracle18c/app/oracle/admin/orcl/pfile
mkdir -p /oracle18c/app/oracle/audit
mkdir -p /oracle18c/app/oracle/cfgtoollogs/dbca/orcl
mkdir -p /oracle18c/app/oracle/fast_recovery_area/ORCL
mkdir -p /oracle18c/app/oracle/oradata/ORCL
mkdir -p /oracle18c/app/oracle/oradata/ORCL/pdb
mkdir -p /oracle18c/app/oracle/oradata/ORCL/pdbseed
mkdir -p /oracle18c/app/oracle/product/18.0.0/dbhome_1/dbs

Изменить разрешение файла:

$ chmod +x ~/scripts/ocdir.sh

Выполнить файл скрипта ocdir.sh:

$ . ~/scripts/ocdir.sh

5.4. Проверьте listener статус.

Убедитесь, что слушатель включен и слушает в фоновом режиме, с помощью следующей команды:

$ ss -elpunt | grep -E "^Net|tnslsnr"

Figure-119: Oracle listener is up and running.

Если слушатель не работает, запустите его с помощью следующей команды:

$ lsnrctl start LISTENER

5.5. Значение ORA-12547 ошибка.

Давайте сначала поймем "Что делает ORA-12547 значит ". Понять значение ошибки ORA-12547 запустив бинарный оракул oerr который выводит предварительно записанное описание.

$ cd $ORACLE_HOME/bin
$ ./oerr ORA 12547

Figure-120: The Meaning of error 'ORA-12547' displayed by oracle binary utility 'oerr'.

Описание для ошибки ORA-12547 утилитой оракула oerr Вроде бы немного странно. Проще говоря, ORA-12547 указывает на то, что канал связи был разорван. Чаще всего его бросают, потому что другой конец процесса неожиданно исчез. Эта ошибка ORA-12547 может возникнуть из-за различных причин. Мы увидим один за другим.

5.6. Настройки привилегий для oracle двоичный

Бинарный oracle должен не только иметь 6751 привилегия, но и non-zero Размер файла, как показано на рисунке-121 ниже:

$ cd $ORACLE_HOME/bin
$ ls -l oracle

Figure-121: oracle binary has '6751' privileges set and 'non-zero' files size which are good.

Если установлена ​​неправильная привилегия, введите следующую команду:

$ chmod 6751 oracle

Если файл оракула показывает zero file size затем выполните следующую команду для перестройки:

$ cd $ORACLE_HOME/bin
$ ./relink all

5,7. Ненулевой размер файла config.o двоичная:

Объектный файл config.o должен иметь ненулевой размер файла. Чтобы проверить, выполните следующие команды:

$ cd $ORACLE_HOME/rdbms/lib
$ ls -l config.o

Figure-122: The screen displays that 'object.o' file has non-zero file size which is good.

Если там есть zero file size затем выполните следующую команду для перестройки:

$ mv config.o config.o.bad
$ cd $ORACLE_HOME/bin
$ ./relink all

5,8. Oracle Base и домашние настройки в orabasetab файл:

Показать содержимое файла для проверки оракула Base а также Home Настройки.

$ cd $ORACLE_HOME/install
$ cat orabasetab

Figure-123: Display of content of 'orabasetab' file showing the settings of oracle 'Base' and 'Home' which are good.

Если найдены неполные или неправильные настройки, отредактируйте $ORACLE_HOME/install/orabasetab использование файла vi редактировать и исправлять Base а также Home ценности.

5.9. Настройки Oracle Base:

Запустить orabase двоичный файл, чтобы убедиться, что базовый каталог Oracle установлен правильно.

$ cd $ORACLE_HOME/bin
$ ./orabase

Figure-124: Oracle Base directory setting is shown by binary 'orabase' which is good.

5.10. Настройки привилегий для /proc каталог:

Убедитесь, что установлены правильные привилегии /proc каталог. Выполните следующую команду:

$ ls -l / Figure-125: The correct privilege settings 555 for /proc directory.

Если настройки привилегий неверны, исправьте их вручную, выполнив следующую команду:

$ cd /
$ sudo chmod 555 proc

5.11. Настройки привилегий для /dev/null каталог:

Убедитесь, что установлены правильные привилегии /dev/null каталог, который должен быть 0666, Выполните следующую команду:

$ ls -l / Figure-126: The correct privilege settings '666' for '/dev/null' directory.

Если настройки привилегий неверны, исправьте их вручную, выполнив следующую команду:

$ cd /
$ sudo chmod 666 /dev/null

5,12. Бинарные настройки подсистемы Oracle в /ect/fstab файл:

Структура каждой записи в /etc/fstab Файл состоит в основном из следующих 6 полей:

[Device] [Mount point] [Files System Type] [options] [Backup operations] [File System check order]

Программное обеспечение Oracle было установлено в файловой системе /opt точка крепления. Найдите запись в /etc/fstab файл, соответствующий /opt точка монтирования и осмотр 4-го поля, которое [options], Если это поле содержит "nosuid" затем измените это на "suid",

Выполните следующую команду, чтобы найти запись, соответствующую /opt точка крепления:

$ cat /etc/fstab | grep /opt Figure-127: The 4th field '[options]' contains "defaults" corresponding to '/opt' file systems which is good.

4-е поле [options] имеет значение "defaults" который является shortcut и чье расширение:

"rw,suid,dev,exec,auto,nouser,async"

Итак, наличие "defaults" не вызывает проблем. В отсутствии "defaults", если есть присутствие "nosuid" явно затем измените его на "suid" вручную в /etc/fstab использование файла vi редактор. После изменения просто перезагрузите систему.

5,13. Сбросить EXTSHM Переменная среды.

Как оракул не поддерживает Extended Shared Memory переменная среды EXTSHM должен быть сброшен Выполните следующую команду:

$ env | grep EXTSHM Figure-128: The output shows that the Environment variable 'EXTSHM' is undefined which is good.

Если переменная EXTSHM устанавливается unset это с помощью следующей команды:

$ unset EXTSHM

5,14. Недостаточно настроек ulimit для стека:

См. [Раздел 1-7] " Настройка пределов оболочки для оракула пользователя " для увеличения пределов стека.

5,15. Моделирование "ORA-12547: TNS:lost contact" ошибка при использовании sqlplus двоичная:

Было установлено, что ORA-12547 произошла ошибка при попытке создать базу данных Oracle 18c с помощью сценариев, сгенерированных из DBCA [ см. раздел 4.2 и рисунок 113 ]. Мы выяснили, что основной причиной этой ошибки было CONNECT заявление. Итак, давайте снова воспроизведем эту ошибку, вызвав CONNECT заявление непосредственно от sqlplus двоичный файл.

вопрос sqlplus команда как показано ниже:

$ $ORACLE_HOME/bin/sqlplus /nolog

вопрос CONNECT заявление в SQL подскажите следующее:

SQL> connect sys/oracle18c as sysdba; Figure-129: Simulation of "ORA-12547: TNS:lost contact" error by directly invoking 'sqlplus' binary.

Теперь установлено, что ошибка воссоздается путем выполнения sqlplus двоичный файл. При отсутствии исходного кода мы должны атаковать проблему любым оружием, оставшимся в нашем арсенале. В качестве первого шага, давайте попробуем сгенерировать информацию трассировки, описывающую последовательность событий, происходящих в sqlplus двоичный файл.

5,16. Бежать strace Команда для генерации информации трассировки, необходимой для дальнейшего копания:

Для создания файла трассировки, необходимого для дальнейшего изучения CONNECT Скажите, давайте использовать strace командовать вместе с sqlplus как показано ниже:

$ strace -f -o /tmp/strace.log $ORACLE_HOME/bin/sqlplus /nolog

вопрос CONNECT заявление в SQL подскажите следующее:

SQL> connect sys/oracle18c as sysdba;

Figure-130: Use 'strace' command to investigate into 'CONNECT' statement invoked from 'sqlplus' binary.

Теперь используйте gedit и открыть /tmp/strace.log файл. После отслеживания всего файла проблемная область была идентифицирована, как показано на рисунке 131 ниже: Figure-131: "core dump" is found recorded in the 'strace.log' file.

Прежде чем приступить к анализу "core dump" далее, давайте проверим, core файл был создан в default directory с помощью следующих команд:

$ pwd
$ ls

Figure-132: The output confirms that no 'core' file was generated in '/home/oracle' directory.

Узнайте, включено ядро ​​или нет, с помощью следующей команды:

$ ulimit -c Figure-133: Output shows that 'core' is not enabled.

Чтобы включить ядро, введите следующую команду:

$ ulimit -c unlimited Figure-134: Enable core file generation.

Убедитесь, что ядро ​​включено с помощью следующей команды:

$ ulimit -c

Figure-135: Ouput shows that 'core' file generation is successfully enabled.

Опять беги strace команда, как показано в начале этого раздела 5.16 и убедитесь, что core файл был успешно создан:

$ pwd
$ ls

Figure-136: Output shows that 'core' file is generated successfully

Теперь запустите отладчик gdb следующее:

$ gdb -c core Figure-137: Undefined Symbol in 'libpython3.6m.so.1.0' while invoking debugger 'gdb'.

Разрешить symbol lookup error введите следующую команду, чтобы проверить зависимости gdb:

$ ldd /usr/bin/gdb Figure-138: Output shows that only shared object 'libexpat.so.1' has been loaded wrongly from '$ORACLE_HOME/lib'.

Из вышеприведенного рисунка 138 о выходе можно легко сделать вывод, что проблема связана с LD_LIBRARY_PATH переменная окружения.

Во-первых, введите следующую команду, чтобы найти правильный путь libexpat.so.1:

$ locate libexpat.so.1 Figure-139: The correct library path for 'libexpat.so.1' is '/lib/x86_64-linux-gnu/'

Определить текущее значение переменной среды LD_LIBRARY_PATH:

$ echo $LD_LIBRARY_PATH Figure-140: '$ORACLE_HOME/lib' appears as the first member in the 'value' of environment variable 'LD_LIBRARY_PATH'

Как $ORACLE_HOME/lib кажется первым членом LD_LIBRARY_PATH так библиотека зависимостей libexpat.so.1 был загружен из $ORACLE_HOME/lib вместо от /lib/x86_64-linux-gnu, это LD_LIBRARY_PATH должен быть сброшен до завершения анализа дампа ядра. Позже эта переменная среды LD_LIBRARY_PATH должен быть восстановлен в исходное состояние.

редактировать ~/scripts/oenv.sh файл (см. раздел 5.2) и закомментируйте строку, содержащую LD_LIBRARY_PATH, так что эта переменная будет автоматически сброшена после перезагрузки.

Убедитесь, что строка закомментирована правильно, с помощью следующей команды:

$ cat ~/scripts/oenv.sh | grep LD_LIBRARY_PATH Figure-141: The comment symbol "#" appears in front of line containing 'LD_LIBRARY_PATH'.

Перезагрузите систему.

Узнайте, что значение LD_LIBRARY_PATH пусто это или нет с помощью следующей команды:

$ echo $LD_LIBRARY_PATH Figure-142: Output shows that 'LD_LIBRARY_PATH' is empty, thus properly unset which is good.

Выполните следующую команду еще раз, чтобы проверить список зависимостей gdb чтобы убедиться, что libexpat.so.1 загружается с правильного пути:

$ ldd /usr/bin/gdb Figure-143: Output shows that 'libexpat.so.1' is loaded correctly from '/lib/x86_64-linux-gnu'.

Теперь запустите отладчик gdb и убедитесь, что он работает нормально:

$ gdb -c core Figure-144: Debugger 'gdb' is found to be working perfectly.

вопрос bt командовать в gdb подскажите, как показано ниже:

(gdb) bt Figure-145: The screen shows the output of 'bt' command and observe that the result is too poor to analyze.

Результат bt Команда была слишком бедна, и мы need more information для анализа. Давайте попробуем another method с помощью следующей команды:

$ gdb --core=core --exec=/oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/oracle

вопрос bt командовать в gdb незамедлительный:

(gdb) bt

Figure-146: The result produced by the above command is more promising than in figure-145.

tzset() функция устанавливает информацию о преобразовании времени, используемую localtime() и связанные функции. Более того, localtime() не потокобезопасен, потому что возвращает указатель (struct tm *) к статической структуре данных (см. <time.h> заголовок для более подробной информации), который содержит результат. Давайте рассмотрим /tmp/strace.log снова: Figure-147: The file "/etc/localtime" was the last one accessed before crash (core dump).

Файл "/etc/localtime" был последним доступом до сбоя (дамп ядра). С самого начала и до дампа памяти этот файл "/etc/localtime" был доступен дважды. Это показывает состояние тупика, потому что localtime() вводится рекурсивно (во второй раз) из-за обработки некоторого сигнала и localtime() не является реентерабельным или поточно-ориентированным, поэтому блокируется при блокировке.

Мы можем заключить, что Oracle kernel врезается в различные libc функции (Standard Library for C Programming Language), например localtime().

Что такое ядро ​​Oracle?

В Ubuntu Linux каждый клиентский процесс Oracle, такой как sqlplus or Toad подключается к tnslsnr, который fork()'s а потом exec()'s двоичный файл "$ORACLE_HOME/bin/oracle" называется как oracle kernel program, Этот двоичный файл также известен как Oracle Server Process, обращаться figure-121 в [ раздел-5.6 ].

Давайте отображать системный вызов execve ссылающееся oracle двоичный файл, записанный strace командовать в /tmp/strace.log,

Figure-148: The Oracle Kernel binary "oracle" invoked by "execve" system call.

Итак, это Oracle kernel program кто вызывал core dump и чтобы преодолеть эту проблему, необходимо удалить libc* заглушки, а затем пересобрать двоичное ядро ​​Oracle $ORACLE_HOME/bin/oracle сызнова.

Для выполнения этой задачи выполните следующие команды:

$ cd $ORACLE_HOME/lib/stubs
$ ls -l libc*
$ rm libc*
$ cd $ORACLE_HOME/bin
$ ./relink all

Figure-149: Rebuild oracle kernel program "$ORACLE_HOME/bin/oracle" afresh by issuing "./relink all" command and observe the resulting log file.

После восстановления проверьте его файл журнала $ORCALE_HOME/install/relink_2019-02-26_08-27.log чтобы убедиться, что все перестройки были успешными.

Бежать strace команда еще раз, и давайте проверим, что наш злодей "ORA-12547: TNS:lost contact" все еще сохраняется!

$ strace -f -o /tmp/strace.log $ORACLE_HOME/bin/sqlplus /nolog

вопрос CONNECT оператор в SQL подсказывает следующее:

SQL> connect sys/oracle18c as sysdba;

Figure-150: Our arch-villain "ORA-12547: TNS:lost contact" has vanished at last and replaced by "an idle instance".

Бинго! Наш арх злодей "ORA-12547: TNS:lost contact" наконец исчез!

connect заявление было успешно выполнено и idle instance также был создан.

5,17. Повторно запустите сценарии, сгенерированные из DBCA создать базу данных Oracle 18c:

Чтобы отобразить список сценариев, необходимых для создания базы данных, выполните следующие команды:

$ cd /oracle18c/app/oracle/admin/orcl/scripts
$ ls -l *.sql

Figure-151: List of scripts generated by 'DBCA' required to create oracle 18c database.

Убедиться, что listener уже запущен с помощью следующей команды:

$ ss -elpunt | grep -E "^Net|tnslsnr" | column -t

Figure-152: Oracle listener is running and listening on port 1521.

Со ссылкой на [см. Раздел-4.2 и рисунок-113], давайте попробуем еще раз создать базу данных Oracle 18c, запустив сценарии, сгенерированные из DBCA и будем надеяться, что на этот раз база данных будет успешно создана!

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

Figure-153: Creation of oracle 18c database has successfully begun! Notice the appearance of 'idle instance' inside redbox.

Давайте посмотрим на скриншот завершения создания базы данных ниже: Figure-154: Creation of oracle 18c database has come to end successfully!

Давайте посмотрим Services supported by the Listener с помощью следующей команды:

$ lsnrctl status

Figure-155: Services supported by 'listener'.

Давайте проверим Oracle Version с помощью следующей команды:

$ sqlplus / as sysdba
SQL> select instance_name, version from v$instance;

Figure-156: Display of Oracle Version.

Давайте отображать Oracle Banner с помощью следующей команды:

$ sqlplus / as sysdba
SQL> select banner from v$version;

Figure-157: Display of Oracle Banner.

6. После установки.

6.1. конфигурировать /etc/oratab файл.

присоединять "/etc/oratab" файл, устанавливающий флаг перезапуска для каждого экземпляра 'Y',

$ echo 'orcl:/oracle18c/app/oracle/product/18.0.0/dbhome_1:Y' | sudo tee -a /etc/oratab

Figure-158: Append "/etc/oratab" file with restart flag.

Показать содержимое "/etc/oratab" файл с помощью следующей команды:

$ cat /etc/oratab Figure-159: Content of "/etc/oratab" file.

6.2. Начните PDB наряду с экземпляром базы данных.

Переменные среды DATA_DIR а также PDB_NAME необходимо настроить PDB уже экспортированы через ~/scripts/oenv.sh, Выполните следующую команду для проверки:

$ env | egrep 'DATA_DIR=|PDB_NAME=' Figure-160: Environnment variables 'PDB_NAME' and 'DATA_DIR' are already set.

Затем убедитесь, что экземпляр базы данных запущен и работает.

Если это не так, вызовите следующий файл скрипта для запуска:

$ . ~/scripts/ora_start.sh

Примечание: узнать о скрипте ora_start.sh см. [ раздел-6.5 ]

Включите Oracle Managed Files (OMF) и убедитесь, что PDB запускается при запуске экземпляра:

$ sqlplus / as sysdba <<EOF
alter system set db_create_file_dest='${DATA_DIR}';
alter pluggable database ${PDB_NAME} save state;
exit;
EOF

Figure-161: Pluggable database will start along with database instance.

6.3. Восстановить LD_LIBRARY_PATH вернуться к первоначальному значению.

Напомним, что LD_LIBRARY_PATH был не установлен (см. цифры-137 и 138) в ~/scripts/oenv.sh, Теперь мы должны восстановить его, удалив comment # symbol в строке содержится LD_LIBRARY_PATH Строка с использованием любого редактора. Чтобы убедиться, что изменение выполнено, введите следующую команду:

$ cat ~/scripts/oenv.sh | grep LD_LIBRARY_PATH Figure-162: Environnment variables 'LD_LIBRARY_PATH' is restored to its original value by removing comment '#' symbol (compare with figure-140).

6.4. Включить брандмауэр.

В разделе 1.12 брандмауэр был отключен, что было обязательным условием. Теперь это можно восстановить. Чтобы включить брандмауэр, введите следующую команду:

$ sudo ufw enable Figure-163: Firewall successfully enabled.

Чтобы проверить состояние брандмауэра, введите следующую команду:

$ sudo ufw status Figure-164: Firewall status is active

6,5. Запуск / остановка скриптов для базы данных.

Важно помнить, что переменные среды Oracle уже были установлены с помощью ~/scripts/oenv.sh файл и добавляется в ~/.bashrc файл для исполнения при входе в систему. См. Раздел 5.2.

Создать два сценария ora_start.sh а также ora_stop.sh соответственно что можно назвать как startup/shutdown оказание услуг.

Теперь создайте ora_start.sh с помощью vi редактор.

$ vi ~/scripts/ora_start.sh

Скопируйте и вставьте приведенное ниже содержимое в файл.

#!/bin/sh
lsnrctl start
dbstart $ORACLE_HOME

Сохраните и выйдите из редактора vi.

Теперь создайте ora_stop.sh с помощью vi редактор.

$ vi ~/scripts/ora_stop.sh

Скопируйте и вставьте приведенное ниже содержимое в файл.

#!/bin/sh
lsnrctl stop
dbshut $ORACLE_HOME

Сохранить и выйти из vi редактор.

chown -R oracle:oinstall ~/scripts
chmod +x ~/scripts/ora_start.sh
chmod +x ~/scripts/ora_stop.sh

После редактирования /etc/oratab (см. раздел 6.1), вы должны быть в состоянии start/stop база данных со следующими сценариями запускается после входа в систему как пользователь oracle.

Чтобы запустить Oracle Database Service, запустите ora_start.sh сценарий:

$ . ~/scripts/ora_start.sh Figure-165: Run script 'ora_start.sh' to start database instance

Чтобы завершить работу Oracle Database Service, запустите ora_stop.sh сценарий:

$ . ~/scripts/ora_stop.sh Figure-166: Run script ora_stop.sh to shut down database instance

6.6. Создайте список псевдонимов для оракула.

Создайте список псевдонимов, подходящих для Oracle в ~/scripts/oalias.sh следующее:

$ vi ~/scripts/oalias.sh

Добавьте следующее в ~/scripts/oalias.sh файл с использованием техники копирования-вставки:

#----------------------------------------
# alias list of useful commands for Oracle
#----------------------------------------
alias o='cd /oracle18c'
alias op='cd /opt'
alias oo='cd /opt/oracle'
alias ob='cd /oracle18c/app/oracle'
alias oi='cd /oracle18c/app/oraInventory'
alias od='cd /oracle18c/app/oracle/oraData'
alias oh='cd /oracle18c/app/oracle/product/18.0.0/dbhome_1'
alias obin='cd /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin'
alias olib='cd /oracle18c/app/oracle/product/18.0.0/dbhome_1/lib'
alias odbs='cd /oracle18c/app/oracle/product/18.0.0/dbhome_1/dbs'
alias olog='cd /oracle18c/app/oracle/cfgtoollogs'
alias odlog='cd /oracle18c/app/oracle/cfgtoollogs/dbca'
alias otfa='cd /oracle18c/app/oracle/tfa'
alias otfab='cd /oracle18c/app/oracle/tfa/bin'
alias os='cd /oracle18c/app/oracle/admin/orcl/scripts'
alias oad='cd /oracle18c/app/oracle/admin'
alias osid='cd /oracle18c/app/oracle/admin/orcl'
alias otns='cd /oracle18c/app/oracle/product/18.0.0/dbhome_1/network/admin'

Сохранить и выйти из vi редактор.

Изменить разрешение файла с помощью chmod команда:

$ chmod +x ~/scripts/oalias.sh

Затем выполните следующие команды, чтобы добавить строку ~/scripts/oalias.sh в ~/.bashrc файл:

$ echo '#--------------------------------------------------------' | tee -a ~/.bashrc
$ echo '# alias list of useful commands for Oracle' | tee -a ~/.bashrc
$ echo '#--------------------------------------------------------' | tee -a ~/.bashrc
$ echo '. ~/scripts/oalias.sh' | tee -a ~/.bashrc

Теперь закройте свой текущий терминал и откройте новый терминал с Ctrl+Alt+T и введите следующую команду:

$ alias

Figure-167: Very useful alias list for oracle.

Вы увидите list of aliases для оракула отображается на экране.

7. Заключение.

Радость и радость были связаны не только с успешной установкой Oracle-18c (Enterprise Edition) на Ubuntu 18.04, но и с " укрощением " Oracle Software сосуществовать вместе со всеми другими установленными программными пакетами под /opt раздел (refer figure-57)!

Это завершает Oracle 18c (Enterprise Edition) установка на Ubuntu 18.04! Наслаждайтесь Oracle 18c (Enterprise Edition)!!

Во время моей попытки установить Oracle 18c (Enterprise Edition) на Ubuntu 18.04 я сталкивался с препятствиями на каждом шагу. Вы должны продолжать устранять каждое препятствие по мере его появления и двигаться вперед. Если у тебя нет упорства, ты сдашься!

Поскольку эта процедура установки для Oracle 18c (Enterprise Edition) на Ubuntu 18.04 настолько длинная, состоит из 167 снимков экрана с очень подробными инструкциями (88 pages of Microsoft Word document containing both instructions and screenshots). Мне потребовалось более 2 месяцев непрерывного труда, чтобы установить его и попробовать на вкус!

Я колеблюсь, чтобы вылить весь материал в этой сессии ответов за один раз. Я уверен, что это создаст путаницу и может не служить намеченной цели.

Мое намерение состоит в том, чтобы этот материал был полезен каждому читателю, который в нем нуждается!

Я предлагаю разделить весь материал на 5 сессий ответов (частей) и выпустить их один за другим следующим образом:

1. Часть I: Предварительная установка.

  • В этой части рассматриваются требования к объему дискового пространства, включается поддержка нескольких архитектур, пакеты, необходимые для установки, создание символических ссылок, настройка параметров ядра, настройка ограничений оболочки для пользователя. oracle, настройте безопасный linux и отключите THP (Transparent Huge Pages).
  • Узнайте размер физической памяти, размер подкачки, размер /tmp и т. Д. И сравните их с рекомендациями Oracle.
  • Монтирование разделяемой памяти, настройка /etc/hosts файл и /etc/resolv.conf файл и отключить брандмауэр.
  • Предупреждение: если вы игнорируете эту часть, вы никогда не сможете установить Oracle 18c (Enterprise Edition) в вашей системе!

2. Часть II: Создание пользователей и групп Oracle.

  • Эта часть посвящена созданию идентификаторов пользователей и групп Oracle, обсуждению и созданию каталогов Mount, Base и Home, включая советы по загрузке устанавливаемого файла образа. db_home.zip с сайта оракула.
  • Другим важным аспектом этой части является то, что манипулирование и изменение файлов make (particularly linker/loader flags suitable for Ubuntu Linux platform), которые необходимы для динамического создания двоичных файлов в процессе установки программного обеспечения базы данных, выполняемой runInstaller (Oracle Universal Installer) в части III.
  • Изменение make-файлов было сделано очень тщательно и тщательно протестировано на моем рабочем столе Ubuntu, так что ошибки компоновщика / загрузчика, возникающие при динамическом построении, были идентифицированы и полностью устранены, таким образом, вы получите чистый и приятный опыт сборки в следующей части III.

3. Часть III: Установка программного обеспечения базы данных и прослушивателя.

  • Установка программного обеспечения базы данных выполняется с использованием runInstaller в интерактивном режиме.
  • Двоичные файлы программного обеспечения Oracle создаются на этом этапе динамически, и эта процедура гарантирует, что вы никогда не столкнетесь с проблемами компоновщика / загрузчика на платформе Ubuntu, что обеспечит вам чистую и приятную установку программного обеспечения!
  • После завершения установки программного обеспечения, установка слушателя будет продолжена.
  • Установка слушателя выполняется в автоматическом режиме с использованием файла ответов. Типичный файл ответов оракула netca_typ.rsp способен генерировать listener.ora а также sqlnet.ora только файлы, но не tnsnames.ora, Так ntca_typ.rsp придуманы дополнительные инструкции для производства tnsnames.ora автоматически вместе с двумя другими файлами.
  • listener.ora Файл изменен для установки параметров трассировки и регистрации. так же sqlnet.ora Файл также изменен, чтобы установить параметры конфигурации трассировки и журнала не только на стороне клиента, но и на стороне сервера.

4. Часть IV: Генерация сценариев базы данных с помощью DBCA и создание базы данных с использованием сценариев.

  • Эта часть касается генерации скриптов (sql files) с помощью DBCA и создает базу данных с помощью сценариев manually,
  • Хотя вы можете создать базу данных automatically с помощью DBCA либо в интерактивном режиме, либо в режиме без вывода сообщений об ошибках DBCA броски на этапе создания заставят вас сбиться с толку и вряд ли предложат вам какой-нибудь ключ к их решению!
  • Принимая во внимание, что делать это manually открывает возможность отлаживать ошибки, потому что у вас есть sql сценарии в руке, предлагая вам путь, чтобы найти point of origination of error и копать дальше.

5. Часть-V: Устранение неисправностей и после установки.

  • Эта заключительная часть отлаживает ошибку, брошенную в Части-IV.
  • После успешного завершения устранения неполадок, создание базы данных запускается с помощью сценариев, и, наконец, процесс завершается автоматическим запуском экземпляра базы данных oracle "orcl" и других, которые отображаются как службы прослушивателя.
  • Дисплеи Version а также Banner с помощью sqlplus продемонстрированы как доказательство успешной установки.
  • Инструкции после установки охватывают подготовку экземпляра базы данных start/stop сценарии оболочки, настройка /etc/oratab настроить PDB для запуска вместе с экземпляром базы данных, включить брандмауэр, восстановить LD_LIBRARY_PATH и создание полезного оракула alias список.
  • Этот длинный сеанс ответов об установке Oracle18c (Enterprise Edition) заканчивается разделом " Заключение", содержащим заключительные замечания Marmayogi.

Давайте начнем с части II сессии ответов.

2. Требуется группа операционной системы и пользователь для установки оракула.

2.1. Пользователь и группы.

2.1.1. Создать группы Oracle.

Создание инвентарной группы oinstall,

$ sudo groupadd -g 54321 oinstall

Создание группы OSDBA dba,

$ sudo groupadd -g 54322 dba

Другие группы: вы можете создать следующие группы на основе ваших требований, в противном случае пропустите их все.

$ sudo groupadd -g 54323 oper
$ sudo groupadd -g 54324 backupdba
$ sudo groupadd -g 54325 dgdba
$ sudo groupadd -g 54326 kmdba
$ sudo groupadd -g 54327 asmdba
$ sudo groupadd -g 54328 asmoper
$ sudo groupadd -g 54329 asmadmin
$ sudo groupadd -g 54330 racdba

2.1.2. Создать владельца / пользователя программного обеспечения Oracle oracle ,

$ sudo useradd -u 54321 -m -s /bin/bash -g oinstall -G dba oracle

In this command:
•   -u option specifies the numerical value of user’s ID.
•   -m option specifies to create a home for oracle user: /home/oracle.
•   -s option specifies the shell associated with login which is /bin/bash.
•   -g option specifies the primary group oinstall.
•   -G option specifies the secondary groups dba.

Если вы не создали " Другие группы " [section-2.1.1], то пропустите это.

В противном случае вы добавляете их пользователю oracle:

$ sudo usermod -a -G oper,backupdba,dgdba,kmdba,asmdba,asmoper,asmadmin,racdba  oracle

Установите пароль oracle пользователь:

$ sudo passwd oracle

Убедитесь, что oracle Пользователь и связанные с ним группы создаются, как ожидается:

$ id oracle изменения Figure-47: User oracle and its associated groups.

Убедитесь, что oracle основная группа пользователей oinstall:

$ id -gn oracle Figure-48: User oracle primary group is 'oinstall'.

2.1.3. Добавьте пользователя oracle в группу sudoers:

Включать oracle пользователь с группой sudoers sudo введите следующую команду:

$ sudo usermod -a -G sudo oracle

Чтобы убедиться, что oracle пользователь связан с sudo группа, введите команду:

$ id oracle Figure -49: User 'oracle' is also with group 'sudo'.

2.1.4. Проверьте этого пользователя nobody существует:

$ id nobody Figure-50: Ouput shows that user 'nobody' does exist already.

Если пользователь nobody не существует, затем введите следующую команду для его создания:

$ sudo useradd nobody

2.2. Необходимые каталоги программного обеспечения для установки оракула.

2.2.1. Oracle Mount Point.

Oracle 18.c будет установлен на /opt/oracle которая автоматически станет точкой монтирования для установки Oracle. Но проблема в том, чтобы дать oracle собственность пользователя для всего /opt/oracle каталог, который не является приемлемым, потому что /opt В каталоге уже размещено много других программных пакетов (см. рисунок 51 ниже). Я создал это /opt раздел с намерением разместить как можно больше независимых программных пакетов! Я не хочу посвящать весь /opt раздел исключительно для установки базы данных Oracle. Figure-51: Notice that partition '/opt' contains many important software packages which have already been installed.

Чтобы достичь нашей цели, давайте разработаем хитрость. Давайте предположим, каталог /opt/oracle, как будто устройство и смонтировать это устройство на /oracle18c как точка монтирования. Теперь мы можем назначить пользователя oracle право собственности на эту точку монтирования /oracle18c и поэтому мы избегаем вмешиваться в это устройство /opt/oracle напрямую, без вреда!

Теперь создайте точку монтирования /oracle18c от / с помощью следующей команды:

$ sudo mkdir /oracle18c
$ ls -l /

https://ask-ubuntu.ru/images/aa59a76884751 b6bee0535eed166ececfa244714.png Figure-52: Command 'ls -l /' shows that the mount point '/oracle18c' has 'root:root' ownership.

Создать папку oracle под /opt каталог с помощью следующей команды:

$ sudo mkdir /opt/oracle 
$ ls -l /opt 

Figure-53: Directory 'oracle' under '/opt' has 'root:root' ownership.

Из рисунка 53 выше, обратите внимание, что папка /opt/oracle имеет root:root владение.

Чтобы внести изменения в /etc/fstab введите следующие команды:

$ sudo cp /etc/fstab /etc/fstab.back
$ echo '# Oracle 18.c installation mount point' | sudo tee -a /etc/fstab
$ echo '/opt/oracle /oracle18c none bind' | sudo tee -a /etc/fstab

Удостоверься что /etc/fstab, имеет точку входа /oracle18c правильно установлен следующей командой:

$ grep /opt/oracle /etc/fstab

Figure-54: Directory '/opt/oracle' is mounted "as if a file system" on '/oracle18c' mount point.

Для того, чтобы наши изменения были сделаны на /etc/fstab введите следующую команду:

$ sudo mount -a

Смена владельца точки монтирования /oracle18c от root:root в oracle:oinstall, выполните эту команду:

$ sudo chown -R oracle:oinstall /oracle18c
$ ls -l /

Figure-55: The ownership of '/oracle18c' has changed from 'root:root' to 'oracle:oinstall'.

Таким образом, мы успешно смонтировали /oracle18c без ущерба для собственности /opt который все еще остается в root:root нетронутым! Конечно, именно этого мы и хотели! Чтобы проверить этот факт, введите следующую команду:

$ ls -l / Figure-56: The ownership of '/opt' partition still remains at 'root:root' untouched!

С другой стороны, право собственности на oracle папка под /opt каталог автоматически изменился с root:root в oracle:oinstall после загрузки /etc/fstab изменения. Чтобы проверить этот факт, введите следующую команду:

$ ls -l /opt Figure-57: The ownership of 'oracle' folder under '/opt' partition has changed automatically from 'root:root' to 'oracle:oinstall', after loading '/etc/fstab' using 'mount -a' command.

Просто сравните рисунок 57, приведенный выше, с рисунком 53.

Теперь установка Oracle ограничена и ограничена внутри /opt/oracle подкаталог, и мы запретили Oracle принимать всю /opt раздел таким образом покоряет Oracle прямо! Уловка, которую мы разработали против оракула, действительно сработала!

Мы не только надежно охраняем программы, уже установленные в /opt раздел (см. рис. 51), но также предоставляется возможность для будущей установки новых пакетов программного обеспечения, если позволяет пространство для хранения. Программное обеспечение Oracle теперь вынуждено существовать, чтобы быть одним из них, будучи полностью лишенным какой-либо особой привилегии по сравнению с другими пакетами программного обеспечения в соответствии с /opt каталог.

2.2.2. Базовый каталог Oracle

Optimal Flexible Architecture (OFA) Руководства Oracle рекомендуют использовать путь, аналогичный следующему, для базового каталога Oracle: /mount_point/app/oracle_sw_owner

Войти в систему как oracle пользователь или используйте эту команду:

$ su - oracle

Создайте базовый каталог oracle (не используйте sudo) с помощью следующей команды:

$ mkdir -p /oracle18c/app/oracle
$ exit

2.2.3. Oracle Inventary Directory

Каталог Oracle Inventory oraInventory хранит перечень всего программного обеспечения, установленного в системе. Это требуется и используется всеми установками программного обеспечения Oracle в одной системе. Когда вы впервые устанавливаете программное обеспечение Oracle в систему, Oracle Universal Installer предложит вам указать путь к этому каталогу. Oracle рекомендует выбрать следующий путь: oracle_base/oraInventory

Примечание-1: Oracle Universal Installer создает каталог, который вы укажете, и автоматически устанавливает для него правильного владельца, группу и разрешения. You do not need to create it,

Примечание-2: Если вы выполняете установку Oracle Database, и вы установили $ORACLE_BASE для пользователя оракула к пути /oracle18c/app/oracle перед установкой и предоставлением 755 разрешения оракула для этого пути, то Oracle Universal Installer (runInstaller) создает каталог Oracle Inventory на один уровень выше $ORACLE_BASE в пути ORACLE_BASE/../oraInventory Таким образом, путь к описи Oracle /oracle18c/app/oraInventory (см. рисунок 71)

Внимание: все установки программного обеспечения Oracle основаны на этом каталоге. Убедитесь, что вы регулярно делаете резервные копии. Не удаляйте этот каталог, если вы полностью не удалили все программное обеспечение Oracle из системы.

2.2.4. Домашний каталог Oracle

Домашний каталог Oracle - это каталог, в который вы решаете установить программное обеспечение для определенного продукта Oracle. Вы должны установить разные продукты Oracle или разные выпуски одного и того же продукта Oracle в отдельных домашних каталогах Oracle. Когда ты бежишь Oracle Universal Installer, он предлагает вам указать путь к этому каталогу, а также имя, которое его идентифицирует. Указанный вами каталог должен быть подкаталогом базового каталога Oracle. Oracle рекомендует указывать путь, аналогичный следующему, для домашнего каталога Oracle: oracle_base/product/18.0.0/dbhome_1

Войдите в систему как пользователь oracle или используйте эту команду:
$ su - oracle

Создайте домашний каталог Oracle следующим образом:

$ mkdir -p /oracle18c/app/oracle/product/18.0.0/dbhome_1
$ sudo chown -R oracle:oinstall /oracle18c

2.2.5. Перезагрузить систему:

Перезагрузите систему и войдите в свой компьютер как пользователь oracle,

2.2.6. конфигурировать umask а также DISPLAY Параметры.

Удостоверься что umask а также DISPLAY установлены правильно, выполнив эти команды:

$ umask Figure-58: Set umask 022.

$ echo $DISPLAY Figure-59: Set DISPLAY=:0.

Если оба umask а также DISPLAY параметры уже установлены правильно, как показано на рисунках 58 и 59 соответственно, тогда вы в порядке! Вы переходите к следующему шагу 2.2.7, чтобы создать учетную запись оракула.

Если вышеуказанные параметры не установлены должным образом, выполните следующие команды:

$ echo "umask 022" >> ~/.bash_profile
$ echo "export DISPLAY=:0" >> ~/.bash_profile

Перезагрузите компьютер и войдите в систему как пользователь oracle ,

2.2.7. Создайте свою учетную запись Oracle.

Чтобы загрузить файлы установочного образа Oracle Database db_home.zip, сначала вы должны зарегистрироваться в Oracle Corporation и получить username а также password, Если у вас нет учетной записи, вам лучше зарегистрироваться прямо сейчас по этой ссылке: Создать учетную запись Oracle Figure-60: Create your Oracle Account

Вы должны поставить это username а также password всякий раз, когда вы загружаете с веб-сайта Oracle.

2.2.8. Скачать файл изображения db_home.zip ,

Скачивать db_home.zip с веб-сайта Oracle, используйте следующую ссылку: Скачать образ Oracle Figure-61: Select Accept License Agreement and then download Image file db_home.zip.

2.2.9. Извлечение файла изображения db_home.zip ,

Извлекать db_home.zip (предположим, что вы скачали и сохранили его в ~/Downloads папку) в домашний каталог Oracle, введите следующую команду:

$ unzip ~/Downloads/'Oracle 18.c LINUX.X64_180000_db_home.zip' -d /oracle18c/app/oracle/product/18.0.0/dbhome_1/

Если бы вы скачали и сохранили db_home.zip в Pendrive, затем извлечь db_home.zip из pendrive в домашний каталог Oracle введите следующую команду:

$ unzip /media/krishna/SANTACRUZ/'Oracle 18.c LINUX.X64_180000_db_home.zip' -d /oracle18c/app/oracle/product/18.0.0/dbhome_1/

where 
       'SANTACRUZ' is name of my pendrive, so replace it with your pendrive's name.
       'krishna' is the username on this desktop, so replace it with your own username.

Моя система dual-booted настольный компьютер с SSD на 250 ГБ (Windows-10 installation), еще 120 ГБ SSD (Ubuntu 18.04 installation) и 1 ТБ жесткого диска с тремя разделами NTFS, которые смонтированы в Ubuntu как CodeWrite (read-only), ShareMe (read-only) а также Warehouse (read-write) соответственно. Итак, этот жесткий диск объемом 1 ТБ доступен для совместного использования между Windows-10 и Ubuntu 18.04. Все копии устанавливаемых загрузок не только для Windows-10, но и для Ubuntu 18.04 хранятся в ShareMe, Такое расположение помогает сохранить место для хранения на обоих SSD! Чтобы разархивировать, я запускаю следующую команду со своего рабочего стола:

$ 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/

Примечание. Oracle рекомендует, чтобы созданный вами путь к домашнему каталогу Oracle соответствовал Oracle Optimal Flexible Architecture (OFA) рекомендации. Кроме того, разархивируйте файлы установочного образа только в созданном вами домашнем каталоге Oracle.

Затем установите правильное разрешение файла в точке монтирования /oracle18c с помощью chmod команда:

$ chmod -R 775 /oracle18c Figure-62: Permission for '/oracle18c' directory and its descendents is set to 775

Выполните эту команду для проверки /opt складские помещения после окончания процесса извлечения:

$ df -h /opt Figure-63: The storage space consumed by extraction process was around 9.3 GB (compare with Figure-1).

2.2.10. Изменить флаги загрузчика / компоновщика в makefiles подходит для Ubuntu Linux Platform.

Манипулирование и изменение make-файлов, в частности flags, требуется для успешной сборки двоичных файлов на платформе Ubuntu Linux. Если какие-либо ошибки генерируются динамически во время сборки (во время database software installation process инициировано в интерактивном режиме runInstaller), безусловно, сделает вашу жизнь несчастной, тем не менее, она на сто процентов уверена, что будет чистая и приятная сборка!

Создать файл скрипта omkfix.sh с помощью vi редактор и добавьте следующее:

$ mkdir -p ~/scripts
$ vi ~/scripts/omkfix.sh

Скопируйте и вставьте ниже содержимое в файл.

#!/bin/sh
# Change the path below to point to your installation
export ORACLE_HOME=/oracle18c/app/oracle/product/18.0.0/dbhome_1
# make changes in orld script
sed -i 's/exec gcc "\$@"/exec gcc -no-pie "\$@"/' $ORACLE_HOME/bin/orald
# Take backup before committing changes
cp $ORACLE_HOME/rdbms/lib/ins_rdbms.mk $ORACLE_HOME/rdbms/lib/ins_rdbms.mk.back
cp $ORACLE_HOME/rdbms/lib/env_rdbms.mk $ORACLE_HOME/rdbms/lib/env_rdbms.mk.back
cp $ORACLE_HOME/network/lib/env_network.mk $ORACLE_HOME/network/lib/env_network.mk.back
cp $ORACLE_HOME/srvm/lib/env_srvm.mk $ORACLE_HOME/srvm/lib/env_srvm.mk.back
cp $ORACLE_HOME/crs/lib/env_has.mk $ORACLE_HOME/crs/lib/env_has.mk.back
cp $ORACLE_HOME/odbc/lib/env_odbc.mk $ORACLE_HOME/odbc/lib/env_odbc.mk.back
cp $ORACLE_HOME/precomp/lib/env_precomp.mk $ORACLE_HOME/precomp/lib/env_precomp.mk.back
cp $ORACLE_HOME/ldap/lib/env_ldap.mk $ORACLE_HOME/ldap/lib/env_ldap.mk.back
cp $ORACLE_HOME/ord/im/lib/env_ordim.mk $ORACLE_HOME/ord/im/lib/env_ordim.mk.back
cp $ORACLE_HOME/ctx/lib/env_ctx.mk $ORACLE_HOME/ctx/lib/env_ctx.mk.back
cp $ORACLE_HOME/plsql/lib/env_plsql.mk $ORACLE_HOME/plsql/lib/env_plsql.mk.back
cp $ORACLE_HOME/sqlplus/lib/env_sqlplus.mk $ORACLE_HOME/sqlplus/lib/env_sqlplus.mk.back
cp $ORACLE_HOME/bin/genorasdksh $ORACLE_HOME/bin/genorasdksh.back
#
# make changes changes in .mk files
#
sed -i 's/\$(ORAPWD_LINKLINE)/\$(ORAPWD_LINKLINE) -lnnz18/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mk
sed -i 's/\$(HSOTS_LINKLINE)/\$(HSOTS_LINKLINE) -lagtsh/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mk
sed -i 's/\$(EXTPROC_LINKLINE)/\$(EXTPROC_LINKLINE) -lagtsh/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mk
sed -i 's/\$(OPT) \$(HSOTSMAI)/\$(OPT) -Wl,--no-as-needed \$(HSOTSMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(OPT) \$(HSDEPMAI)/\$(OPT) -Wl,--no-as-needed \$(HSDEPMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(OPT) \$(EXTPMAI)/\$(OPT) -Wl,--no-as-needed \$(EXTPMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(SPOBJS) \$(LLIBDMEXT)/\$(SPOBJS) -Wl,--no-as-needed \$(LLIBDMEXT)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk

sed -i 's/\$(S0MAIN) \$(SSKRMED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKRMED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSBBDED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSBBDED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKRSED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKRSED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SKRNPT)/\$(S0MAIN) -Wl,--no-as-needed \$(SKRNPT)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSTRCED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSTRCED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSTNTED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSTNTED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFEDED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFEDED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk

sed -i 's/\$(S0MAIN) \$(SSKFODED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFODED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFNDGED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFNDGED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFMUED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFMUED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFSAGED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFSAGED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(DBGVCI)/\$(S0MAIN) -Wl,--no-as-needed \$(DBGVCI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(DBGUCI)/\$(S0MAIN) -Wl,--no-as-needed \$(DBGUCI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKECED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKECED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk

sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \($(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
sed -i 's/\$LD \$1G/$LD -Wl,--no-as-needed \$LD_RUNTIME/' $ORACLE_HOME/bin/genorasdksh
sed -i 's/\$(GETCRSHOME_OBJ1) \$(OCRLIBS_DEFAULT)/\$(GETCRSHOME_OBJ1) -Wl,--no-as-needed \$(OCRLIBS_DEFAULT)/' $ORACLE_HOME/srvm/lib/env_srvm.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/crs/lib/env_has.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/odbc/lib/env_odbc.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/precomp/lib/env_precomp.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/srvm/lib/env_srvm.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/network/lib/env_network.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ldap/lib/env_ldap.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ord/im/lib/env_ordim.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ctx/lib/env_ctx.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/plsql/lib/env_plsql.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/sqlplus/lib/env_sqlplus.mk

Сохранить и выйти из vi редактор.

Выполняя этот скрипт, ORACLE_HOME будет экспортирован как первая строка скрипта, так что каталог установки для всего скрипта будет правильно указан. Теперь запустите скрипт omkfix.sh:

$ chmod +x ~/scripts/omkfix.sh
$ . ~/scripts/omkfix.sh

Это конец части II установки, и впоследствии начнется следующая часть III, которая состоит из:

1) Installation of database software by runInstaller interactively.
2) Installation of Listener silently using response file 'rsp'.
Другие вопросы по тегам