기존 패스워드 파일 백업 및 삭제

 

패스워드 파일 재생성

orapwd file=/oracle/app/oracle/product/11.2.0/dbs/orapwLINUXORCL(오라클sid)

 

패스워드 파일을 삭제하기 위해서는 rm과 같은 운영체제 명령어를 사용하여 파일을 삭제하면 된다

패스워드 파일을 수정하기 위해서는 데이터베이스를 종료한후 이전 패스워드 파일을 삭제하고 새로 생성한다. 데이터베이스를 재기동하게 되면 새로운 패스워드 파일의 값이 적용된다.

 

Posted by Any DB
,

1. 확인

 SQL> SELECT * FROM DBA_PROFILES
  2  WHERE PROFILE='DEFAULT';

PROFILE                        RESOURCE_NAME                    RESOURCE          LIMIT
---------------- ----------------------------------- ---------------    ----------------
DEFAULT                        COMPOSITE_LIMIT                      KERNEL       UNLIMITED
DEFAULT                        SESSIONS_PER_USER                 KERNEL       UNLIMITED
DEFAULT                        CPU_PER_SESSION                     KERNEL       UNLIMITED
DEFAULT                        CPU_PER_CALL                          KERNEL       UNLIMITED
DEFAULT                        LOGICAL_READS_PER_SESSION  KERNEL       UNLIMITED
DEFAULT                        LOGICAL_READS_PER_CALL       KERNEL       UNLIMITED
DEFAULT                        IDLE_TIME                                 KERNEL       UNLIMITED
DEFAULT                        CONNECT_TIME                         KERNEL       UNLIMITED
DEFAULT                        PRIVATE_SGA                            KERNEL       UNLIMITED
DEFAULT                        FAILED_LOGIN_ATTEMPTS          PASSWORD       10
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD       180

PROFILE                        RESOURCE_NAME                      RESOURCE         LIMIT
-------- ------- ------------------------------------ ---------------- -----------------
DEFAULT                        PASSWORD_REUSE_TIME            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_REUSE_MAX            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_VERIFY_FUNCTION   PASSWORD     NULL
DEFAULT                        PASSWORD_LOCK_TIME             PASSWORD     1
DEFAULT                        PASSWORD_GRACE_TIME           PASSWORD      7

16 rows selected.
SQL>

 

2. 변경 

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Profile altered.

SQL> SELECT * FROM DBA_PROFILES
  2  WHERE PROFILE='DEFAULT';

PROFILE                        RESOURCE_NAME                    RESOURCE          LIMIT
---------------- ----------------------------------- ---------------    ----------------
DEFAULT                        COMPOSITE_LIMIT                      KERNEL        UNLIMITED
DEFAULT                        SESSIONS_PER_USER                 KERNEL        UNLIMITED
DEFAULT                        CPU_PER_SESSION                     KERNEL        UNLIMITED
DEFAULT                        CPU_PER_CALL                          KERNEL        UNLIMITED
DEFAULT                        LOGICAL_READS_PER_SESSION  KERNEL        UNLIMITED
DEFAULT                        LOGICAL_READS_PER_CALL       KERNEL        UNLIMITED
DEFAULT                        IDLE_TIME                                 KERNEL        UNLIMITED
DEFAULT                        CONNECT_TIME                         KERNEL        UNLIMITED
DEFAULT                        PRIVATE_SGA                            KERNEL        UNLIMITED
DEFAULT                        FAILED_LOGIN_ATTEMPTS          PASSWORD       10
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD    UNLIMITED
PROFILE                        RESOURCE_NAME                      RESOURCE         LIMIT
-------- ------- ------------------------------------ ---------------- -----------------
DEFAULT                        PASSWORD_REUSE_TIME            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_REUSE_MAX            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_VERIFY_FUNCTION   PASSWORD     NULL
DEFAULT                        PASSWORD_LOCK_TIME             PASSWORD     1
DEFAULT                        PASSWORD_GRACE_TIME           PASSWORD      7

16 rows selected.

 

 

Posted by Any DB
,

1. listener.ora  (default location = $ORACLE_HOME/network/admin)

 

 LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux-single)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

 

SID_LIST_LISTENER=

 (SID_LIST =

  (SID_DESC =

     (ORACLE_HOME=/oracle/app/oracle/product/11.2.0)

    (SID_NAME=LINUXORCL)

  )

)

ADR_BASE_LISTENER = /oracle/app/oracle

 

 - LISTENER : 리스너 이름이며 다른 이름으로 설정 가능. SID_LIST_리스너명 항목에서 리스너명과 동일

 - ADDRESS_LIST : ADDRESS들의 모임이며 여러 개의 ADDRESS를 동시에 설정 가능

 - ADDRESS : 데이터베이스 서버의 주소이며 프로토콜, 서버명 및 사용포트로 구성된다.

 - SID_LIST_LISTENER : 리스너가 서비스하는 데이터베이스 정보를 설정하며 SID_LIST_리스너명으로 설정

 - SID_LIST : 해당 리스너 프로세스가 하나 이상의 데이터베이스를 서비스 할 경우에 해당 부분에 여러개의  

                   SID_DESC를 등록한다.

 - GLOBAL_DBNAME : 전역 데이터베이스 이름을 지정하며 생략 가능하다.

 - ORACLE_HOME : 오라클 홈 디렉토리의 위치를 지정한다.

 - SID_NAME : 리스너의 접속을 허용하는 데이터베이스의 SID 명을 지정한다.

 

리스너 파라메터

 - LOG_DIRECTORY_리스너명 : 로그 파일이 저장될 경로 이름을 설정

 - LOG_FILE_리스너명 : 로그가 기록될 파일명 설정

 - LOGGING_리스너명 : 로그 기능의 활성화 여부 설정 (ON 또는 OFF)

 - PASSWORD_리스너명 : 리스너를 중단시킬 경우 필요한 비밀번호를 설정

 

 

 [LINUXORCL]linux-single:/oracle> lsnrctl status   <---리스너 상태체크

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-AUG-2013 00:19:39

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux-single)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused

리스너 시작

[LINUXORCL]linux-single:/oracle> lsnrctl start    <-- 리스너 시작

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-AUG-2013 00:22:02

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

Starting /oracle/app/oracle/product/11.2.0/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Log messages written to /oracle/app/oracle/diag/tnslsnr/linux-single/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux-single)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux-single)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                02-AUG-2013 00:22:04
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/linux-single/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux-single)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

리스너 상태체크

[LINUXORCL]linux-single:/oracle> lsnrctl status   <-- 리스너 상태체크

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-AUG-2013 00:22:26

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux-single)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                02-AUG-2013 00:22:04
Uptime                    0 days 0 hr. 0 min. 24 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/linux-single/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux-single)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "LINUXORCL" has 1 instance(s).
  Instance "LINUXORCL", status READY, has 1 handler(s) for this service... 사용준비완료
Service "LINUXORCLXDB" has 1 instance(s).
  Instance "LINUXORCL", status READY, has 1 handler(s) for this service...
The command completed successfully

 

2. tnsnames.ora 설정 (location = $ORACLE_HOME/network/admin)

 

 LINUXORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 122.99.166.149)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = LINUXORCL)
    )
  )

 

- LINUXORCL : 서비스이름

- DESCRIPTION : 접속하고자 하는 대상 데이터베이스 정보

- ADDRESS : 접속하고자 하는 데이터베이스 서버의 리스너를 호출하기 위한 주소정보

- CONNECT_DATA : SERVICE_NAME 옵션을 이용하여 접속할 리스너 프로세스가 사용하는 서비스 이름을 지정

                          하거나 또는 SID옵션을 이용하여 데이터베이스의 SID명을 지정

 

 

 tnsping test

C:\Users\Boeok>tnsping LINUXORCL

TNS Ping Utility for 32-bit Windows: Version 11.2.0.3.0 - Production on 01-8월 -
2013 16:02:49

Copyright (c) 1997, 2011, Oracle.  All rights reserved.

사용된 매개변수 파일:
F:\app\Boeok\product\11.2.0\client_1\network\admin\sqlnet.ora


별칭 분석을 위해 TNSNAMES 어댑터 사용
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 122.99.166.149
)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = LINUXORCL)))에 접속하려고 시도
하는 중
확인(30밀리초)  <-- 해당 서버와의 응답시간

C:\Users\Boeok>

 

sqlplus 접속시도


C:\Users\Boeok>sqlplus test/test@LINUXORCL

SQL*Plus: Release 11.2.0.3.0 Production on 목 8월 1 16:05:03 2013

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


다음에 접속됨:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> 클라이어트에서 서버로 접속된 상황

 

3. SQLNET.ORA

 

클라이언트와 데이터베이스 서버 양쪽에 존재하는 파일로 오라클 넷을 옵션 설정등을 저장하는 파일.

즉. 오라클 서버로 어떻게 접속할 것인지를 설정하는 파일

 

 SQLNET.AUTHENTICATION_SERVICES= (NTS | none)

클라이언트가 오라클 서버로 접속할 때 오라클이 어떠한 인증 서비스를 사용할 것인가

none : sys 계정으로 로그인할때 비밀번호를 입력해야만 들어 갈수 있게 설정

sqlplus "/as sysdba" 가 안먹힘

 

 NAMES.DIRECTORY_PATH= (TNSNAMES | ONAMES | HOSTNAME)

클라이언트가 디비 접속 시 사용하는 STRING NAME ALIAS를 무엇을 통해 확인할지를 결정하는 것

 

TNSNAME : 로컬네임서버를 확인하겠다는 의미, (TNSNAME.ORA파일 확인)

 

ONAMES : 오라클 네임서버를 확인하겠다는 의미이며 추가적으로 NETWORK ADDRESS를 설정해줘야 함.

 

HOSTNAME : 호스트네임서버를 확인하겠다는 의미이며 TNSNAME.ORA파일은 필요없이 DNS나 WINDOWS의 경우 HOST파일(C:\WINDOWS\SYSTEM32\DRIVERS\ETC)에 등로되어 있으면 된다

주의사항 --> 공백이 절대 존재해선 안된다

NAMES.DIRECTORY_PATH=(TNSNAMES, HOSTNAME) X

NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME) O

 

만약 공백 존재시 다음과 같은 에러가 발생할수 있다.

ORA-12170 : TNS: Connect timeout occured

ORA-12560 : TNS: protocol adapter error

 

tcp.validnode_checking = yes

 

tcp.invited_nodes = (IP1, IP2, IPn)     <- 정의된 IP만 접근 나머지는 모두 접근 거부

tcp.excluded_nodes=(IP1, IP2, IPn)   <- 정의된 IP만 접근거부, 나머지는 모두 접근 가능

sqlnet.expire_time = 10     <-- 세션을 정리하는 시간  10분에 한번씩 신호를 보내서 새션을 정리하는 옵션

 

 

Point : 클라이언트와 서버의 접속이 안될때 확인해야할 방법중 가장 우선은 방화벽이 설정되어 있는지 아닌지를 확인해야한다 os에서 방화벽을 실행시켜두면 리스너와 클라이어인트설정이 잘되어도 접속이 되지 않는다.

그 다음으로는 위에서 보여준것과 같이 listener, tnsname, sqlnet.ora에 공백이 존재해서도 안된다.

 

Posted by Any DB
,

오라클 넷의 개념

 

1. 접속 방법 

 

  오라클 접속방법에는 위와 같은 두가지 방법이 존재한다.

  - 1의 경우 : 텔넷 등을 이용하여 운영체제에 먼저 접속하는 방식이다. 그 후 해당 데이터베이스에 접속하게 된다.    

                   이 우에는 오라클 넷을 이용하지 않게 된다.

 

  - 2의 경우 : 툴을 이용하여 운영체제에 대한 접속 없이 데이터베이스에 직접 접속하는 방식으로 오라클 넷을

                   이용하게 된다.

 

2, 오라클 넷의 개념

 

 위와 같이 외부에서 운영체제 인증 없이 데이터베이스로 직접 접속을 하기 위해서는 보통의 경우 오라클 넷이라는

아키텍처를 이용하게 된다. 오라클 넷의 특징은 다음과 같다.

 

  - 프로토콜에 독립성

  - 광범위한 플랫폼 지원

  - 추적 및 진단 제공

  - 기본 보안 제공

 

 오라클 넷은 이와 같은 특징을 가지며 이름 지정 방식을 이용하여 원하는 데이터베이스로 접속할 수 있는 정보를 획득하게 된다. 이름 지정 방식은 다음과 같이 네가지 종류가 존재한다.

 

  - 호스트 이름 방식 : 대상 데이터베이스의 호스트이름 또는 IP를 이용하여 대상 데이터베이스에 접속하는 방식.

 

  - 로컬 이름 방식 : 클라이언트에 존재하는 tnsnames.ora 파일에 등록된 대상 데이터베이스의 정보를 이용하여

                           접속하는 방식. (가장 많이 사용하는 방식)

 

  - 디렉토리 이름 지정 방식 : 별도로 존재하는 디렉토리 서버에서 대상 데이터베이스의 정보를 모두 관리하는 방식.

 

  - Oracle Names 방식 : 오라클에서 제공하는 디렉토리 이름 지정 방식.

 

3. 오라클넷의 구성 파일

 

 오라클 넷을 사용하기 위해서는 5가지의 파일이 필요하다. 각 파일의 특징을 확인한다.

 

  - ldap.ora : 디렉토리 서비스를 사용할 경우 클라이언트와 데이터베이스 서버에 존재하는 파일로 해당 디렉토리

                  서버를 엑세스 할 수 있는 정보를 저장한다.

 

  - names.ora : Oracle Names 방식의 오라클 디렉토리 이름 지정 방식을 이용할 경우 Oracle Names 서버에서 모든

                   데이터베이스의 정보를 저장하고 있는 파일

 

  - tnsnames.ora : 클라이언트에 존재하며, 데이터베이스의 정보를 저장하고 있는 파일로 로컬 이름 방식을 사용할

                         경우 이용하게 된다.

 

  - listener.ora : 데이터베이스 서버에 존재하는 파일로 접속을 요청하는 클라이언트와 실제 데이터베이스를 연결해

                      주는 역활을 수행하는 리스너 프로세스의 정보를 저장하는 파일

 

  - sqlnet.ora : 클라이언트와 데이터베이스 서버 양쪽에 존재하는 파일로 오라클 넷의 옵션 설정 등을 저장하는 파일

 

4. 오라클 넷의 구조

 

 

  1. 사용자에 의해서 데이터베이스에 접속 요청이 발생하면 클라이언트에는 유저 프로세스가 생성된다. 해당 유저 프로세스는 1과 같이 지정된 위치에 존재하는 tnsnames.ora파일로부터 접속하고자 하는 데이터베이스에 대한 정보를 획득하게 된다. tnsnames.ora 파일에는 접속하고자 하는 데이터베이스 서버의 IP와 포트 정보등 데이터베이스에 접속하기 위한 기본 정보들이 기록되어 있다.

 

2. tnsnames.ora 파일에서 획득한 정보로 데이터베이스 서버에 접속하게 되면 listener.ora파일의 정보를 이용해 미리 가동되어 있는 리스너 프로세스가 2와 같이 유저프로세스의 요청을 수신한다.

 

3. 유저 프로세스로부터 요청을 받은 리스너 프로세스는 해당 요청을 처리하기 위해 3과 같이 서버 프로세스를 기동시킨다.

 

4. 서버 프로세스가 기동한 후 리스너 프로세스는 해당 서버 프로세스에 대한 정보를 4와 같이 유저 프로세스에게 전달한다.

 

5. 서버 프로세스의 정보를 전달받은 유저 프로세스는 리스너와 연결을 끊고 5와 같이 서버 프로세스와 직접 통신하면서 작업에 대한 결과를 받게 된다.

 

 위와 같은 절차에 의해 클라이언트들은 데이터베이스 서버에 접속을 하게된다. 결국 로컬 이름 방식에서는 클라이언트의 tnsnames.ora 파일과 데이터베이스 서버의 listener.ora 파일만 존재하고 올바르게 설정되어 있으면 접속이 가능하다는 것이다.

 

 

 

 

 

 

Posted by Any DB
,