
Oracle의 DB 접속방법 중에는 두가지 방식이 있습니다.
Local 접속과 외부(tns)접속이 있습니다.
개념
local 접속
DB가 설치된 서버(OS)에 직접 접속한 뒤 DB에 접근하는 방식입니다.
통신 방식:
네트워크 망을 타지 않고 서버 내부의 메모리/프로세스 간 통신인
IPC(Inter-Process Communication) / BEQ(Bequeath) 프로토콜을 사용합니다.
특징:
빠르고 보안상 가장 안전합니다. 주로 DBA가 서버 유지보수나 패치, 백업/복구 작업을 수행할 때 사용합니다.
외부접속
개발자의 PC(SQL Developer, DBeaver 등)나 WAS 같은 애플리케이션 서버 등, 원격지에서 DB 서버로 접근하는 방식입니다.
통신 방식:
오라클의 리스너(Listener)를 거쳐 TCP/IP 프로토콜을 통해 통신합니다. 클라이언트 측에 tnsnames.ora 설정이 필요합니다.
특징:
서비스 운영을 위해 필수적이며, 네트워크 방화벽 및 리스너 포트(보통 1521) 개방이 필요합니다.
사용방법
local 접속
$ sqlplus / as sysdba
동작 원리: 오라클은 DB 엔진 레벨의 인증을 거치기 전에, 현재 서버에 로그인한 OS 유저가 오라클 관리자 그룹(Linux 기준 보통 dba 또는 oper 그룹)에 속해 있는지 확인합니다.
속해 있다면, "이 서버의 dba 그룹 유저라면 이미 검증된 관리자다"라고 판단하여 DB 패스워드 입력을 생략하고 SYSDBA 권한을 부여합니다.
해당방법으로 접근시에는 잘못된 패스워드를 입력하더라도(중요!), OS level에서 검증이 이미 끝났으므로 접근이 가능해집니다.
***테스트***
시나리오
OS의 같은 group의 유저인 grid에서 oracle db로 로컬접속해보기
$id oracle
uid=204(oracle) gid=202(dba) groups=1(staff)
$id grid
uid=206(grid) gid=202(dba) groups=1(staff)
export ORACLE_HOME=/oracle/db/product/12.2.0
export ORACLE_SID=dbarac1
--잘못된 패스워드로 입력시 접속되는지 확인
sqlplus sys/qwerq1 as sysdba
connect to :
SYS@dbarac1>
OS인증을 위해서 사전에 설정이 되어있는지 확인해야 하는 부분
1. sqlnet.ora에서 SQLNET.AUTHENTICATION_SERVICES = (ALL) 이거나 설정이 안들어있는지 확인
① SQLNET.AUTHENTICATION_SERVICES (sqlnet.ora)
클라이언트와 서버 간의 네트워크 설정 파일인 sqlnet.ora에 명시되는 파라미터로, OS 인증의 사용 여부를 결정합니다.
설정값설명 및 특징
NONE
OS 인증을 차단합니다. 즉, 로컬 서버에서 sqlplus / as sysdba를 쳐도 패스워드를 요구하게 됩니다.
NTS
Windows 환경에서 Windows OS 인증을 사용하도록 허용합니다. (Windows 서버 오라클 필수 설정)
ALL
모든 인증 서비스를 허용합니다. (주로 Unix/Linux 환경에서 OS 인증을 사용할 때 설정하거나 생략 시 기본값으로 동작)
원격접속
$sqlplus sys/password@dbarac1 as sysdba
***테스트***
1.tnsnames.ora에 등록 후 접속 시도(에러발생)
sqlplus sys/password@dbarac1 as sydba
ORA-01031 : insufficient privileges
2.password파일 재생성 후 접속(성공)
orapwd file='/oracle/db/product/12/dbs/orapwdbarac1
Enter password for SYS :
후 재시도
$sqlplus / as sysdba
connect to :
SYS@dbarac1>
원격접속을 위해서 사전에 설정이 되어있는지 확인해야 하는 부분
1. show parameter remote_login_passwordfile 명령어로 설정값이 EXCLUSIVE인지 확인. (NONE이면 원격 관리자 접속 불가)
② REMOTE_LOGIN_PASSWORDFILE (DB 파라미터)
데이터베이스의 spfile 또는 pfile에 설정되는 파라미터입니다.
원격지(TNS)에서 SYSDBA나 SYSOPER 같은 관리자 권한으로 접속할 때, 패스워드 파일을 어떻게 사용할 것인가를 정의합니다.
💡 패스워드 파일(orapw<SID>)이란?원격 접속 시에는 OS 인증을 쓸 수 없으므로,
DB 인스턴스가 구동(STARTUP)되기 전에도 관리자 계정의 비밀번호를 확인해 접속을 허용해야 합니다.
이를 위해 DB 딕셔너리(내부 테이블) 외부에 별도로 존재하는 암호화된 파일입니다.
설정값설명 및 특징
NONE
원격지에서 SYSDBA 권한으로 접속하는 것을 원천 차단합니다. 오직 로컬 OS 인증만 허용하는 강력한 보안 설정입니다.
EXCLUSIVE
(실무 기본값) 하나의 DB 인스턴스가 패스워드 파일을 독점하여 사용합니다.
일반적인 환경 설정이며, 패스워드 파일에 유저 추가/삭제가 가능합니다.
SHARED
여러 데이터베이스가 하나의 패스워드 파일을 공유합니다. 패스워드 변경이나 유저 추가가 불가능합니다.
2.패스워드 파일 상태: $ORACLE_HOME/dbs (또는 database) 디렉토리에 orapw<SID> 파일이 존재하는지, 권한이 올바른지 확인. 손상되었다면 orapwd 유틸리티로 재생성 필요.
orapwd file='/oracle/db/product/12/dbs/orapwdbarac1
Enter password for SYS :
3.(optional) V$PWFILE_USERS 뷰를 조회하여 해당 유저가 패스워드 파일에 정상적으로 등록되어 있는지 검증.
간단하지만 헷갈릴수 있는부분이어서 정리겸 테스트를 진행한 것을 정리하였습니다.
저는 rman에서 duplicate active database로 복제DB생성을 위해서 소스/타켓에 대한 원격접속이 둘다 필요했고, 해당 부분 트러블슈팅하다보니 정리하게되었습니다.
'Oracle > 운영' 카테고리의 다른 글
| 인덱스 생성시 자동 압축되게 하는 파라미터(DB_INDEX_COMPRESSION_INHERITANCE) 테스트 (0) | 2026.06.24 |
|---|---|
| Oracle 압축 원리와 압축옵션에 따른 블록상태 변화 테스트 (0) | 2026.05.29 |
| DB서버와 클라이언트 간의 캐릭터셋 차이에 따른 한글 입력 깨짐 현상 테스트 (0) | 2026.05.18 |
| Linux에서 gui를 띄우기 위해서 확인해보아야 할것 (0) | 2026.04.27 |
| CTAS의 심화 (0) | 2026.02.02 |
댓글