programing

Apple M1에서 Oracle 12c 도커 설정

bestprogram 2023. 7. 21. 21:46

Apple M1에서 Oracle 12c 도커 설정

M1 Mac, Oracle db in docker는 도커입니다.저는 두 개의 이미지를 모두 시도했습니다.store/oracle/database-enterprise:12.2.0.1-slim그리고.container-registry.oracle.com/database/enterprise:12.2.0.1-slim하지만 같은 오류가 발생합니다.

docker run -d -it --name oracle -v $(pwd)/db/oradata:/ORCL store/oracle/database-enterprise:12.2.0.1-slim

나는 또한 비슬림 버전을 시도했고 그리고 그것을 제공함으로써.--platform linux/amd64도커 명령으로.결과는 동일합니다.

의 결과는 다음과 같습니다.docker logs -f oracle

Setup Oracle Database
Oracle Database 12.2.0.1 Setup
Sat Jul 31 18:44:14 UTC 2021

Check parameters ......
log file is : /home/oracle/setup/log/paramChk.log
paramChk.sh is done at 1 sec

untar DB bits ......
log file is : /home/oracle/setup/log/untarDB.log
untarDB.sh is done at 29 sec

config DB ......
log file is : /home/oracle/setup/log/configDB.log
Sat Jul 31 18:44:42 UTC 2021
Start Docker DB configuration
Call configDBora.sh to configure database
Sat Jul 31 18:44:42 UTC 2021
Configure DB as oracle user
Setup Database directories ...

SQL*Plus: Release 12.2.0.1.0 Production on Sat Jul 31 18:44:43 2021

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

ERROR:
ORA-12547: TNS:lost contact


Enter user-name: SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
      <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Enter user-name: Enter password: 
ERROR:
ORA-12547: TNS:lost contact


SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
update password

Enter password for SYS: 
create pdb : ORCLPDB1

SQL*Plus: Release 12.2.0.1.0 Production on Sat Jul 31 18:44:43 2021

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

ERROR:
ORA-12547: TNS:lost contact


Enter user-name: SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
      <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Enter user-name: SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
      <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
Reset Database parameters

SQL*Plus: Release 12.2.0.1.0 Production on Sat Jul 31 18:44:43 2021

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

ERROR:
ORA-12547: TNS:lost contact


Enter user-name: SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
      <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Enter user-name: Enter password: 
ERROR:
ORA-12547: TNS:lost contact


SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 31-JUL-2021 18:44:44

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/12.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/12.2.0/dbhome_1/admin/ORCLCDB/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/989db909d8df/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                31-JUL-2021 18:44:44
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/admin/ORCLCDB/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/989db909d8df/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

DONE!
Remove password info
Docker DB configuration is complete !
ERROR : config DB failed, please check log /home/oracle/setup/log/configDB.log for details!
OS process OFSD (ospid 188) idle for 30 seconds, exiting
2017-08-09T10:36:20.752530+00:00
ARCH: Archival disabled due to shutdown: 1090
Shutting down archive processes
Archiving is disabled
JIT: pid 563 requesting stop
2017-08-09T10:36:20.815635+00:00
Stopping background process VKTM
2017-08-09T10:36:26.581058+00:00
Instance shutdown complete (OS id: 563)
/usr/bin/tail: inotify cannot be used, reverting to polling: Function not implemented

M1 또는 I 구성의 문제입니까?

M1 Mac의 Oracle 데이터베이스

이건 정말 바보같은..Oracle Database는 MacOS에서 지원되지 않지만 Docker가 Linux를 가상화하는 경우 지원될 수 있습니다.안타깝게도 Docker는 M1 Mac ARM 가상화를 지원하지만 Oracle Database는 Docker와 Rosetta 2가 처리할 수 없는 일부 낮은 수준의 커널 호출에 크게 의존합니다.따라서 로컬에서 실행할 수 있는 유일한 솔루션인 전체 에뮬레이션(가상 시스템)을 사용할 수 있습니다.

  1. 홈브루와 함께 리마를 설치합니다.리마는 비공식적인 "Linux용 macOS 서브시스템"의 일종으로, ARM MacOS 위에서 x86 OS를 실행하는 것과 같은 다양한 아키텍처로 VM을 실행하는 것을 지원합니다.
brew install lima
  1. 새 Impish Ubuntu 가상 시스템 생성(기본값):
limactl start
  1. 구성을 재정의하려면 편집기 열기를 선택합니다.
  2. 기본 편집기(vi)를 사용하여 아치 필드를 다음과 같이 수정합니다.i " 삽모드로들변면경다니합려어가입다"를 변경합니다.ESC모드로 ,:wq종료하고 저장합니다.
arch: "x86_64"
  1. 새로 생성된 기본 리마 VM을 실행하고 디렉토리를 새 VM의 홈 디렉토리로 변경합니다. 이 디렉토리를 통과하는 모든 명령은 별도로 지정되지 않은 한 새로 시작된 셸에서 실행해야 합니다.
lima
cd ~
  1. 리마 VM에 Ubuntu용 도커를 설치합니다.
  2. 사용자를 도커 그룹에 추가하고 루트 액세스 없이 도커 명령을 실행할 수 있도록 변경 사항을 활성화합니다.
sudo usermod -aG docker $USER
newgrp docker
  1. 도커 허브에서 이미지 실행
docker login
docker run -d -p 1521:1521 --name oracle store/oracle/database-enterprise:12.2.0.1
  1. 기본값으로 연결
username/password@SID: sys/Oradoc_db1@ORCLCDB

누군가가 여전히 이 문제로 어려움을 겪고 있다면, 저는 더 좋고 직접적인 해결책을 찾았습니다.

  1. 홈브루 설치
  1. 콜리마 설치
  • 양조 설치 콜리마
  1. 도커 설치
  • 양조 설치 도커
  1. x86_64 아키텍처를 설정하여 Colima 시작
  • colima start --memory 8 --arch x86_64
  1. 테스트 도커
  • 도커 운영 헬로 월드

참고: 도커 데스크톱과 함께 도커와 관련된 모든 것을 시스템에서 청소해야 합니다. 이 경우 도커 데스크톱은 필요하지 않습니다.

시간을 투자한 결과, 제가 테스트하고 작업한 내용과 저를 위해 작업하지 않은 내용이 있습니다.

  • 리마 - 저에게는 효과가 없었습니다.제가 알기로는 리마는 큐무 포장지입니다.그래서 이론적으로는 효과가 있어야 하지만, 저는 이 공개된 문제에 대해 설명한 것과 같은 문제를 가지고 있었습니다: https://github.com/lima-vm/lima/issues/713#issuecomment-1064151675 .

  • 다중 경로 - 작동하지 않습니다.다중 경로는 Ubuntu의 VM입니다.문제는 현재로서는 크로스 아키텍처를 지원하지 않는다는 점입니다.동일한 아키텍처(arch64)에 대한 vms만 생성할 수 있으며 오라클은 이 아키텍처에서 실행되지 않습니다.

  • Qemu 다이렉트.이것이 저에게 효과적인 유일한 옵션입니다. 여기에 나와 있는 단계에 관심이 있다면 다음과 같습니다.

  1. brew install qemu utm

obs.: utm은 복잡한 명령을 몰라도 qemu를 실행할 수 있는 그래픽 도구입니다.

  1. 원하는 amd64 Linux iso를 다운로드합니다.

나의 경우, 그것은 우분투 서버였습니다(AMD64용인지만 확인하세요).

  1. 자동으로 새 에뮬레이터를 만들고 다운로드한 이미지를 선택합니다.

저는 기계 아키텍처에 대해 첫 번째로 사용 가능한 것(2009년 라벨)을 선택했습니다. (기본값)으로 태그가 지정된 것이 있지만 너무 느립니다. 이것은 피하십시오.

저는 CPU 코어 2개, 4G 메모리로 충분했습니다.

공유 폴더의 경우 액세스하는 방법이 간단하지 않기 때문에 호스트/게스트 시스템 간에 파일을 전송하는 데는 scp가 충분했습니다.

  1. 설치 프로세스를 통과하고 로그인했으면 도커를 설치합니다.

https://docs.docker.com/engine/install/ubuntu/

추가::sudo apt-get install docker-compose

  1. 오라클 도커 이미지를 로드하고 실행합니다.

볼륨이 구성된 경우 볼륨에 대한 액세스 권한을 부여해야 합니다(chmod).

  1. 즐기세요 :)

M2 맥북 에어에 콜리마를 사용했는데 완벽하게 작동합니다.

brew install colima
brew install docker
colima start --memory 4 --arch x86_64
docker run -e ORACLE_PASSWORD=pass -p 1521:1521 -d gvenzl/oracle-xe

Oracle 19c를 사용할 수 있다면 이제 ARM 네이티브 버전이 있습니다.

https://www.oracle.com/database/technologies/oracle19c-linux-arm64-downloads.html 에서 다운로드할 수 있습니다.

도커 이미지 구축 지침은 https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance 에서 확인할 수 있습니다.

다음은 나를 위한 것입니다.

  1. CDB 이름은 변경할 수 없습니다.
  2. 도메인 이름을 사용하도록 유선 연결되어 있습니다.
  3. 암호는 특수 문자와 대소문자 8자 이상을 혼합해야 합니다.
docker run -d --name 12c \
--privileged \
--memory=4096M \
-p 1512:1521/tcp -p 5512:5500/tcp \
-e DB_SID=ORCLCDB \
-e DB_PDB=ORCLPDB \
-e DB_DOMAIN=localdomain \
-e DB_PASSWD=Password@2 \
-v ${HOME}/containers/storage/oracle/EE12201/u02/app/oracle:/ORCL/u02/app/oracle \
-v ${HOME}/containers/storage/oracle/EE12201/u03/app/oracle:/ORCL/u03/app/oracle \
-v ${HOME}/containers/storage/oracle/EE12201/u04/app/oracle:/ORCL/u04/app/oracle \
container-registry.oracle.com/database/enterprise:12.2.0.1

여기에는 두 가지 문제가 있습니다.

  1. Oracle Database는 ARM 프로세서에서 지원되지 않으며 Intel에서만 지원됩니다.다음을 참조하십시오. https://github.com/oracle/docker-images/issues/1814
  2. Oracle Database Docker 이미지는 Oracle Linux 7 또는 Red Hat Enterprise Linux 7을 호스트 OS로 사용하는 경우에만 지원됩니다.다음을 참조하십시오. https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance

오라클 Database...는 오라클 리눅스 7 및 RHEL(Red Hat Enterprise 리눅스) 7에서 지원됩니다.자세한 내용은 My Oracle 지원 노트를 참조하십시오.도커에서 실행되는 데이터베이스에 대한 Oracle 지원(Doc ID 2216342.1)

참조된 My Oracle Support Doc ID는 Docker 이미지의 데이터베이스 이진 파일이 Oracle Linux 호스트용으로 구축되었으며 Red Hat에서도 작동한다고 말합니다.바로 그겁니다.

Docker는 프로세스 수준의 가상화를 제공하기 때문에 기본 호스트 OS에서 커널 및 기타 OS 라이브러리를 제거합니다.Oracle Linux용으로 구축된 Docker 이미지에는 Oracle Linux 호스트가 필요하지만 Oracle Linux OS는 함께 제공되지 않습니다.도커를 사용하거나 사용하지 않는 모든 오라클 데이터베이스 리눅스에는 오라클 리눅스 또는 Red Hat 리눅스만 지원됩니다.Ubuntu, Mac OS, Debian 또는 기타 *NIX 버전은 작동 중인 것으로 해킹되거나 프로세스가 정상적으로 작동하는 것으로 보이더라도 예측 가능한 신뢰할 수 있는 결과를 제공하지 않습니다.

언급URL : https://stackoverflow.com/questions/68605011/oracle-12c-docker-setup-on-apple-m1