Этот вопрос является оставшимся без ответа, так как Oracle 18c была выпущена. Кроме Ubuntu платформа Linux, большая часть другой поддержки платформ Linux Oracle 18c установка. Я, сам, протестировал это на CentOS 7
и оракул 18c был установлен без любого незначительного сбоя!
Неудачно, что Oracle Corporation не зарегистрировала процесс установки особенно для Ubuntu Linux platform
, тем не менее, одна хорошая вещь состоит в том что файл изображения db_home.zip
универсальный, устанавливаемый через все платформы Linux.
Таким образом, как я могу установить Oracle 18c (Enterprise Edition) на Ubuntu 18.04?
Часть III сеанса ответов начинается сейчас.
runInstaller
. 3.1. Очистить каталог / tmp
:
Выполните следующую команду для очистки каталога / tmp
в качестве первого шага перед началом установки:
$ cd /tmp
$ sudo rm -rf *
3.2. Начать установку:
Запустите команду runInstaller
только из домашнего каталога Oracle. Не используйте команду runInstaller
, которая находится в $ ORACLE_HOME / oui / bin /
или в любом другом месте, для установки Oracle Database, Oracle Database Client или Oracle Grid Infrastructure.
.
В домашнем каталоге Oracle выполните команду runInstaller
, чтобы запустить мастер установки базы данных Oracle.
$ cd /oracle18c/app/oracle/product/18.0.0/dbhome_1
$ ./runInstaller
Рисунок-64: Выполните runInstaller из каталога /oracle18c/app/oracle/product/18.0.0/dbhome_1/.
Рисунок 65: Запуск установщика Oracle Database 18c.
Рисунок-66: Нажмите кнопку «Да» и продолжайте установку.
Рисунок-67: Выберите параметр «Установить только программное обеспечение» и нажмите Далее.
Рисунок-68: Выберите вариант «Установка базы данных с одним экземпляром» и нажмите Далее.
Рисунок-69: Выберите вариант «Корпоративная версия» и нажмите Далее.
Рисунок-70: Примите значение по умолчанию «Место установки» и нажмите Далее.
Рисунок 71: Примите каталог Oracle Inventor по умолчанию / oracle18c / app / oralInventory и нажмите «Далее».
Рисунок-72: Выберите Группы операционных систем и нажмите Далее.
Рисунок 73: Это экран сводки. Нажмите кнопку «Сохранить файл ответов», чтобы сделать копию файла «db.rsp».
Рисунок 74: Дважды щелкните папку «Документы» и затем сохраните копию файла «db.rsp», нажав кнопку «Сохранить».
Сохраните файл ответов db.rsp
в каталоге ~ / Documents
. Это для справки.
Рисунок-75: Теперь нажмите кнопку «Установить» на итоговом экране, чтобы продолжить.
Рисунок 76: Выполняется установка продукта… ...
Рисунок 77: Выполните оба сценария один за другим с логином «root».
Откройте второй терминал, набрав Ctrl + AlT + T
. Войдите в командную строку как пользователь root, набрав su -
:
$ su -
Скопируйте весь путь к первому скрипту orainstRoot.sh
и вставьте его в терминал ( команда с префиксом "."
)
#. /oracle18c/app/oraInventory/orainstRoot.sh
Рисунок-78: Выполнение первого скрипта orainstRoot.sh с входом «root».
Теперь скопируйте весь путь ко второму сценарию root.sh
и вставьте его в терминал (команда префикса с "."
) и нажмите
.
#. /oracle18c/app/oracle/product/18.0.0/dbhome_1/root.sh
Во время выполнения этого сценария вас попросят «Введите полный путь к локальному каталогу bin: / usr / local / bin: "
. Вы просто принимаете этот «каталог bin по умолчанию»
, нажав клавишу <возврат>
.
Впоследствии будет задан другой вопрос: «Вы хотите настроить Oracle Trace File Analyzer (TFA) сейчас? Да [нет]:»
, для которого вы вводите «y»
и установите его.
Рисунок-79: Выполнение второго скрипта root.sh с логином "root".
После завершения выполнения обоих сценариев с логином "root"
, вы должны вернуться в программу установки и нажать кнопку OK
, чтобы продолжить установку (см. Снимок экрана) ниже рисунок-80).
Рисунок 80: После выполнения сценария нажмите кнопку ОК и продолжайте.
Рисунок 81: Нажмите кнопку «Закрыть», чтобы завершить установку программного обеспечения базы данных.
Рисунок 82: Поздравляем! Вы успешно установили программное обеспечение базы данных с помощью runInstaller в интерактивном режиме !!
Откройте терминал, нажав 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
Рисунок 83: Содержимое типичного файла netca_typ.rsp, способного генерировать listener.ora и 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
на ваше имя хоста компьютера
.
Примечание-1: Чтобы распечатать имя хоста компьютера
, введите следующую команду: $ hostname
Примечание-2: Чтобы распечатать полное доменное имя компьютера
, введите следующую команду: $ hostname -f
или $ hostname -A
Сохраните и выйдите из редактора vi
.
Содержимое обновленного netca.rsp
, который теперь может генерировать tnsnames.ora
, показано ниже:
$ cat ~ / Documents / netca.rsp
] Рисунок-84: Умный 'netca.rsp' теперь генерирует не только 'listener.ora' и 'sqlnet.ora', но также 'tnsnames.ora'.
Запустите инструмент помощи в настройке сети netca
:
$ /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/netca -silent -responseFile ~/Documents/netca.rsp
Рисунок-85: NETCA настроила прослушиватель, а также сетевые службы, успешно запущенные в автоматическом режиме.
Проверьте статус слушателя, введя следующие команды:
$ export ORACLE_HOME=/oracle18c/app/oracle/product/18.0.0/dbhome_1
$ /oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/lsnrctl status
Рисунок-86: Вывод команды 'lsnrctl status'.
Уровень трассировки
отключен
, как показано на рисунке 86 выше. Допустимые значения для уровня трассировки: выключено
, пользователь
, администратор
и поддержка
. Воспользуйтесь редактором 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
Рисунок 87: «listener.ora» содержит параметры конфигурации сети на стороне сервера.
Используйте редактор 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
Рисунок 88: 'sqlnet.ora' - файл конфигурации профиля, который содержит параметры, используемые как клиентом, так и сервером.
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
Рисунок 89: Файл 'tnsnames.ora' содержит список псевдонимов.
Чтобы применить изменения, сделанные в 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
Рисунок-90: Параметры прослушивателя настроены успешно (сравните с рисунком 86).
Вот конец Части III , и предстоящая Часть-IV состоит из:
1) Generate database scripts by DBCA.
2) Create Orcale 18c database by running scripts.
Давайте начнем с Часть-I сеанса ответов.
1.1. Требуется дисковое пространство
db_home.zip
, размер которого составляет 4,3 ГБ. Если у вас
недостаточно места для хранения в каталоге $ HOME
или
/ tmp
, вы можете использовать Pendrive емкостью не менее 8 ГБ. для хранения
загруженного файла db_home.zip
до завершения распаковки. / opt
, он должен иметь
неиспользуемое свободное пространство не менее 13 ГБ, поскольку само извлечение Oracle
потребляет около 9,3 ГБ. ГБ дискового пространства. Используйте следующую команду
для проверки места для хранения раздела / opt
: $ df -h / opt
Рисунок 1: Объем свободного места, доступного в разделе «/ opt» .
1.2. JDK-11 установлен на вашем компьютере.
$ echo $ JAVA_HOME
Рисунок 2: Установка JDK-11 уже выполнена.
1.3. Включите поддержку нескольких архитектур (поддержка 32-разрядной версии).
Перед включением 32-битной поддержки
для 64-битной Ubuntu 18.04, позвольте нам убедиться, что у вас 64-битная архитектура ядра:
$ dpkg --print-architecture
Рисунок-3 : Эта компьютерная система имеет 64-битную архитектуру ядра.
Поддержка нескольких архитектур позволяет использовать 32-битные библиотеки наряду с 64-битными библиотеками.
$ dpkg --print-foreign-architeures
Рисунок 4: Эта компьютерная система также поддерживает архитектуру i386 (т.е. поддерживает также 32-битные библиотеки).
Если вы получили результат, подобный фигуре-4, то вам следует прервать этот шаг и перейти к следующему шагу-1.4.
Включите поддержку нескольких архивов, набрав:
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
Начнется загрузка и выполнение обновления. После этого вы даете следующую команду:
$ sudo apt-get dist-upgrade
Теперь проверьте наличие поддержки i386, набрав следующее, и вы должны получить результат, как на рисунке 4:
$ dpkg - печать-иностранные-архитектуры
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
Рисунок 5: '/ bin / sh' указывает на оболочку 'dash'
Если / bin / sh
указывает на черточку
оболочки (см. Рисунок-5 выше), тогда все хорошо! Теперь вы прерываете этот шаг и переходите к следующему шагу 1.6.
Рисунок 6: / bin / sh указывает на оболочку bash
Если это оболочка bash
, как показано на рисунке 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. назад
$ 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
Рисунок 7: Список параметров ядра, настроенных в файле "/etc/sysctl.conf".
1.7.Настройте ограничения оболочки для пользователя oracle
Исторически ограничения ресурсов для процессов определены в /etc/security/limits.conf
. Этот файл читается во время входа в систему для пользователей, выполняющих вход с помощью PAM (через файл pam_limits.so
). Однако системные службы, запускаемые через systemd
, не используют PAM для входа в систему, поэтому ограничения в /etc/security/limits.conf
игнорируются.
Выполните вход в систему с графическим интерфейсом и откройте терминал с помощью Ctrl + Alt + T
и введите следующую команду:
$ ulimit -n -s -u -l
Рисунок 8: Ограничения для входа в систему с графическим интерфейсом с пустым файлом /etc/systemsd/user.conf.
Выполните вход без графического интерфейса с помощью команды su
, а затем введите команду ulimit
:
$ su krishna
$ ulimit -n -s -u -l
Рисунок 9: Ограничения для входа без графического интерфейса с пустым Файл /etc/security/limits.conf.
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
.
Перезагрузите компьютер, чтобы изменения вступили в силу.
Наблюдение : Когда я пытался изменить параметр DefaultLimitSTACK на различные значения как в '/etc/systemd/system.conf', так и в '/ etc / systemd / user.conf ', система либо зависла, либо вылетела при перезагрузке. Хотя большую часть времени я успешно восстанавливал систему, но дважды мне приходилось переустанавливать операционную систему Ubuntu с нуля, и это было действительно тяжелое время!
Выполните вход в систему с графическим интерфейсом и откройте терминал с помощью Ctrl + Alt + T
и введите следующую команду:
$ ulimit -n -s -u -l
Рисунок-10: Ограничения для входа в систему с графическим интерфейсом пользователя с параметрами, настроенными в файле /etc/systemsd/user.conf.
Выполните вход без графического интерфейса с помощью команды su
, а затем введите команду ulimit
:
$ su krishna
$ ulimit -n -s -u -l
Рисунок 11: Ограничения для входа без графического интерфейса с пустым Файл /etc/security/limits.conf.
1.7.2. Настройте параметры ограничений для входа без графического интерфейса пользователя с помощью файла /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
.
Перезагрузите компьютер, чтобы изменения вступили в силу.
Выполните вход в систему с графическим интерфейсом пользователя и откройте терминал с помощью Ctrl + Alt + T
и введите следующую команду:
$ ulimit -n -s -u -l
Рисунок-12: Ограничения для входа в систему через графический интерфейс с параметрами, настроенными в файле '/etc/systemsd/user.conf'.
Выполните вход без графического интерфейса с помощью команды su
, а затем введите команду ulimit
:
$ su krishna
$ ulimit -n -s -u -l
Рисунок 13: Ограничения для входа без графического интерфейса с параметрами настраивается в файле /etc/security/limits.conf.
Используйте редактор 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
Рисунок 14: PID для gnome-shell.
$ sudo cat / proc / 1202 / limits
Рисунок 15: Мягкие ограничения для gnome-shell (отмечены красным).
MaxStackSize
- 8192 КБ (8388608% 1024), MaxProcess
- 63077, MaxOpenFile
- 1024 и MaxLockedMemory
- 16384 КБ (16777216% 1024 ). Сравните эти значения с цифрой 11.
$ ps -a | grep -v tty2 | grep bash
Рисунок 16: PID для 'bash'.
$ sudo cat / proc / 2697 / limits
Рисунок 17: Мягкие ограничения для 'bash' (отмечены красным).
MaxStackSize
- 30 000 КБ (30720000% 1024), MaxProcess
- 60 000, MaxOpenFile
- 60 000 и MaxLockedMemory
- 3 000 000 КБ (3072000000% 1024 ). Сравните эти значения с цифрой 13.
1.7.4. Добавьте pam_limits в свою конфигурацию PAM (подключаемые модули аутентификации).
/etc/security/limits.conf
позволяет устанавливать ограничения ресурсов для пользователей, вошедших в систему через PAM. Это полезный способ предотвращения, например, использования всех системных ресурсов fork-бомбами.
Поскольку /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.
Чтобы убедиться, что компьютер настроен для защищенного Linux
, введите команду:
$ sestatus
Рисунок 18: Вывод подтверждает, что защищенный Linux не установлен, который это хорошо.
Если вы получите результат, подобный приведенному на рис. 18, значит, все в порядке! Теперь вы прерываете этот шаг и переходите к следующему шагу 1.9.
Если вы установили пакет policycoreutils
и получили результат, как на рисунке 19 ниже, значит, вы тоже в порядке! Вы прерываете этот шаг и переходите к следующему шагу 1.9.
$ sudo sestatus
Рисунок 19: Вывод команды 'sestatus'.
Поскольку вы уже настроили защищенный Linux, измените флаг SELINUX
на разрешающий, отредактировав файл / etc / selinux / config
:
$ sudo cp /etc/selinux/config /etc/selinux/config.back
$ sudo vi /etc/selinux/config
Теперь установите SELINUX
флаг разрешающий
:
SELINUX = permissive
Сохраните и выйдите из редактора vi
.
Чтобы подтвердить изменение, введите следующую команду:
$ sudo sestatus
Примечание : Поскольку мой компьютер не был настроен для защищенного Linux
, я не смог создать снимок экрана для указанная выше команда!
1.9. Отключить прозрачные огромные страницы.
Transparent Huge Pages (THP) - это система управления памятью Linux, которая снижает накладные расходы на поиск в буфере трансляции (TLB) на машинах с большими объемами памяти за счет использования больших страниц памяти.
Однако рабочие нагрузки базы данных часто плохо работают с THP, потому что они, как правило, имеют разреженные, а не непрерывные шаблоны доступа к памяти.Общая рекомендация для MySQL
, MongoDB
, Oracle
и т. Д. - отключить THP на машинах Linux для обеспечения максимальной производительности.
Вы можете проверить, включен ли THP, запустив:
$ cat / sys / kernel / mm / transparent_hugepage / enabled
Рисунок 20: Вывод показывает, что THP 'enabled' установлен по умолчанию значение '[madvise]' на этом компьютере в настоящее время.
$ cat / sys / kernel / mm / transparent_hugepage / defrag
Рисунок 21: Выходные данные показывают, что THP 'defrag' установлен на значение по умолчанию '[madvise]' на этом компьютере в настоящее время.
Если на рисунках 20 и 21 выводятся такие как [never]
, то THP не активирован и не запущен.
Как выключить THP во время всего текущего сеанса?
Теперь введите следующие команды:
$ su -
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# exit
$ cat /sys/kernel/mm/transparent_hugepage/enabled
Рисунок 22: Выходные данные показывают, что THP включен, остановлен с этого компьютера, что обозначено значением '[никогда]' .
$ su -
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# exit
$ cat /sys/kernel/mm/transparent_hugepage/defrag
Рисунок-23: Выходные данные показывают, что THP 'defrag' остановлен с этого компьютера, на что указывает значение '[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
Рисунок-24: Служба отключения THP включена для запуска во время загрузки.
$ sudo systemctl status disable-thp
Рисунок 25: Служба отключения THP успешно запущена.
Теперь, чтобы убедиться, что THP отключен навсегда, введите следующую команду:
$ cat / sys / kernel / mm / transparent_hugepage / enabled
Рисунок 26: Выходные данные показывают, что THP 'enabled' отключен постоянно, на что указывает значение «[никогда]».
$ cat / sys / kernel / mm / transparent_hugepage / defrag
Рисунок-27: Выходные данные показывают, что THP 'defrag' постоянно выключен, как указано значением '[never]'.
1.10.1. Используйте следующую команду, чтобы определить размер физического ОЗУ на сервере:
$ grep MemTotal / proc / meminfo
Рисунок 28: Доступен большой объем физической ОЗУ (16 ГБ).
Примечание : Если размер физической ОЗУ, установленной в системе, меньше требуемого размера (2 ГБ), то перед продолжением необходимо установить больше памяти.
1.10.2. Определите размер настроенного пространства подкачки:
$ grep SwapTotal / proc / meminfo
Рисунок 29: Для раздела подкачки доступен большой объем памяти (16 ГБ).
Примечание : Если размер памяти подкачки в системе меньше требуемого размера (см. Таблицу ниже, которая рекомендована 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
Рисунок 30: Для раздела '/ tmp' (16 ГБ) доступен большой объем памяти.
Примечание : Если размер / tmp
памяти в системе меньше необходимого размера (400 МБ), выполните одно из следующих действий:
/ tmp
, чтобы обеспечить
дисковое пространство. TMP
и
TMPDIR
в каталог, который вы хотите использовать
вместо / tmp
. 1.10.4. Определите объем свободной RAM и дискового пространства подкачки в системе:
$ free -h
Рисунок 31: Обзор свободной RAM (физической) и swap (дискового пространства), доступных в системе.
1.10.5. Определите, может ли архитектура системы запускать программное обеспечение:
Убедитесь, что архитектура процессора соответствует устанавливаемой версии программного обеспечения Oracle. Например, вы должны увидеть следующее для x86-64
разрядной системы.
$ uname -m
Рисунок 32: Выходные данные показывают, что компьютерная система имеет 64-битную архитектуру.
Если вы не видите ожидаемого результата, значит, вы не можете установить программное обеспечение в этой системе.
1.10.6. Пример таблицы разделов для твердотельного накопителя на 120 ГБ, подходящего для установки Oracle:
У меня есть твердотельный накопитель на 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
Рисунок 33: Файловая система tmpfs смонтирована на '/ dev / shm' и имеет 7,8 ГБ общей общей памяти.
Чтобы уменьшить лимит с 7,8 ГБ до 7,0 ГБ, введите следующую команду:
$ sudo mount -o remount,size=7G /dev/shm
$ df -h /dev/shm
Рисунок-34:Размер разделяемой памяти '/ dev / shm' изменен с 7,8 ГБ до 7 ГБ.
Чтобы навсегда ограничить любые изменения размера / 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
Рисунок-35: Запись файловой системы 'tmpfs' в файл '/ etc / fstab', смонтированный на '/ dev / shm' с общей памятью 8 ГБ.
Чтобы применить наши изменения, сделанные в / etc / fstab
, немедленно перемонтируйте / dev / shm
:
$ sudo mount -o remount /dev/shm
$ df -h /dev/shm
Рисунок 36: Общая память '/ dev / shm' размер 8 ГБ.
1.11.1. Настройте файл / etc / hosts
.
Чтобы узнать содержимое файла / etc / hosts
, введите следующую команду:
$ cat / etc / hosts
Рисунок 37: Содержимое файла / etc / hosts.
Содержание скриншота рисунка 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:
Рисунок-38: Запись хостов в '/etc/nsswich.conf', где 'files' предшествует dns в порядке, который является правильным.
предупреждение : если файл / etc / hosts
настроен неправильно, то в какой-то момент установщик Oracle завершится ошибкой!
1.11.2.Настройте файл /etc/resolv.conf
.
Чтобы отобразить, какие сетевые интерфейсы доступны в системе, введите следующую команду:
$ ip link show
Рисунок 39: Сетевой адаптер Wi-Fi wlp5s0 активен, запущен и работает.
Файл конфигурации сети netplan / .yaml
должен быть проверен на предмет деталей конфигурации. Чтобы отобразить содержимое файла, введите следующую команду:
$ cat /etc/netplan/01-network-manager-all.yaml
Рисунок 40: Файл сетевого менеджера '01 -network-manager-all .yaml не настроен.
Определите, является ли /etc/resolv.conf
статическим файлом
или символической ссылкой
с помощью следующей команды:
$ ls -l / etc /resolv.conf
Рисунок-41: Файл '/etc/resolv.conf' - это символическая ссылка, указывающая на файл-заглушку 'stub-resolv.conf'.
Отобразите содержимое /etc/resolv.conf
с помощью команды: cat /etc/resolv.conf
Рисунок-42: Содержимое символической ссылки '/etc/resolv.conf 'имея 127.0.0.53 в качестве сервера имен.
DNS, показанный в /etc/resolv.conf
, это 127.0.0.53
, но не сервер имен по умолчанию, настроенный для DHCP. Введите следующую команду, чтобы узнать DNS-сервер по умолчанию:
$ systemd-resolve --status wlp5s0
Рисунок-43: DNS-сервер по умолчанию для сетевого адаптера WiFi - 192.168.43.1.
Отобразите содержимое /run/systemd/resolve/resolv.conf
с помощью команды:
$ cat /run/systemd/resolve/resolv.conf
Рисунок-44: содержимое '/run/systemd/resolve/resolv.conf', указывающее сервер имен по умолчанию.Сравните с рисунком 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
Рисунок-45: Файл /etc/resolv.conf - это символическая ссылка, указывающая на сервер имен по умолчанию, что хорошо.
После настройки sysmlink, как показано на рисунке-45, вы должны убедиться, что ваш Wi-Fi подключен, запущен и работает, выполнив следующую команду:
$ nmcli device
Рисунок-45-a : Адаптер сетевого интерфейса Wi-Fi «wlp5s0» подключен, настроен и работает.
1.12. Отключите брандмауэр Linux.
Если у вас включен брандмауэр Linux, вам нужно будет его отключить, сделайте, как указано ниже:
$ sudo ufw disable
$ sudo ufw status
Рисунок 46: Отключите брандмауэр перед установкой Oracle.
Примечание : не забудьте включить брандмауэр после завершения установки, используя команду: $ 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.
IV части сессии ответа начинается теперь.
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.
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] для переустанавливания оракула.
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], завершают Установку СЛУШАТЕЛЯ и возвращаются назад сразу сюда.
Чтобы проверить, что слушатель активен, дайте эту команду: $ 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.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. Проверить статус слушателя
.
Убедитесь, что слушатель включен и слушает в фоновом режиме, с помощью следующей команды:
$ ss -elpunt | grep -E "^ Net | tnslsnr"
Рисунок-119: Прослушиватель Oracle запущен и работает.
Если прослушиватель не запущен, запустите его следующей командой:
$ lsnrctl start LISTENER
5.5. Значение ошибки ORA-12547
.
Давайте сначала разберемся, «Что означает ORA-12547
». Выясните значение ошибки ORA-12547
, запустив двоичный файл Oracle oerr
, который выводит предварительно записанное описание.
$ cd $ORACLE_HOME/bin
$ ./oerr ORA 12547
Рисунок-120: Значение ошибки «ORA-12547», отображаемой двоичной утилитой oracle «oerr».
Описание ошибки ORA-12547
утилитой oracle oerr
кажется немного странным. Проще говоря, ORA-12547
указывает, что канал связи нарушен. Чаще всего это происходит из-за того, что другой конец процесса неожиданно завершился.
Эта ошибка ORA-12547
может возникать по разным причинам. Увидим по очереди.
5.6. Настройки привилегий для oracle
двоичного
двоичного oracle
должны иметь не только 6751
привилегию, но также ненулевой
размер файла, поскольку показано на рисунке 121 ниже:
$ cd $ORACLE_HOME/bin
$ ls -l oracle
Рисунок 121: двоичный файл oracle имеет установленные привилегии '6751' и 'ненулевой' размер файлов, что является приемлемым.
Если установлена неправильная привилегия, введите следующую команду:
$ chmod 6751 oracle
Если файл oracle показывает нулевой размер файла
, выполните следующую команду для восстановления:
$ cd $ORACLE_HOME/bin
$ ./relink all
5.7. Ненулевой размер файла config.o
двоичный:
Объектный файл config.o
должен иметь ненулевой размер файла. Для проверки введите следующие команды:
$ cd $ORACLE_HOME/rdbms/lib
$ ls -l config.o
Рисунок-122: На экране отображается, что файл 'object.o' имеет ненулевой размер файла, и это хорошо.
Если имеется нулевой размер файла
, введите следующую команду для восстановления:
$ mv config.o config.o.bad
$ cd $ORACLE_HOME/bin
$ ./relink all
5.8. Базовые и домашние параметры Oracle в файле orabasetab
:
Отображение содержимого файла для проверки параметров Oracle Base
и Home
.
$ cd $ORACLE_HOME/install
$ cat orabasetab
Рисунок-123: Отображение содержимого файла 'orabasetab', показывающего правильные настройки Oracle 'Base' и 'Home'.
Если обнаружены неполные или неправильные настройки, отредактируйте файл $ ORACLE_HOME / install / orabasetab
с помощью редактора vi
и исправьте Base
и Home
значения.
5.9. Настройки Oracle Base:
Запустите двоичный файл orrabase
, чтобы убедиться, что базовый каталог Oracle установлен правильно.
$ cd $ORACLE_HOME/bin
$ ./orabase
Рисунок-124: Настройки каталога Oracle Base показаны двоичной 'orabase', что хорошо.
5.10. Настройки привилегий для каталога / proc
:
Убедитесь, что в каталоге / proc
установлены правильные привилегии. Введите следующую команду:
$ ls -l /
Рисунок 125: Правильные настройки 555 привилегий для каталога / proc.
Если есть неправильные настройки привилегий, исправьте вручную с помощью следующей команды:
$ cd /
$ sudo chmod 555 proc
5.11. Настройки привилегий для каталога / dev / null
:
Убедитесь, что в каталоге / dev / null
установлены правильные привилегии, которые должны быть 0666
. Введите следующую команду:
$ ls -l /
Рисунок 126: Правильные настройки привилегий «666» для каталога «/ dev / null».
Если есть неправильные настройки привилегий, исправьте вручную с помощью следующей команды:
$ 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
Рисунок-127: Четвертое поле '[options]' содержит «значения по умолчанию», соответствующие файловым системам '/ opt', что хорошо.
Четвертое поле [параметры]
имеет значение «defaults»
, которое является ярлыком
и его расширение:
«rw, suid, dev , exec, auto, nouser, async "
Итак, наличие " значений по умолчанию "
не вызывает проблем. При отсутствии "значений по умолчанию"
, если присутствует "nosuid"
явно, то измените его на "suid"
вручную в / etc / fstab
с помощью редактора vi
. После изменения просто перезагрузите вашу систему.
5.13. Отключите переменную среды EXTSHM
.
Поскольку Oracle не поддерживает Extended Shared Memory
, переменная среды EXTSHM
не должна быть установлена. Введите следующую команду:
$ env | grep EXTSHM
Рисунок 128: Выходные данные показывают, что переменная окружения 'EXTSHM' не определена, что хорошо.
Если установлена переменная EXTSHM
, то сбросит
с помощью следующей команды:
$ unset EXTSHM
5.14. Недостаточно настроек ulimit для стека:
Обратитесь к [раздел 1-7] « Настройте пределы оболочки для пользователя oracle », чтобы увеличить ограничения стека.
5.15.Имитация ошибки «ORA-12547: TNS: потерянный контакт»
с использованием двоичного кода sqlplus
:
Было установлено, что ошибка ORA-12547
произошла при попытке создать базу данных Oracle 18c, запустив сценарии, сгенерированные из DBCA [ см. раздел 4.2 и рисунок 113 ]. Мы выяснили, что основной причиной этой ошибки была инструкция CONNECT
. Итак, давайте воспроизведем эту ошибку еще раз, вызвав оператор CONNECT
непосредственно из двоичного файла sqlplus
.
Выполните команду sqlplus
, как показано ниже:
$ $ ORACLE_HOME / bin / sqlplus / nolog
Проблема Оператор CONNECT
в запросе SQL
как следует:
SQL> подключить sys / oracle18c как sysdba;
Рисунок 129: Имитация ошибки «ORA-12547: TNS: потеря контакта» путем прямого вызова двоичного файла sqlplus.
Теперь установлено, что ошибка может быть повторно создана путем выполнения двоичного файла sqlplus
. В отсутствие исходного кода мы должны решать проблему любым оружием, оставшимся в нашем арсенале. В качестве первого шага попробуем сгенерировать информацию трассировки, описывающую последовательность событий, происходящих в двоичном файле sqlplus
.
5.16. Запустите команду strace
, чтобы сгенерировать информацию трассировки, необходимую для дальнейшего копания:
Чтобы сгенерировать файл трассировки, необходимый для дальнейшего исследования оператора CONNECT
, давайте воспользуемся strace
] вместе с sqlplus
, как показано ниже:
$ strace -f -o / tmp / strace.log $ ORACLE_HOME / bin / sqlplus / nolog
Задайте оператор CONNECT
в запросе SQL
следующим образом:
SQL> подключите sys / oracle18c как sysdba;
Рисунок- 130: Используйте команду strace, чтобы исследовать оператор CONNECT, вызванный из двоичного файла sqlplus.
Теперь используйте gedit
и откройте файл /tmp/strace.log
. После отслеживания всего файла проблемная область была идентифицирована, как показано на рисунке-131 ниже:
Рисунок-131: обнаружен «дамп ядра», записанный в файл 'strace.log'.
Прежде чем продолжить анализ «дампа ядра»
, давайте проверим, был ли сгенерирован файл core
в каталоге по умолчанию
с помощью следующих команд:
$ pwd
$ ls
Рисунок-132: Выходные данные подтверждают, что в каталоге «/ home / oracle» не был создан файл «core».
Узнайте, включено ли ядро, с помощью следующей команды:
$ ulimit -c
Рисунок 133: Выходные данные показывают, что «ядро» не включено.
Чтобы включить ядро, введите следующую команду:
$ ulimit -c unlimited
Рисунок 134: Включение генерации файла ядра.
Убедитесь, что ядро включено, с помощью следующей команды:
$ ulimit -c
Рисунок 135: Результат показывает, что создание файла ядра успешно включено.
Снова запустите команду strace
, как показано в начале этого раздела 5.16 , и убедитесь, что файл core
был успешно сгенерирован:
$ pwd
$ ls
Рисунок -136: Выходные данные показывают, что файл 'core' успешно сгенерирован
Теперь запустите отладчик gdb
следующим образом:
$ gdb -c core
Рисунок-137: Неопределенный символ в 'libpython3 .6m.so.1.0 'при вызове отладчика' gdb '.
Чтобы устранить ошибку поиска символа
, введите следующую команду для проверки зависимостей gdb
:
$ ldd / usr / bin / gdb
Рисунок-138: Выходные данные показывает, что только общий объект libexpat.so.1 был неправильно загружен из $ ORACLE_HOME / lib.
Из вывода about на рисунке 138 выше можно легко сделать вывод, что проблема связана с переменной среды LD_LIBRARY_PATH
.
Во-первых, введите следующую команду, чтобы найти правильный путь к libexpat.so.1
:
$ locate libexpat.so.1
Рисунок-139: Правильный путь к библиотеке для ' libexpat.so.1 'is' / lib / x86_64-linux-gnu / '
Определение текущего значения переменной среды LD_LIBRARY_PATH
:
$ echo $ LD_LIBRARY_PATH
Рисунок-140: '$ ORACLE_HOME / lib' появляется как первый член в 'значении' переменной окружения 'LD_LIBRARY_PATH'
Поскольку $ ORACLE_HOME / lib
кажется первым членом в LD_LIBRARY_PATH
, поэтому библиотека зависимостей libexpat.so.1
была загружена из $ ORACLE_HOME / lib
, а не из / lib / x86_64-linux-gnu
. {{1 }} Этот LD_LIBRARY_PATH
должен быть отключен до завершения анализа дампа ядра. Позже эта переменная среды LD_LIBRARY_PATH
должна быть восстановлена в исходное состояние.
Отредактируйте файл ~ / scripts / oenv.sh
(см. Раздел 5.2) и закомментируйте строку, содержащую LD_LIBRARY_PATH
, чтобы эта переменная автоматически сбрасывалась после перезагрузки.
Убедитесь, что строка закомментирована правильно, с помощью следующей команды:
$ cat ~ / scripts / oenv.sh | grep LD_LIBRARY_PATH
Рисунок-141: Символ комментария «#» появляется перед строкой, содержащей «LD_LIBRARY_PATH».
Перезагрузите систему.
Определите, что значение LD_LIBRARY_PATH
, пусто оно или нет, с помощью следующей команды:
$ echo $ LD_LIBRARY_PATH
Рисунок-142: Выходные данные показывают, что 'LD_LIBRARY_PATH' пусто, таким образом, правильно отключите, что хорошо.
Выполните следующую команду еще раз, чтобы проверить список зависимостей gdb
, чтобы убедиться, что libexpat.so.1
загружен с правильного пути:
$ ldd / usr / bin / gdb
Рисунок-143: Выходные данные показывают, что 'libexpat.so.1' правильно загружен из '/ lib / x86_64-linux-gnu'.
Теперь запустите отладчик gdb
и убедитесь, что он работает нормально:
$ gdb -c core
Рисунок 144: Отладчик 'gdb' работает нормально.
Введите команду bt
в приглашении gdb
, как показано ниже:
(gdb) bt
Рисунок-145: На экране показан результат выполнения команды 'bt' и заметьте, что результат слишком плох для анализа.
Результат команды bt
был слишком плохим, и нам требуется дополнительная информация
для анализа. Давайте попробуем другой метод
с помощью следующей команды:
$ gdb --core=core --exec=/oracle18c/app/oracle/product/18.0.0/dbhome_1/bin/oracle
Выполните команду bt
в приглашении gdb
:
(gdb) bt
Рисунок- 146: Результат, полученный с помощью приведенной выше команды, более многообещающий, чем на рисунке-145.
Функция tzset ()
устанавливает информацию о преобразовании времени, используемую localtime ()
и связанными функциями.
Кроме того, localtime ()
является не поточно-ориентированный, потому что он возвращает указатель (struct tm *)
на статическую структуру данных (см.
заголовок для получения дополнительных сведений), в котором содержится результат.
Давайте еще раз рассмотрим /tmp/strace.log
:
Рисунок-147 : Файл "/ etc / localtime" был последним, к которому обращались до сбоя (дамп ядра).
Файл "/ etc / localtime"
был последним, к которому осуществлялся доступ до сбоя (дамп ядра). С самого начала до дампа ядра к этому файлу "/ etc / localtime"
обращались дважды.Это показывает состояние тупика, потому что localtime ()
вводится рекурсивно (во второй раз) из-за обработки некоторого сигнала, а localtime ()
не является реентерабельным или потокобезопасным, поэтому он блокирует замок.
Мы можем сделать вывод, что ядро Oracle
дает сбой в различных libc
функциях ( Стандартная библиотека для языка программирования C
), например местное время ().
Что такое ядро Oracle?
В Ubuntu linux каждый клиентский процесс Oracle, такой как sqlplus или Toad
, подключается к tnslsnr
, который fork ()
, а затем exec ()
бинарный «$ ORACLE_HOME / bin / oracle»
, называемый программой ядра oracle
. Этот двоичный файл также широко известен как Oracle Server Process
. См. рисунок-121
в [ раздел-5.6 ].
Давайте отобразим системный вызов execve
, вызывающий двоичный файл oracle
, записанный командой strace
в /tmp/strace.log
.
Рисунок-148: Бинарный «oracle» ядра Oracle, вызываемый системным вызовом «execve».
Итак, программа ядра Oracle
вызывала дамп ядра
, и для решения этой проблемы необходимо удалить заглушки libc *
. а затем заново собрать двоичный файл ядра Oracle $ ORACLE_HOME / bin / oracle
.
Для выполнения этой задачи введите следующие команды:
$ cd $ORACLE_HOME/lib/stubs
$ ls -l libc*
$ rm libc*
$ cd $ORACLE_HOME/bin
$ ./relink all
Рисунок-149: Перестройте программу ядра Oracle "$ ORACLE_HOME / bin / oracle" заново, выполнив команду "./ relink all "и просмотрите получившийся файл журнала.
После восстановления проверьте его файл журнала $ ORCALE_HOME / install / relink_2019-02-26_08-27.log
, чтобы убедиться, что все повторные сборки выполнены успешно.
Выполните команду strace
еще раз и давайте проверим, что наш главный злодей «ORA-12547: TNS: потерян контакт»
все еще сохраняется!
$ strace -f - o /tmp/strace.log $ ORACLE_HOME / bin / sqlplus / nolog
Проблема Оператор CONNECT
в приглашении SQL следующим образом:
SQL> подключить sys / oracle18c как sysdba;
Рисунок- 150: Наш главный злодей «ORA-12547: TNS: потерянный контакт» наконец исчез и заменен на «бездействующий экземпляр».
Бинго! Наш главный злодей «ORA-12547: TNS : lost contact "
наконец-то исчез!
Оператор connect
был успешно выполнен, также был сгенерирован неактивный экземпляр
.
5.17. Повторно запустить Скрипты, сгенерированные из DBCA
для создания Oracle 18c Da tabase:
Чтобы отобразить список сценариев, необходимых для создания базы данных, введите следующие команды:
$ cd /oracle18c/app/oracle/admin/orcl/scripts
$ ls -l *.sql
Рисунок-151: Список сценариев, сгенерированных 'DBCA', необходимых для создания базы данных oracle 18c.
Убедитесь, что слушатель
уже запущен и работает, с помощью следующей команды:
$ ss -elpunt | grep -E "^ Net | tnslsnr" | column -t
Рисунок-152: Прослушиватель Oracle работает и прослушивает порт 1521.
Что касается [см. раздел-4.2 и рисунок 113], давайте еще раз попытаемся создать базу данных Oracle 18c, запустив сценарии, сгенерированные из DBCA
, и будем надеяться, что на этот раз база данных будет успешно создана!
$ cd /oracle18c/app/oracle/admin/orcl/scripts
$ . orcl.sh | tee ~/Documents/create_database_scripts.log
Рисунок-153: Создание базы данных oracle 18c успешно началось! Обратите внимание на появление «незанятого экземпляра» внутри красного ящика.
Давайте посмотрим на скриншот завершения создания базы данных ниже:
Рисунок-154: Создание базы данных oracle 18c завершилось успешно!
Давайте посмотрим на службы , поддерживаемые прослушивателем
, с помощью следующей команды:
$ lsnrctl status
Рисунок-155: Службы, поддерживаемые «прослушивателем».
Давайте проверим версию Oracle
с помощью следующей команды:
$ sqlplus / as sysdba
SQL> select instance_name, version from v$instance;
Рисунок-156: Отображение версии Oracle.
Давайте отобразим Баннер Oracle
с помощью следующей команды:
$ sqlplus / as sysdba
SQL> select banner from v$version;
Рисунок-157: Отображение Баннера Oracle.
6.1. Настройте файл / etc / oratab
.
Приложение «/ etc / oratab»
файл, устанавливающее флаг перезапуска для каждого экземпляра на 'Y'
.
$ echo 'orcl:/oracle18c/app/oracle/product/18.0.0/dbhome_1:Y' | sudo tee -a /etc/oratab
Рисунок-158: Добавление файла «/ etc / oratab» с флагом перезапуска.
Отобразите содержимое файла «/ etc / oratab»
с помощью следующей команды:
$ cat / etc / oratab
Рисунок-159: Содержимое файла «/ etc / oratab» .
6.2. Запустите PDB
вместе с экземпляром базы данных.
Переменные среды DATA_DIR
и PDB_NAME
, необходимые для настройки PDB
, уже экспортированы через ~ / scripts / oenv.sh
.Введите следующую команду для проверки:
$ env | egrep 'DATA_DIR = | PDB_NAME ='
Рисунок 160: переменные среды 'PDB_NAME' и 'DATA_DIR' уже установлены.
Затем убедитесь, что экземпляр базы данных запущен и работает.
Если это не так, вызовите следующий файл сценария для запуска:
$. ~ / скрипты / ora_start.sh
Примечание : чтобы узнать о скрипте ora_start.sh
, обратитесь к [ section-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
Рисунок-161: Подключаемая база данных запускается вместе с экземпляром базы данных.
6.3. Восстановите LD_LIBRARY_PATH
до исходного значения.
Напомним, что LD_LIBRARY_PATH
был отключен (см. Рисунки-137 и 138) в ~ / scripts / oenv.sh
.
Теперь мы должны восстановить его, удалив символ # комментария
в строке содержит строку LD_LIBRARY_PATH
с использованием любого редактора. Чтобы убедиться, что изменение внесено, введите следующую команду:
$ cat ~ / scripts / oenv.sh | grep LD_LIBRARY_PATH
Рисунок-162: Переменные среды 'LD_LIBRARY_PATH' восстанавливаются до своего исходного значения путем удаления символа комментария '#' (сравните с рисунком-140).
6.4. Включите брандмауэр.
В раздел-1.12 брандмауэр был отключен, что было обязательным условием. Теперь его можно восстановить. Чтобы включить брандмауэр, введите следующую команду:
$ sudo ufw enable
Рисунок-163: Брандмауэр успешно включен.
Чтобы проверить состояние межсетевого экрана, введите следующую команду:
$ sudo ufw status
Рисунок-164: Состояние межсетевого экрана активно
6.5. Скрипты запуска / остановки для базы данных.
Важно напомнить, что переменные среды Oracle уже были установлены с помощью файла ~ / scripts / oenv.sh
и добавлены в файл ~ / .bashrc
для выполнения при входе в систему . См. Раздел 5.2.
Создайте два сценария ora_start.sh
и ora_stop.sh
соответственно, которые можно вызвать как службу запуска / выключения
.
Теперь создайте 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) вы должны иметь возможность запускать / останавливать
базу данных с помощью следующих скриптов, запускаемых после входа в систему в качестве оракула. Пользователь.
Чтобы запустить Oracle Database Service, запустите сценарий ora_start.sh
:
$. ~ / scripts / ora_start.sh
Рисунок 165: Запуск сценария 'ora_start.sh' для запуска экземпляра базы данных
Чтобы завершить работу службы базы данных Oracle, запустите сценарий ora_stop.sh
:
$ . ~ / scripts / ora_stop.sh
Рисунок-166. Запустите сценарий ora_stop.sh, чтобы завершить работу экземпляра базы данных
6.6. Создайте список псевдонимов для oracle.
Создайте список псевдонимов, подходящих для 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
Рисунок 167: Очень полезный список псевдонимов для oracle.
Вы увидите список псевдонимов
для oracle, отображаемый на экране.
Ликование и радость вызвало не только успешную установку Oracle-18c (Enterprise Edition) на Ubuntu 18.04, но и « приручение » Oracle Software
для совместной работы. существуют вместе со всеми другими установленными программными пакетами в разделе / opt
(см. рисунок 57)
!
На этом установка Oracle 18c (Enterprise Edition)
в Ubuntu 18.04 завершена! Наслаждайтесь Oracle 18c (Enterprise Edition)
!!
Во время моей попытки установить Oracle 18c (Enterprise Edition) на человечности 18.04, я столкнулся с препятствиями на каждом шаге. Необходимо продолжать разрешать каждое препятствие, как это появляется, и продвинуться вперед. Если у Вас не будет упорства, то Вы сдадитесь!
Поскольку этот процесс установки для Oracle 18c (Enterprise Edition) на Ubuntu 18.04 так долго состоит из 167 снимков экрана с очень подробными инструкциями (88 pages of Microsoft Word document containing both instructions and screenshots
). Мне потребовались более чем 2 месяца непрерывной работы для устанавливания его и успех вкуса!
Я смущаюсь выводить весь материал на этой сессии ответа сразу. Я уверен, что это создаст беспорядок и не может служить намеченной цели.
Мое намерение состоит в том, что этот материал должен достигнуть и принести пользу каждому читателю, которому нужен он!
То, что я предлагаю, должно разделить весь материал на 5 сессий ответа (части) и выпустить их один за другим следующим образом:
1. Выгодная партия: предварительная установка.
oracle
, настройте безопасный Linux и отключите THP (Прозрачные Огромные Страницы)./etc/hosts
файл, и /etc/resolv.conf
файл и отключает брандмауэр.2. Вторая часть: создание пользователя Oracle и групп.
db_home.zip
с веб-сайта оракула.particularly linker/loader flags suitable for Ubuntu Linux platform
) которые требуются, чтобы создавать двоичные файлы динамично во время процесса установки программного обеспечения базы данных, выполненного runInstaller
(Oracle установщик Universal) в части-III.3. Часть-III: программное обеспечение базы данных и установка слушателя.
runInstaller
в интерактивном режиме.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: поиск и устранение неисправностей и после установки.
Version
и Banner
использование sqlplus
продемонстрированы как доказательство успешной установки.start/stop
сценарии оболочки, настроить /etc/oratab
, настройте PDB для запуска наряду с экземпляром базы данных, включив брандмауэр, восстановив LD_LIBRARY_PATH
и создание полезного оракула alias
список.Давайте начнем со Второй части сессии ответа.
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, owner/user 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.
Разве Вы не создали "Другие Группы" [разделяют 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. Добавьте пользовательского оракула в 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.
Oracle 18.c будет установлена на /opt/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 /
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
Создайте базовый каталог оракула (не используйте sudo) со следующей командой:
$ mkdir -p /oracle18c/app/oracle
$ exit
2.2.3. Каталог Oracle Inventary
Каталог 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, и Вы устанавливаете $ORACLE_BASE
для пользовательского оракула к пути /oracle18c/app/oracle
перед установкой и предоставлением 755
полномочия оракулу для того пути, затем Oracle Установщик Universal (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
Войдите в систему как в пользователя оракула или используйте эту команду:
$ 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 db_home.zip
, сначала необходимо подписаться с Oracle Corporation и получить a 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.
Моя система является a dual-booted
рабочий стол с SSD на 250 ГБ (Windows-10 installation
), другой SSD на 120 ГБ (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.
Управление и изменение 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
Это - конец Второй части установки, и следующая Часть-III начнется впоследствии, который состоит из:
1) Installation of database software by runInstaller interactively.
2) Installation of Listener silently using response file 'rsp'.