인프런 커뮤니티 질문&답변

Yuuri님의 프로필 이미지

작성한 질문수

상태: 실패 -테스트 실패: IO 오류: The Network Adapter could not establish the connection / docker-oracle / MAC m1 오류질문드립니다

24.01.09 10:30 작성

·

822

·

수정됨

0

안녕하세요

현재 docker 를 사용하여 oracle 11g를 이용중인데요

이미지는 jaspeen/oracle-xe-11g 를 사용중입니다

기존에 sql developer와 dbeaver에 연결해서 잘 사용했는데

2~3일 전부터 갑자기 연결이안되며

sql과 dbeaver 모두 오류 메세지는

 

상태: 실패 -테스트 실패: IO 오류: The Network Adapter could not establish the connection (CONNECTION_ID=/DJQ/0BASUOpP2bmPQF+LQ==)

 

라고 나옵니다 .

지피티랑 구글링해서 리스너 재부팅, pc 및 docker 재부팅,

docker container 삭제, images삭제 후 재설치를 해봤고 container 내부에서 sqlplus접속시 정상확인까지 되었습니다

 

처음 이런 상황이 나타났을때 container 삭제 후 다시 생성하여 run을 했을때 하루만 잘 되고 그 다음부턴 안되더라구요, 그러면서 지금까지 안되는데

mac에 방화벽도 꺼논 상태입니다,

혹시몰라서 docker 내부ip로 ping을 찍어보니 안들어가더라구요 ㅠㅠ

검색을 해봐도 답이 나오지 않아 질문드립니다

 

 

아 그리고 저는 mac M1 소노바 버전의 OS를 사용중이고

iterm에서 colima를 실행 후 docker 로그인을 하고 docker container를 run한 뒤 sql에 접속시도를 합니다.

 

 


>  traceroute 172.17.0.2
traceroute to 172.17.0.2 (172.17.0.2), 64 hops max, 52 byte packets
 1  192.168.0.1 (192.168.0.1)  1.042 ms  0.677 ms  0.532 ms
 2  * 1.220.247.73 (1.220.247.73)  6.970 ms  3.328 ms
 3   *
❯ docker exec -it f3f97467c2d9 /bin/bash

root@f3f97467c2d9:/# cat $ORACLE_HOME/network/admin/listener.ora
# listener.ora Network Configuration File:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = f3f97467c2d9)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)
root@f3f97467c2d9:/# cat $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = f3f97467c2d9)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
root@f3f97467c2d9:/# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	f3f97467c2d9
root@f3f97467c2d9:/# docker network inspect bridge
bash: docker: command not found
❯ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags               Netif Expire
default            192.168.0.1        UGScg                 en7
default            192.168.0.1        UGScIg                en0
127                127.0.0.1          UCS                   lo0
127.0.0.1          127.0.0.1          UH                    lo0
169.254            link#22            UCS                   en7      !
169.254            link#15            UCSI                  en0      !
192.168.0          link#22            UCS                   en7      !
192.168.0          link#15            UCSI                  en0      !
192.168.0.1/32     link#22            UCS                   en7      !
192.168.0.1        58:86:94:45:ab:6c  UHLWIir               en0   1192
192.168.0.1/32     link#15            UCSI                  en0      !
192.168.0.1        70:5d:cc:89:fb:86  UHLWIir               en7   1197
192.168.0.2        7a:d2:47:3b:e1:db  UHLWI                 en0    833
192.168.0.6/32     link#22            UCS                   en7      !
192.168.0.13       f6:58:dc:37:c2:59  UHLWI                 en0   1019
192.168.0.16       aa:fb:4d:aa:d0:52  UHLWIi                en0     45
192.168.0.29       c8:89:f3:ea:52:fe  UHLWI                 en0      !
192.168.0.29       link#22            UHRLWI                en7      !
192.168.0.41       f8:32:e4:6e:24:b1  UHLWI                 en7    863
192.168.0.44       9e:4:88:a8:ee:21   UHLWI                 en0      !
192.168.0.46       24:f5:aa:e3:74:17  UHLWI                 en0   1048
192.168.0.53       24:f5:aa:ad:61:fd  UHLWIi                en7    666
192.168.0.237      link#15            UHLWI                 en0      !
192.168.0.243      ee:92:a0:b4:c2:36  UHLWI                 en0      !
192.168.0.244/32   link#15            UCS                   en0      !
192.168.0.250      e2:f1:36:56:16:8c  UHLWI                 en0     42
192.168.0.255      ff:ff:ff:ff:ff:ff  UHLWbI                en0      !
192.168.0.255      ff:ff:ff:ff:ff:ff  UHLWbI                en7      !
224.0.0/4          link#22            UmCS                  en7      !
224.0.0/4          link#15            UmCSI                 en0      !
224.0.0.251        1:0:5e:0:0:fb      UHmLWI                en0
239.255.255.250    1:0:5e:7f:ff:fa    UHmLWI                en0
239.255.255.250    1:0:5e:7f:ff:fa    UHmLWI                en7
255.255.255.255/32 link#22            UCS                   en7      !
255.255.255.255/32 link#15            UCSI                  en0      !

❯ docker logs f3f97467c2d9

ls: cannot access /u01/app/oracle/oradata: No such file or directory
Database not initialized. Initializing database.
Setting up:
processes=500
sessions=555
transactions=610
If you want to use different parameters set processes, sessions, transactions env variables and consider this formula:
processes=x
sessions=x*1.1+5
transactions=sessions*1.1

Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express
Edition.  The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts.  Press <Enter> to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:
Specify a port that will be used for the database listener [1521]:
Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of
different passwords for each database account.  This can be done after
initial configuration:
Confirm the password:

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:
Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.
Database initialized. Please visit http://#containeer:8080/apex to proceed with configuration
Oracle Database 11g Express Edition instance is already started

Database ready to use. Enjoy! ;)
found files in /u01/app/oracle/oradata Using them instead of initial database
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.

Database ready to use. Enjoy! ;)
❯ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
f64dbd9c8662   bridge    bridge    local
bf969278eafc   host      host      local
8bd6a228426c   none      null      local

    ~ ································································································ at 09:57:03 AM 
❯ docker ps
CONTAINER ID   IMAGE                   COMMAND             CREATED        STATUS          PORTS                                                                                  NAMES
f3f97467c2d9   jaspeen/oracle-xe-11g   "/entrypoint.sh "   13 hours ago   Up 43 minutes   0.0.0.0:1521->1521/tcp, :::1521->1521/tcp, 0.0.0.0:9000->8080/tcp, :::9000->8080/tcp   oracle_test
❯ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "f64dbd9c866234bd839a9186fb4e6f1fed5ba44f1d3aad8b5fa655bde43ec66f",
        "Created": "2024-01-09T00:03:29.47448243Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "f3f97467c2d91e47c20dfafa5c792415e3ff88c9e07891166caa9e556bc81d95": {
                "Name": "oracle_test",
                "EndpointID": "32dd002a0e72585d45e79af1bd9bf4f196ed3e77b84b8782b75c8ac2f14157b0",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 01. 10. 10:37

안녕하세요, 인프런 AI 인턴입니다.
Yuuri님, Docker에서 Oracle 11g 연결 문제가 발생한 것으로 이해했습니다.

Docker 컨테이너와의 연결 문제를 해결하기 위한 일반적인 접근 방법 몇 가지를 추천드립니다:

  1. 네트워크 확인:

    • Docker 네트워크 설정을 확인해보시고, docker0 브리지 네트워크가 제대로 설정되어 있는지 검토하세요. 또한 Docker 내부에서 ping이 안 되는 경우 네트워크 문제일 수 있으므로 좀 더 깊은 네트워크 연결성 검사가 필요할 수 있습니다.
  2. 포트 상태 확인:

    • 호스트 시스템에서 1521 포트가 Oracle 컨테이너에 바인딩되어 있고 외부에서 접근 가능한지 확인하세요. netstat -tuln 또는 lsof -i :1521 명령어를 사용하여 포트 상태를 체크할 수 있습니다.
  3. 방화벽 설정 검토:

    • macOS 방화벽 설정을 다시 한번 확인해보세요. 방화벽이 비활성화되어 있다고 하셨지만, 혹시나 다른 네트워크 관련 보안 소프트웨어나 설정이 문제를 일으킬 수도 있습니다.
  4. 컨테이너 로그 확인:

    • docker logs 명령어를 통해 컨테이너 내부에서 발생하는 오류를 확인하세요. 문제가 되는 서비스의 오류 메시지를 볼 수 있을 것입니다.
  5. 컨테이너의 네트워크 설정 재검토:

    • listener.oratnsnames.ora 파일 설정을 다시 한번 점검해보세요. 이 파일들에 지정된 호스트 이름이나 IP가 컨테이너의 현재 설정과 일치하는지 확인하십시오.
  6. Oracle 서비스 상태 확인:

    • 컨테이너 내부에 들어가서 Oracle 서비스가 정상적으로 실행되고 있는지 확인하세요. sqlplus를 사용하여 로컬에서 접근이 가능한지도 시험해보실 수 있습니다.

Oracle 11g를 Docker에서 실행할 때 특히 네트워킹 및 포트 관련 이슈가 자주 발생합니다. 위의 접근 방법들로 문제를 해결할 수 없다면, 보다 구체적인 설정이나 로그와 함께 Docker와 Oracle 커뮤니티에 문의하여 추가적인 지원을 받아보실 것을 권장드립니다.

M1 Mac을 사용 중이시라 하셨는데, Docker가 M1 칩 호환 문제가 없는지도 검토해 보실 필요가 있겠습니다.

이러한 문제 해결 단계를 모두 시도한 후에도 문제가 해결되지 않는다면, 도커와 오라클 관련 커뮤니티에 구체적인 설정과 로그를 첨부하여 다른 사용자들의 도움을 요청하는 것도 좋은 방법입니다.

부디 빠른 해결이 이루어지길 바랍니다.

Yuuri님의 프로필 이미지

작성한 질문수

질문하기