#docker #oracle18c
#докер #oracle18c
Вопрос:
Я попытался создать образ докера для Oracle 18c xe, используя эти ссылки ниже:
Создайте образ докера Oracle 1 Блог Oracle для образа докера
Затем я попытался использовать приведенную ниже команду для решения проблемы с помощью этой ссылки на странице проблем Oracle Github, а также добавил комментарий внизу той же страницы: docker run --name mydb --cpuset-cpus="0-7" -p 51521:1521 -p 55500:5500 -e ORACLE_PWD=mysecurepassword -e ORACLE_CHARACTERSET=AL32UTF8 oracle/database:18.4.0-xe
и он все еще не работает! Он выдает ту же ошибку, что и ниже:
docker logs 701720e132af
ORACLE PASSWORD FOR SYS AND SYSTEM: Password1_One
Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:
Configuring Oracle Listener.
Listener configuration succeeded.
Configuring Oracle Database XE.
Enter SYS user password:
***************
Enter SYSTEM user password:
************
Enter PDBADMIN User Password:
**************
Prepare for db operation
7% complete
Copying database files
8% complete
[WARNING] ORA-00821: Specified value of sga_target 600M is too small, needs to be at least 632M
ORA-01078: failure in processing system parameters
9% complete
[FATAL] ORA-01034: ORACLE not available
29% complete
100% complete
[FATAL] ORA-01034: ORACLE not available
7% complete
0% complete
Look at the log file "/opt/oracle/cfgtoollogs/dbca/XE/XE.log" for further details.
Database configuration failed. Check logs under '/opt/oracle/cfgtoollogs/dbca'.
mv: cannot stat '/opt/oracle/product/18c/dbhomeXE/dbs/spfileXE.ora': No such file or directory
The Oracle base remains unchanged with value /opt/oracle
#####################################
########### E R R O R ###############
DATABASE SETUP WAS NOT SUCCESSFUL!
Please check output for further info!
########### E R R O R ###############
#####################################
The following output is now a tail of the alert.log:
tail: cannot open '/opt/oracle/diag/rdbms/*/*/trace/alert*.log' for reading: No such file or directory
tail: no files remaining
Построение изображений завершается успешно, когда я использую приведенную ниже команду:
docker build --force-rm=true
--no-cache=true
--shm-size=1G
--build-arg DB_EDITION=xe
-t oracle/database:18.4.0-xe
-f Dockerfile.xe .
Затем я вижу изображение, как показано ниже:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 18.4.0-xe fe0fe8a16d63 17 minutes ago 5.89GB
Указание количества используемых процессоров работало раньше, но мне пришлось отформатировать свой MacBook Pro 16 «(2019), который теперь использует последнюю версию Catalina 10.15.7, 8-ядерный процессор Intel i9 2,4 ГГц и 64 ГБ оперативной памяти. Пожалуйста, помогите, так как мне ЭТО ДЕЙСТВИТЕЛЬНО нужно для тестирования и практики. Спасибо!
P.S: даже когда я использовал предоставленный сценарий сборки в проекте GitHub, я все равно получаю ту же ошибку!
Ответ №1:
У меня такая же проблема в Mac OS X с Catalina с помощью Docker Desktop и docker-compose. Сбой контейнера при первоначальном запуске.
Но я заставил его работать, если уменьшил количество процессоров, выделенных для Docker Desktop, до 1: ресурсы рабочего стола Docker
При наличии только 1 доступного процессора я смог запустить контейнер, и база данных была инициализирована правильно. После первоначального запуска я мог бы остановить Docker Desktop, увеличить количество процессоров до исходного значения (8) и перезапустить ранее инициализированный контейнер. Немного громоздко, но это работает. Я
Комментарии:
1. Здравствуйте, спасибо за ваш ответ и с новым годом вас! Я попробовал это, но все равно не повезло. Это немного расстраивает, если не сказать больше, честно, особенно после обновления до Big Sur в конце прошлого года.
2. Спасибо, это помогло мне и на Mac. Также помогает увеличение объема оперативной памяти вместо уменьшения количества процессоров.
Ответ №2:
Я нахожу огромное решение, добавив эту строку в Dockerfile :
RUN sed -i 's/$MEMORY_CONSTRUCT/-initParams sga_target=1968M,pga_aggregate_target=80M/' /etc/init.d/oracle-xe-18c
Перед
RUN /etc/init.d/oracle-xe-18c configure
Таким образом, он переопределяет вычисленную переменную MEMORY_CONSTRUCT в функции configure_perform() сценария запуска Oracle.
Комментарии:
1. Привет! Пожалуйста, не могли бы вы сказать мне, какой именно файл docker вы обновили с помощью этого кода? Я не нашел конкретный файл при поиске. Спасибо!
2. Здравствуйте, я использую это: hub.docker.com/r/quillbuilduser/oracle-18-xe
3. Хорошо, я попытаюсь использовать это изображение и свяжусь с вами, если оно сработает. Я создал свой, используя официальный файл dockerFile, поэтому я не смог найти строки, которые вы упомянули.