Oracle 외부에서 연결하기
✒️ 2025-05-28 16:31 내용 수정
참고 자료 : MelonPeach 오라클(Oracle) 공유기 포트포워딩 방법, heekng's 내 컴퓨터 데이터베이스 외부에서 접속하기(오라클DB, 방화벽 설정), DevelopLSB Oracle 외부에서 로컬DB 접속하기
U+ 공유기 포트포워딩 설정 참고 자료 : 4강신화's LG U+ 공유기 포트포워딩 설정하는 방법, Lamanus's 포트 포워딩 설정하기 - U+ 이중 공유기
- 팀 프로젝트를 시작하면서 한 컴퓨터를 서버로 사용해 Oracle을 외부에서도 접속할 수 있도록 설정해야 했다. 구글링으로 관련 내용을 검색했고, Oracle을 외부에서 접속하기 위한 설정과 포트포워딩 과정을 기록해두려 한다.
- 프로젝트 시작 불과 며칠 전에 소규모 게임 서버를 하나 열면서 포트포워딩 작업을 해야 했기에 그 경험이 이번 작업에 많은 도움을 줬다.
- 2024.01.27 버전 기준 팔월드 게임 서버 만들기(윈도우) : 테크팀 팰월드 서버구축하기 : 윈도우 + SteamClient
- 컴퓨터 환경은 Window, 가정 공유기는 U+ 공유기를 사용해서 이 환경을 기준으로 작성했다.
포트포워딩, 네트워크 설정
- 작업 표시줄의 윈도우 마크에서 우클릭 - 실행 - cmd를 입력해 명령 프롬프트(cmd)를 실행한다.
- cmd를 실행하면
ipconfig를 입력해 이더넷 어댑터 이더넷 정보에서 IPv4 주소와 기본 게이트웨이 주소를 체크한다.

- cmd에서
lsnrctl status를 입력해 Oracle 서비스의 정보를 출력해 PORT를 확인한다.- Oracle의 포트는 Protocol = TCP에 PROT = 1521이다.

- 포트포워딩을 위해 웹 브라우저 주소창에 기본 게이트 웨이를 입력한다.
- 예를 들어 게이트 웨이가 192.168.201.1이라면 주소창에 그대로 입력한다.
- 공유기 회사별로 페이지 및 설정 방법이 조금씩 다르기 때문에 본인이 사용하는 제품의 포트포워딩 설정 방법을 따로 찾아보는 것을 권장한다.
- 공유기 페이지가 뜨면 공유기 아이콘을 클릭하고, 로그인 창이 뜨면 공유기의 뒷면에 있는 admin 비밀번호(사용하던 제품에선 http://게이트웨이주소 옆에 있었음)와 보안 코드를 입력해서 로그인한다.
- U+ 기준 해당 페이지에서 변경한 설정들이 있으면 반드시 하단에 설정 적용을 눌러줘야만 설정이 저장되며, 매번 설정을 저장할 때 마다 공유기가 재시작하기 때문에 네트워크가 일시적으로 끊긴다. 중요한 작업중이라면 주의할 것.
- 집 환경에선 2개가 떴는데, 이 때 위쪽 기기를 누르면 된다.


- U+ 기준 네트워크 설정 - 유선 네트워크 설정에서 WAN의 IPv4 Only가 체크되어 있는지 확인하고, 만약 안되어 있다면 체크한 후에 아래쪽에 설정 적용을 해준다.
- Auto로 되어 있을 때 NAT 설정 시 먼저 IPv4 Only로 바꾸라는 알림이 떴었다.

- 네트워크 설정 - NAT 설정에서 포트포워딩 설정 추가 버튼을 누른다.
- 사진은 게임 서버와 이미 추가해둔 Oracle 포트가 있는 상태다.

- 서비스 포트에 Oracle의 포트인 1521 - 1521을 입력하고, 프로토콜은 TCP/IP, 내부 IP 주소는 cmd로 확인했던 IPv4 주소를 입력하고, 내부 포트도 1521로 입력한 뒤 추가를 눌러준다.
- 추가가 완료되었다면 반드시 아래쪽에 있는 설정 적용을 누르면 네트워크 설정은 끝이다. (공유기 재시작으로 인터넷이 잠깐 끊기는 걸 잊지 말자)

Oracle 서비스 설정 및 상태 확인
- 드라이브:/oraclexe/app/oracle/product/11.2.0/server/network/ADMIN 폴더에서 listener.ora 파일과 tnsnames.ora 파일이 있는지 확인한다.
- listener.ora 파일과 tnsnames.ora 파일에도 HOST가 컴퓨터 이름인지 확인한다.
- Oracle 버전이나 컴퓨터 환경에 따라 조금씩 다른 것 같은데, 몇몇 글에선
HOST = ip주소, 다른 글에선HOST = 컴퓨터 이름으로 설명되어 있다. 둘 다 작성한 다음 cmd에서lsnrctl start를 해서 제대로 작동되는 쪽을 선택하면 되는 것 같다. - Oracle 리스너에서 host 이름이 컴퓨터 이름으로 설정된 상태라면 그대로 둬도 잘 작동했다.
HOST = localhost로 작성되어 있거나 다른 내용이 있어 작동이 잘 안 된다면 컴퓨터 이름을 제어판 - 시스템 및 보안 - 시스템에서 확인하고 내용을 수정한다.
- Oracle 버전이나 컴퓨터 환경에 따라 조금씩 다른 것 같은데, 몇몇 글에선

- tnsnames.ora
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 컴퓨터이름)(PORT = 1521)) // 호스트 주소
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
- listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oraclexe\app\oracle\product\11.2.0\server) // Oracle 설치 위치
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\oraclexe\app\oracle\product\11.2.0\server)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 컴퓨터이름)(PORT = 1521)) // 호스트 주소
)
)
DEFAULT_SERVICE_LISTENER = (XE) // 내 설정에서는 XE가 기본이었다.
- 작업 표시줄의 윈도우 마크 우클릭 - 실행 - services.msc에서 OracleServiceXE와 OracleXETNSListener가 실행중인지 확인한다.
- 실행 중이 아니라면 서비스를 실행시켜주거나, cmd에서
lsnrctl status로 현재 Oracle 서비스 상태를 확인하고lsnrctl start로 실행한다.
- 실행 중이 아니라면 서비스를 실행시켜주거나, cmd에서


방화벽 설정
- 작업 표시줄의 검색에 방화벽을 검색해서 방화벽 설정을 열고, 고급 설정을 선택한다.

- 왼쪽 메뉴에서 인바운드 규칙을 선택하고, 오른쪽의 작업에서 새 규칙을 선택한다.

- 규칙의 종류를 포트로 설정한다.

- TCP 규칙으로 설정하고, 특정 로컬 포트로 Oracle의 포트인 1521을 입력한다.

- 규칙 적용 타입은 도메인, 개인, 공용을 모두 선택한다.
- 몇몇 참고 자료에선 상황에 따라 선택하길 권장했다. 다만 그 기준을 잘 몰라서 내가 설정할 때는 모두 체크했다.

- 규칙 이름을 OracleDB로 작성하고 마침을 누르면 새 방화벽 규칙이 추가된다.

Oracle에서 DB 연결 추가하기
- DBeaver를 설치하여 사용하던 환경이라 DBeaver로 연결을 한다.
- DataBase와 연동 참고.
- 새 데이터베이스 연결을 눌러 Oracle을 선택한다.
- Host에 호스트 컴퓨터의 외부 ip 주소를 입력하고, Database 항목에 tnsnames.ora 파일과 listener.ora에서 설정한 이름 및 SID 혹은 Sevice Name을 선택해서 입력한다.
- 내 기본 설정에서는 XE로 설정되어 있어서 서비스 이름과 XE로 설정했다.
- Authentication에서 Oracle 사용자의 이름과 비밀번호를 입력한 후 Test Connection을 눌러 연결이 제대로 되는지 확인한다.
- 만약 system 외의 다른 사용자가 없다면 Oracle에서 미리 생성해준다.
- Connected가 뜬다면 이제 외부에서도 해당 Oracle에 접속해서 사용할 수 있다.
- 서버 컴퓨터에서도 해당 ip 주소를 입력해서 연결을 확인했고, 팀원분들도 연결이 잘 되는 것을 확인해주셨다.

기타
DMZ 설정
- DMZ 설정이 필요하다면 Oracle 외부에서 연결하기#포트포워딩, 네트워크 설정에서 공유기 설정 페이지로 들어가서 설정할 수 있다.
- 게임 서버의 포트포워딩 설정을 할 때 같이 설정해둬서 게임 서버를 돌리기 위해 이 부분도 다시 설정해줬다. Oracle에 필요한 부분인지는 잘 모르겠으나, 많은 가이드 글에선 생략된 것으로 보아 필요 없을 듯 하다.
- 네트워크 설정 - NAT 설정 - DMZ 설정에서 DMZ 사용함을 체크해주고, DMZ IP 주소를 cmd에서 확인한 IPv4 주소를 입력하고 설정 적용을 눌러준다.

고정 IP 설정
- DHCP로 IP 주소가 만료되었거나, IP가 유동 IP라서 포트포워딩 설정을 해도 접속이 잘 안되는 경우엔 고정 IP로 설정을 변경해준다.
- 설정 - 네트워크 - 어댑터 옵션 변경을 선택한다.

- 사용중인 이더넷에 우클릭을 하고, 인터넷 프로토콜 버전 4(TCP/IPv4)를 클릭해 속성 버튼을 누른다.



- 다음 IP 주소 사용하기를 선택해 사용하려는 IP 주소를 입력하고, cmd에서
ipconfig를 입력해서 확인할 수 있는 서브넷 마스크와 기본 게이트웨이를 입력한다. - DNS도 다음 DNS 서버 주소 사용하기를 선택해 DNS 기본 설정은 8.8.8.8 (구글), 보조 DNS 서버는 8.8.4.4로 설정하고, 이 부분이 이미 되어 있다면 IP 주소만 설정하고 확인을 누른다.

이더넷 고정 IP 설정이 안될 때 DHCP 고정 IP 설정
- 이 방법을 쓰게 된 이유
- 모든 설정을 완료하고 다음날에 다시 컴퓨터를 켰을 때 게임 서버에 접속이 안되서 원인을 찾다가
ipconfig로 확인한 IPv4 주소가 어제와 다른 주소로 변경되어 있었다. - 관련 내용을 검색했을 때 DHCP 기간 만료가 원인이라는 내용이 있어 공유기 설정 페이지에서 시스템 로그를 확인했다. 로그에선 컴퓨터를 다시 켤 때마다 만료 계속 새 만료일로 업데이트 되어 연장되었던 기록을 봤을 때 네트워크 수동 할당 혹은 자동 할당 전환 과정에서 뭔가 잘못된 듯 하다.
- 개인적 추측으론 Oracle 리스너 설정 파일을 수정하다가 C:\Windows\System32\drivers\etc의 hosts 파일을 수정하던 중 네트워크가 변경된게 아닌가 싶은데, 그럼에도 일단은 DHCP에서 자동으로 ip를 새로 갱신/발급 과정에서 생겼을 가능성이 높다.
- 위의 Oracle 외부에서 연결하기#고정 IP 설정이 내 컴퓨터에선 오류가 떠서 공유기 설정 페이지에서 DHCP 고정 ip를 내 컴퓨터에 할당해서 해결했다.
- U+ 공유기 DHCP 고정 ip 할당 참고 자료 : 랑쿤's 유플러스 공유기 고정 IP 할당 방법
- 모든 설정을 완료하고 다음날에 다시 컴퓨터를 켰을 때 게임 서버에 접속이 안되서 원인을 찾다가
- Oracle 외부에서 연결하기#포트포워딩, 네트워크 설정에서 상태 정보 - DHCP 할당 정보로 들어가서 DHCP 고정 할당을 선택한다.
- DHCP 고정 할당 추가 메뉴의 맥주소 검색 버튼을 누른다.

- 현재 사용 중인 컴퓨터 장치들의 IP 주소, 하드웨어 주소, 인터페이스가 뜬다. 이 중에서 서버 컴퓨터의 IP주소나 하드웨어 주소와 비교해서 고정할 맥주소를 선택해준다.

- 할당할 IP 주소를 설정하고 오른쪽의 추가 버튼을 눌러 DHCP 고정 할당 목록에 추가한 후 화면 아래의 설정 적용을 눌러준다.
