Oracle/Backup & Recovery2010. 7. 9. 15:43
RMAN에 관해서 정리 잘 되어있는 문서

참조 : http://kkkidea.springnote.com/pages/1586822.xhtml

'Oracle > Backup & Recovery' 카테고리의 다른 글

[펌] [Export/Import] EXPORT FILE의 SIZE 예측  (0) 2013.04.03
current redo log group 삭제시 복구  (0) 2010.11.24
start backup 후 end backup을 안했을 경우.  (0) 2010.04.17
Block Corruption  (0) 2009.12.23
restore points  (0) 2009.12.23
Posted by 자수성가한 부자
Oracle/기타2010. 7. 8. 09:15
SQL*PLUS에서는 OS의 편집기를 이용하지 않고 buffer의 내용을 바로 편집할 수 있다.

명령어로는 list, input, append, change, delete, 번호 ....

자세한 내용은 아래의 블로그를 참조.

참고 : http://blog.naver.com/gseducation/20109008333
Posted by 자수성가한 부자
Oracle/Admin2010. 7. 7. 16:07



리스너에 패스워드를 설정해 보안을 강화할 수 있다.

리스너에 패스워드를 설정하게 되면 
lsnrctl(리스너 컨트롤) 명령어로 status(리스너 프로세스 상태 정보 확인) stop(리스너 프로세스 정지)을 하기 위해서는
이 패스워드를 설정한 후에야 가능하다.
단, start는 패스워드 설정없이도 가능하다.

그러면 지금부터 따라해보자. (참고로 오라클 버전은 10.2.0.4이고, 실습은 모두 default 리스너로 실행)
순서는 아래와 같다.

1. 패스워드 설정 안함
  1). listener.ora 파일 확인
  2). listener start
  3). listener status 확인
  4). listener stop

2. 패스워드 설정
  1). listener.ora 파일 확인
  2). listener start
  3). set passwd
  4). listener.ora 파일 확인
  5). listener status 확인
  6). listener stop






1. 패스워드 설정안함
  1). listener.ora 파일 확인

os] vi $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = test.domain.com)(PORT = 1521))
    )
  )



  2). listener start

[oracle@test admin]$ lsnrctl start
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 07-JUL-2010 16:24:29
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.4.0 - Production
System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ghjang.domain.com)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ghjang.domain.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.4.0 - Production
Start Date                07-JUL-2010 16:24:29
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test.domain.com)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully


  3). listener status 확인

[oracle@test admin]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 07-JUL-2010 16:25:28
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.domain.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.4.0 - Production
Start Date                07-JUL-2010 16:24:29
Uptime                    0 days 0 hr. 0 min. 58 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test.domain.com)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "test" has 1 instance(s).
  Instance "test", status READY, has 1 handler(s) for this service...
Service "testXDB" has 1 instance(s).
  Instance "test", status READY, has 1 handler(s) for this service...
The command completed successfully


  4). listener stop

[oracle@test admin]$ lsnrctl stop
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 07-JUL-2010 16:26:26
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.domain.com)(PORT=1521)))
The command completed successfully


2. 패스워드 설정
  1). listener.ora 파일 확인


# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = test.domain.com)(PORT = 1521))
    )
  )


  2). set password

리스너에 패스워드를 걸기 위해서는 listener.ora파일에
LOCAL_OS_AUTHENTICATION_LISTENER 파라미터가 OFF로 설정이 되어 있어야 한다.

os] vi $ORACLE_HOME/network/admin/listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = test.domain.com)(PORT = 1521))
    )
  )
LOCAL_OS_AUTHENTICATION_LISTENER = OFF


그리고 listener를 start시킨다. 패스워드를 설정하기 위해서는 listener 프로세스가 실행되어 있어야 한다.


[oracle@test admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 07-JUL-2010 16:35:40
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> start
Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.4.0 - Production
System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test.domain.com)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.domain.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.4.0 - Production
Start Date                07-JUL-2010 16:35:41
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  OFF                         => 패스워드 설정이 안되어 있는 것을 알 수 있다.
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test.domain.com)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully


패스워드를 설정한다.
처음 설정할 경우 old password는 입력하지 않아도 되고, 마지막에는 꼭 save_config 명령을 실행하여
패스워드를 저장하도록 한다.
만약 save_config를 하지 않을 경우 패스워드가 등록되지 않는다.

[oracle@test admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 07-JUL-2010 16:39:24
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> change_password
Old password:
New password:
Reenter new password:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.domain.com)(PORT=1521)))
Password changed for LISTENER
The command completed successfully
LSNRCTL> save_config
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.domain.com)(PORT=1521)))
Saved LISTENER configuration parameters.
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Old Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.bak
The command completed successfully

  4). listener.ora 파일 확인


# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ghjang.domain.com)(PORT = 1521))
    )
  )
LOCAL_OS_AUTHENTICATION_LISTENER = OFF
#----ADDED BY TNSLSNR 07-JUL-2010 16:50:34---
PASSWORDS_LISTENER = 12BC9D5D72FD1F01                        => 암호화된 패스워드가 설정되었다.
#--------------------------------------------

  5). listener status 확인


[oracle@test admin]$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 07-JUL-2010 16:51:47
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.domain.com)(PORT=1521)))
TNS-01169: The listener has not recognized the password    => 패스워드가 설정되어 확인할 수 없다는 메시지가 나온다.

확인하기 위해서는 패스워드를 입력해야 한다. 패스워드를 입력하는 방법은 아래와 같다.

[oracle@test admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 07-JUL-2010 16:54:24
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> set password
Password:
The command completed successfully
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.domain.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.4.0 - Production
Start Date                07-JUL-2010 16:49:44
Uptime                    0 days 0 hr. 4 min. 49 sec
Trace Level               off
Security                  ON: Password       => 패스워드가 설정되어있음을 확인할 수 있다.
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test.domain.com)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "test" has 1 instance(s).
  Instance "test", status READY, has 1 handler(s) for this service...
Service "testXDB" has 1 instance(s).
  Instance "test", status READY, has 1 handler(s) for this service...
The command completed successfully


  6). listener stop

[oracle@test admin]$ lsnrctl stop
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 07-JUL-2010 16:52:32
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.domain.com)(PORT=1521)))
TNS-01169: The listener has not recognized the password     => 패스워드가 설정되어 확인할 수 없다는 메시지가 나온다.

리스너를 stop 시키기 위해서는 패스워드를 입력해야 한다. 아래와 같다.

 [oracle@test admin]$ lsnrctl
LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 07-JUL-2010 16:55:54
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> set password
Password:
The command completed successfully
LSNRCTL> stop
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test.domain.com)(PORT=1521)))
The command completed successfully

'Oracle > Admin' 카테고리의 다른 글

특정 패키지가 invalid 되었을 때  (0) 2010.09.07
show sga의 variable size의 크기는?  (0) 2010.08.27
deadlock을 판단하는데 걸리는 시간은?  (0) 2010.07.01
[펌] DB link  (0) 2010.06.06
[펌] TNS-12546: TNS:permission denied  (0) 2010.05.28
Posted by 자수성가한 부자
Oracle/RAC2010. 7. 7. 15:30

TAF (Transparent Application Failover)란 무엇인가?

RAC에서 사용하는 application failover의 개념으로 클라리언트 측의 feature이다.
두 노드가 있다고 가정하고, 한쪽 노드에 장애가 발생했을 경우,
나머지 살아있는 노드로 failover되는 기능이다.


TAF가 왜 필요한가?

TAF의 개념을 이해한다면 의심의 여지가 없다.
고가용성 시스템을 구축하기 위해 RAC를 사용한다면
장애 발생시에 failover를 안쓴다면 왜 RAC를 구축하겠는가?


TAF를 적용하기 위해서는 어떤 작업들이 필요한가?

1. 일단 클라이언트 측에 오라클 클라이언트 프로그램이 설치되어 있어야 한다.

2. 서버 쪽에 RAC가 구축되어 있어야 한다.

3. 오라클 클라이언트가 설치되어있는 곳의 $ORACLE_HOME/network/admin의 tnsnames.ora파일에
   아래와 같은 설정이 필요하다.

ORCLTEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vip-linux1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = vip-linux2)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcltest.idevelopment.info)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)

      )
    )
  )

TAF가 지원하는 매개변수들에 대한 설명

TYPE:
이것은 NONE, SESSION, 또는 SELECT 중 하나가 사용됩니다. 사용 해제을 위해서는 TYPE=SESSION 로 설정하고, 세션과 오픈 커서의 페일오버를 위해서는 TYPE=SELECT 로 설정하십시오. 그리고 TAF 를 해제하기 위해서는 TYPE=NONE 으로 설정하시면 됩니다.

METHOD:
이것은 BASIC 또는 PRECONNECT 중 하나가 사용됩니다. BASIC 방식을 사용하면, 기존 접속이 실패할 때까지, TAF 는 접속의 재설정을 시도하지 않을 것입니다. PRECONNECT 방식을 사용하면, TAF 는 백업 접속을 위해 필요한 메모리 구조를 사전-설정하지만, 기존 접속이 실패할 때까지 백업 접속은 활성화되지 않을 것입니다.

BACKUP:
이 하위-매개변수는 백업 접속의 설정을 위해 사용되는 네트 서비스 이름을 지정합니다. BACKUP 지정은 PRECONNECT 방식을 사용할 때 필요한데, BASIC 방식에서 강력하게 추천되고 있습니다; 그렇지 않다면, 클라이언트가 재접속을 할 때까지 추가적으로 지연을 시키면서 방금 실패한 인스턴스에 최초로 재접속을 시도할 것입니다. 그러나, 사용자는 LOAD_BALANCING=ON 인 상태에서는 BACKUP 을 지정할 수가 없습니다.

DELAY:
TAF 가 장애 후에 BACKUP 에 연결하려는 시도 사이에서 기다리는 몇 초간의 지연 시간입니다.

RETRIES:
포기하기 전, TAF 가 장애 후에 BACKUP 에 연결하기 위해 시도하는 횟수입니다. RETRIES 와 DELAY 는 TAF 가 백업 접속을 포기하기 전에 콜드 페일오버가 완료될 수 있는 시간을 갖게 해줍니다


4. 그리고 /etc/hosts 파일에 3.에서 정의한 hostname이 정의되어 있어야 한다.

os] cat /etc/hosts

10.10.100.101 vip-linux1
10.10.100.102 vip-linux2


실제로 TAF 테스트를 해보자

Window 머신 (또는 다른 플랫폼의 “non-RAC” 클라이언트 머신)에서 orcltest 서비스를 사용하여 SYSTEM 사용자로 클러스터 데이터베이스에 로그인합니다:

C:\> sqlplus system/manager@orcltest

COLUMN instance_name    FORMAT a13
COLUMN host_name        FORMAT a9
COLUMN failover_method  FORMAT a15
COLUMN failed_over      FORMAT a11

SELECT
    instance_name
  , host_name
  , NULL AS failover_type
  , NULL AS failover_method
  , NULL AS failed_over
FROM v$instance
UNION
SELECT
    NULL
  , NULL
  , failover_type
  , failover_method
  , failed_over
FROM v$session
WHERE username = 'SYSTEM';


INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
orcl1         linux1
                        SELECT        BASIC           NO

위에서 설정한 SQL*Plus 세션에서 로그아웃 하지 않습니다!

위 쿼리를 수행한 다음, abort 옵션을 사용하여 linux1 노드의 orcl1 인스턴스를 셧다운 합니다. 이 작업을 수행하기 위해 아래와 같이 srvctl 커맨드라인 유틸리티를 사용합니다:

# su - oracle
$ srvctl status database -d orcl
Instance orcl1 is running on node linux1
Instance orcl2 is running on node linux2

$ srvctl stop instance -d orcl -i orcl1 -o abort

$ srvctl status database -d orcl
Instance orcl1 is not running on node linux1
Instance orcl2 is running on node linux2

다시 앞의 SQL 세션으로 돌아가, 버퍼에 저장된 SQL 구문을 재실행합니다:
COLUMN instance_name    FORMAT a13
COLUMN host_name        FORMAT a9
COLUMN failover_method  FORMAT a15
COLUMN failed_over      FORMAT a11

SELECT
    instance_name
  , host_name
  , NULL AS failover_type
  , NULL AS failover_method
  , NULL AS failed_over
FROM v$instance
UNION
SELECT
    NULL
  , NULL
  , failover_type
  , failover_method
  , failed_over
FROM v$session
WHERE username = 'SYSTEM';

INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
orcl2         linux2
                        SELECT        BASIC           YES

SQL> exit

위 실행 결과에서, 세션이 linux2 노드의 orcl2 인스턴스로 페일오버 되었음을 확인할 수 있습니다.


참조 : http://www.oracle.com/technology/global/kr/pub/articles/hunter_rac10gr2_3.html
         http://www.oracle.com/technology/global/kr/deploy/availability/htdocs/taf.html
         http://publib.boulder.ibm.com/infocenter/pim/v6r0m0/index.jsp?topic=/com.ibm.wpc.ins.doc/wpc_tsk_setting_up_oracle_to_use_taf_support.html

'Oracle > RAC' 카테고리의 다른 글

RAC 설치시 자동으로 올라오는 이유  (0) 2011.03.10
INSTANCE_GROUPS, PARALLEL_INSTANCE_GROUP  (0) 2011.03.02
CTF, TAF 설정  (0) 2010.06.16
srvctl 유틸리티  (1) 2010.06.16
crs_stat 각 정보의 의미는?  (0) 2010.06.14
Posted by 자수성가한 부자
Oracle/Admin2010. 7. 1. 15:22

히든 파라미터가 존재합니다.

_lm_dd_interval

단위는 초입니다. 그리고 default는 60입니다.

60초 동안 기다렸다가 응답이 없을 경우 dead lock으로 간주합니다.



참고로 hidden parameter 확인하는 쿼리는

SQL> select ksppinm name,
                  ksppstvl value,
                  decode(bitand(ksppiflg/256,1),1,'true','false') ses_modifiable,
                  decode(bitand(ksppiflg/65536,3),1,'immediate',2,'deferred',3,'immediate','false') sys_modifiable,
                  ksppdesc description
        from sys.x$ksppi i, sys.x$ksppcv v
        where i.indx = v.indx
                 and i.ksppinm like '%&1%';


참고 : http://cafe.naver.com/prodba
         http://wiki.ex-em.com/index.php/Hidden_parameter

'Oracle > Admin' 카테고리의 다른 글

show sga의 variable size의 크기는?  (0) 2010.08.27
리스너에 패스워드 걸기  (0) 2010.07.07
[펌] DB link  (0) 2010.06.06
[펌] TNS-12546: TNS:permission denied  (0) 2010.05.28
session kill 하는 SQL  (0) 2010.05.21
Posted by 자수성가한 부자
Oracle/RAC2010. 6. 16. 16:37

-         Tnsnames.ora 파일 세팅(클라이언트 쪽)

n        기존 세팅

DEVDB1 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =DEVDB)

    )

)

 

n        CTF 세팅

DEVDB_CTF =

  (DESCRIPTION =

    (LOAD_BALANCE = OFF)

    (FAILOVER = ON)

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =DEVDB)

    )

)

 

1.       rac1 1521포트로 기동된 리스너를 컨택한다.

2.       그 리스너가 DEVDB라는 서비스를 하고 있다면 DEVDB라는 서비스에 등록되어 있는 인스턴스에 접속한다.

3.       만일 1에서 리스너가 응답이 없거나, 2에서 DEVDB라는 서비스가 없다면, 다음에 지정된 어드레스인 rac2 1521포트로 기동된 리스너를 컨택한다. 여기서 리스너가 응답이 없다면 에러를 리턴하며 접속을 하지 못하게 된다.

4.       2와 마찬가지 과정으로 DEVDB서비스에 등록되어 있는 인스턴스를 접속한다. 여기서 DEVDB서비스를 찾을 수 없다면, 마찬가지로 에러를 리턴하며 접속을 하지 못하게 된다.

-         Fail over방식

l        새로 접속하는 클라이언트

만약 rac1에서 장애가 나면 문제없이 rac2로 페일오버 된다.(인스턴스가 가동되고 있다는 가정하에서)

l        기존에 접속되어 있던 클라이언트

ORA-3113/3114 에러를 만나게 되며 기존의 접속은 끊어진다. 실행되고 있던 DML rac2의 인스턴스에서 트랜잭션 복구를 수행하여 모두 롤백된다.

n        TAF 세팅

DEVDB_TAF =

  (DESCRIPTION =

    (LOAD_BALANCE = OFF)

    (FAILOVER = ON)

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac2)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =DEVDB)

      (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC))

    )

)

-         Type

-         Session : 재접속은 필요없음, select fetch도중에 장애를 만나면 fetch는 실패, DW환경이 아니라면 이 방식을 쓰는 것이 좋다.

-         Select : 재접속도 필요없고 fetch도 복구됨. 다량의 레코드를 select할 때 사용.

-         Node : 디폴트 값으로 TAF가 작동하지 않음

-         Method

-         Basic : on-demand 방식으로 페일오버가 필요할 때 살아있는 인스턴스 쪽으로 Oracle Server process를 기동시킨다.

-         Preconnect : 페일오버가 이루어질 인스턴스에 미리 oracle server process를 기동시켜 페일오버시 발생하는 오버헤드를 미리 줄여 놓는 방식이다.

출처 : http://homeboy.tistory.com/73

'Oracle > RAC' 카테고리의 다른 글

RAC 설치시 자동으로 올라오는 이유  (0) 2011.03.10
INSTANCE_GROUPS, PARALLEL_INSTANCE_GROUP  (0) 2011.03.02
TAF (Transparent Application Failover)  (1) 2010.07.07
srvctl 유틸리티  (1) 2010.06.16
crs_stat 각 정보의 의미는?  (0) 2010.06.14
Posted by 자수성가한 부자
Oracle/RAC2010. 6. 16. 13:42

srvctl 유틸리티는 무엇인가?

데이터베이스와 인스턴스, 설정 정보 관리, 인스턴스와 서비스를 이동하거나 제거하는데 쓰이는 유틸리티로
디폴트로 각각의 노드에 설치된다.(물론 RAC 설치시에)

srvctl 유틸리티 사용법은 어떻게 되는가?

사용법을 확인하는 방법은 아래와 같다.

os] srvctl -h

Usage: srvctl [-V]
Usage: srvctl add database -d <name> -o <oracle_home> [-m <domain_name>] [-p <spfile>] [-A <name|ip>/netmask] [-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}] [-s <start_options>] [-n <db_name>] [-y {AUTOMATIC | MANUAL}]
Usage: srvctl add instance -d <name> -i <inst_name> -n <node_name>
Usage: srvctl add service -d <name> -s <service_name> -r "<preferred_list>" [-a "<available_list>"] [-P <TAF_policy>]
.
.
.

start나 stop에 관한 것만 보고 싶을 때는 아래와 같이 하면 된다.

os] srvctl -h | grep start
os] srvctl -h | grep stop

그럼, 실제로 인스턴스를 shutdown 해보고 startup해보자.

현재의 crs status 를 확인해보면

[oracle@rac1 ~]$ crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora....ek1.srv application    ONLINE    ONLINE    rac1       
ora....ek2.srv application    ONLINE    ONLINE    rac2      
ora....ORCL.cs application    ONLINE    ONLINE    rac2      
ora....k1.inst application    ONLINE    ONLINE    rac1       
ora....k2.inst application    ONLINE    ONLINE    rac2      
ora.rac.db     application    ONLINE    ONLINE    rac2      
ora....SM1.asm application    ONLINE    ONLINE    rac1       
ora....FT.lsnr application    ONLINE    ONLINE    rac1       
ora.rac1.gsd   application    ONLINE    ONLINE    rac1       
ora.rac1.ons   application    ONLINE    ONLINE    rac1       
ora.rac1.vip   application    ONLINE    ONLINE    rac1       
ora....SM2.asm application    ONLINE    ONLINE    rac2      
ora....HT.lsnr application    ONLINE    ONLINE    rac2      
ora.rac2.gsd   application    ONLINE    ONLINE    rac2      
ora.rac2.ons   application    ONLINE    ONLINE    rac2      
ora.rac2.vip   application    ONLINE    ONLINE    rac2


여기서 srvctl 유틸리티를 이용하여 인스턴스를 shutdown 해보면

[oracle@left ~]$ srvctl stop instance -d rac -i rac1

명령어 실행 후 crs status 를 확인해보면 rac1 의 인스턴스가 내려가 있는 것을 확인할 수 있다.

[oracle@rac1 ~]$ crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora....ek1.srv application    ONLINE    OFFLINE              
ora....ek2.srv application    ONLINE    ONLINE    rac2      
ora....ORCL.cs application    ONLINE    ONLINE    rac2      
ora....k1.inst application    OFFLINE   OFFLINE              
ora....k2.inst application    ONLINE    ONLINE    rac2      
ora.rac.db     application    ONLINE    ONLINE    rac2      
ora....SM1.asm application    ONLINE    ONLINE    rac1       
ora....FT.lsnr application    ONLINE    ONLINE    rac1       
ora.rac1.gsd   application    ONLINE    ONLINE    rac1       
ora.rac1.ons   application    ONLINE    ONLINE    rac1       
ora.rac1.vip   application    ONLINE    ONLINE    rac1       
ora....SM2.asm application    ONLINE    ONLINE    rac2      
ora....HT.lsnr application    ONLINE    ONLINE    rac2      
ora.rac2.gsd   application    ONLINE    ONLINE    rac2      
ora.rac2.ons   application    ONLINE    ONLINE    rac2      
ora.rac2.vip   application    ONLINE    ONLINE    rac2


위와 같이 srvctl 을 이용하여 데이터베이스, 인스턴스, 그리고 서비스 등을 올렸다 내렸다 할 수 있다.

 

'Oracle > RAC' 카테고리의 다른 글

RAC 설치시 자동으로 올라오는 이유  (0) 2011.03.10
INSTANCE_GROUPS, PARALLEL_INSTANCE_GROUP  (0) 2011.03.02
TAF (Transparent Application Failover)  (1) 2010.07.07
CTF, TAF 설정  (0) 2010.06.16
crs_stat 각 정보의 의미는?  (0) 2010.06.14
Posted by 자수성가한 부자
Oracle/RAC2010. 6. 14. 10:08
RAC 설치 후에는 crs_stat이란 명령어를 사용할 수 있습니다.

우선 오라클 유저로 접속 후 crs_stat 명령을 입력하여 봅시다.

os] crs_stat -t

Name           Type           Target    State     Host       
------------------------------------------------------------
ora....ek1.srv application    ONLINE    ONLINE    left       
ora....ek2.srv application    ONLINE    ONLINE    right      
ora....ORCL.cs application    ONLINE    ONLINE    right      
ora....k1.inst application    ONLINE    ONLINE    left       
ora....k2.inst application    ONLINE    ONLINE    right      
ora.bitek.db   application    ONLINE    ONLINE    right      
ora....SM1.asm application    ONLINE    ONLINE    left       
ora....FT.lsnr application    ONLINE    ONLINE    left       
ora.left.gsd   application    ONLINE    ONLINE    left       
ora.left.ons   application    ONLINE    ONLINE    left       
ora.left.vip   application    ONLINE    ONLINE    left       
ora....SM2.asm application    ONLINE    ONLINE    right      
ora....HT.lsnr application    ONLINE    UNKNOWN   right      
ora.right.gsd  application    ONLINE    UNKNOWN   right      
ora.right.ons  application    ONLINE    UNKNOWN   right      
ora.right.vip  application    ONLINE    ONLINE    right

위와 같은 정보가 나옵니다.

그럼 crs_stat은 어떤 정보를 보여주는 명령어인지 감은 오실겁니다.

정확히 얘기해서 crs_stat은 클러스터 노드의 리소스들에 대한 상태정보를 보여주는 명령어 입니다.

그럼 각 컬럼이 무엇을 의미하는지 알아보죠.

Name : 리소스의 이름을 나타냅니다.
Type : 리소스의 타입을 나타냅니다.
Target : 오라클 클러스터웨어가 리소스에 대해 어떻게 하려고 하는지 보여줍니다.
            만약 target이 online이고, 클러스터 노드가 실패한다면 오라클 클러스터웨어는 다른 노드에서 그 리소스(어플리케이션)을 재시작하려고
            시도합니다.
State : 클러스터 노드에서 성공적으로 실행되고 있는지 아닌지를 보여주는 항목입니다.
          online / offline / unkown
Host :  서버의 hostname을 나타냅니다.



참고로 위의 crs_stat 명령어를 실행하면 리소스 이름들이 잘려보이므로
아래의 스크립트를 이용하면 전체 이름이 잘 나옵니다.
(참고로 os에 따라 명령어의 위치가 달라질 수 있으므로 주의. 아래의 예는 Oracle Enterprise Linux에서는 문제 없이 잘 실행됨.)


#!/usr/bin/ksh
#
# Sample 10g CRS resource status query script
#
# Description:
# - Returns formatted version of crs_stat -t, in tabular
# format, with the complete rsc names and filtering keywords
# - The argument, $RSC_KEY, is optional and if passed to the script, will
# limit the output to HA resources whose names match $RSC_KEY.
# Requirements:
# - $ORA_CRS_HOME should be set in your environment
RSC_KEY=$1
QSTAT=-u
AWK=/bin/awk # if not available use /usr/bin/awk
# Table header:echo ""
$AWK \
'BEGIN {printf "%-45s %-10s %-18s\n", "HA Resource", "Target", "State";
printf "%-45s %-10s %-18s\n", "-----------", "------", "-----";}'
# Table body:
$ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \
'BEGIN { FS="="; state = 0; }
$1~/NAME/ && $2~/'$RSC_KEY'/ {appname = $2; state=1};
state == 0 {next;}
$1~/TARGET/ && state == 1 {apptarget = $2; state=2;}
$1~/STATE/ && state == 2 {appstate = $2; state=3;}
state == 3 {printf "%-45s %-10s %-18s\n", appname, apptarget, appstate;
state=0;}'




'Oracle > RAC' 카테고리의 다른 글

RAC 설치시 자동으로 올라오는 이유  (0) 2011.03.10
INSTANCE_GROUPS, PARALLEL_INSTANCE_GROUP  (0) 2011.03.02
TAF (Transparent Application Failover)  (1) 2010.07.07
CTF, TAF 설정  (0) 2010.06.16
srvctl 유틸리티  (1) 2010.06.16
Posted by 자수성가한 부자
Oracle/Admin2010. 6. 6. 23:16

DB를 사용하다 보면 현재 사용자의 스키마 뿐만 아니라 다른 사용자의 데이터베이스, 혹은 다른 시스템의 데이터베이스를 사용해야 하는 경우가 생긴다. 이때 DBLink를 사용하게 된다. DBLink는 말 그대로 서로 떨어져 있는 데이터베이스 간에 접속을 위하여 사용된다. DBLINK는 일반 사용자 권한으로 만들 수 없고 반드시 DBA 권한이 있어야 한다.

DBLink를 만들기전에 가능한 tnsname.ora 파일에 서버에 관한 정보를 추가해놓는것이 좋다.

 

생성법]

CREATE [private|public] BATABASE LINK 링크명

CONNECT TO 아이디 IDENTIFIED BY 암호

USING 연결할서버TNS

보다시피 상당히 단순한 구조로 되어있다.

하지만 위에서도 언급했다시피, tnsname.ora 파일에 추가한 TNS네임을 입력해야 하며

만약 TNS네임을 추가하지 않았다면 다음과 같은 복잡한 방법을 사용하게 된다.

USING '(description=(address=(protocol=TCP)(host=IP/HostName)(port=Port))(connect_data=(sid=SID)))'      <- TNS네임대신 적어주는내용;

DBLink가 작성되었는지 여부는 SELECT 명령어를 이용하여 확인할수 있다.

SELECT * from all_db_links             일반사용자

SELECT * from dba_db_links            DBA

작성된 DBLink는 다음과 같이 사용할수 있다. 만약 네이밍 룰이 길다고 느껴지면 Synonym을 사용하여 줄이면 된다.

SELECT * from [사용자.]테이블명@링크명

필요없는 DBLink는 다음과 같이 삭제할 수 있다.

DROP DATABASE LINK 링크명

[출처] DBLink|작성자 도토리

'Oracle > Admin' 카테고리의 다른 글

리스너에 패스워드 걸기  (0) 2010.07.07
deadlock을 판단하는데 걸리는 시간은?  (0) 2010.07.01
[펌] TNS-12546: TNS:permission denied  (0) 2010.05.28
session kill 하는 SQL  (0) 2010.05.21
create index, index rebuild  (0) 2010.04.27
Posted by 자수성가한 부자
Oracle/Admin2010. 5. 28. 11:05
장비는 solaris 280R 테스트장비 입니다
각 계정마다 인스턴스(*6EA) 를 올린 상황입니다
[code sql]

LSNRCTL> start
Starting /app/oracle/product/102/bin/tnslsnr: please wait...

TNSLSNR for Solaris: Version 10.2.0.3.0 - Production
System parameter file is /app/oracle/product/102/network/admin/listener.ora
Log messages written to /app/oracle/product/102/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=meta4)))
Error listening on: (DESCRIPTION=(address=(protocol=ipc)(key=meta3)))
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00516: Permission denied
Solaris Error: 13: Permission denied
[/code]

다음과 같은 에러메시지를 나타냅니다.

해결책은 다음과 같습니다
1.기동되고 있는 모든 listener를 stop 시킵니다.
2.1 O/S에서 디렉토리 권한이 제대로 되어있는지 확인합니다.
2.2 다른 O/S에서 같은 IPC를 사용하고 있는지 확인합니다.
3. 위의 경우에도 해결이 되지 않으면 /var/tmp/.oracle 을 확인합니다
보통 자동으로 이 디렉토리가 정리가 되는데 정리가 안되어서 위와같은 에러를 발생시킵니다

mv 나 rm -rf 명령으로 .oracle 디렉토리를 삭제합니다.

listener를 재기동 시킵니다.


출처 : http://junan.kr/442

'Oracle > Admin' 카테고리의 다른 글

deadlock을 판단하는데 걸리는 시간은?  (0) 2010.07.01
[펌] DB link  (0) 2010.06.06
session kill 하는 SQL  (0) 2010.05.21
create index, index rebuild  (0) 2010.04.27
alert_SID.log  (0) 2010.03.24
Posted by 자수성가한 부자