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 인턴입니다.
Yuuri님, Docker에서 Oracle 11g 연결 문제가 발생한 것으로 이해했습니다.
Docker 컨테이너와의 연결 문제를 해결하기 위한 일반적인 접근 방법 몇 가지를 추천드립니다:
네트워크 확인:
docker0
브리지 네트워크가 제대로 설정되어 있는지 검토하세요. 또한 Docker 내부에서 ping
이 안 되는 경우 네트워크 문제일 수 있으므로 좀 더 깊은 네트워크 연결성 검사가 필요할 수 있습니다.포트 상태 확인:
1521
포트가 Oracle 컨테이너에 바인딩되어 있고 외부에서 접근 가능한지 확인하세요. netstat -tuln
또는 lsof -i :1521
명령어를 사용하여 포트 상태를 체크할 수 있습니다.방화벽 설정 검토:
컨테이너 로그 확인:
docker logs
명령어를 통해 컨테이너 내부에서 발생하는 오류를 확인하세요. 문제가 되는 서비스의 오류 메시지를 볼 수 있을 것입니다.컨테이너의 네트워크 설정 재검토:
listener.ora
와 tnsnames.ora
파일 설정을 다시 한번 점검해보세요. 이 파일들에 지정된 호스트 이름이나 IP가 컨테이너의 현재 설정과 일치하는지 확인하십시오.Oracle 서비스 상태 확인:
sqlplus
를 사용하여 로컬에서 접근이 가능한지도 시험해보실 수 있습니다.Oracle 11g를 Docker에서 실행할 때 특히 네트워킹 및 포트 관련 이슈가 자주 발생합니다. 위의 접근 방법들로 문제를 해결할 수 없다면, 보다 구체적인 설정이나 로그와 함께 Docker와 Oracle 커뮤니티에 문의하여 추가적인 지원을 받아보실 것을 권장드립니다.
M1 Mac을 사용 중이시라 하셨는데, Docker가 M1 칩 호환 문제가 없는지도 검토해 보실 필요가 있겠습니다.
이러한 문제 해결 단계를 모두 시도한 후에도 문제가 해결되지 않는다면, 도커와 오라클 관련 커뮤니티에 구체적인 설정과 로그를 첨부하여 다른 사용자들의 도움을 요청하는 것도 좋은 방법입니다.
부디 빠른 해결이 이루어지길 바랍니다.