오라클 실습 oracle DB

ALTER USER 유저명 ACCOUNT UNLOCK;
[출처] 오라클 계정 잠금 해제|작성자 임유경

- 계정 생성

   create user 아이디
   identified by 비밀번호


- DBA 롤 권한 주기

   grant create session, dba
   to 아이디


- 암호 변경

   alter user 아이디
   identified by 새로운암호


- 계정 잠그기

   alter user 아이디 account [lock | unlock]


- 테이블 스페이스 확인ss

   select tablespace_name, contents
   from dba_tablespaces
   order by tablespace_name


- 테이블 스페이스 변경

   alter user 아이디
   default tablespace users        -- default 테이블 스페이스
   temporary tablespace temp;    -- 임시 테이블 스페이스


- 사용자 삭제

   DROP USER 아이디
   CASCADE 옵션 사용시 사용자의 모든 것이 같이 삭제
   DROP USER 아이디 CASCADE


SYS 권한(privilege) 유포 확인 쿼리

1) DATABASE에 있는 SYS가 나눠준 모든 권한 보기

SQL> select * from dba_sys_privs;

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
HR                             UNLIMITED TABLESPACE                     NO
OE                             QUERY REWRITE                              NO
OE                             CREATE SNAPSHOT                          NO

;adm = with admin option으로 SYS가 HR에게 권한을 줄때

EX) GRANT greate user TO hr with admin option을 받은 hr은 그 받은 권한만을 다른 대상에게 부여할 수 있다.

2) 모든 계정이 table에 대한 권한을 알아보려면..

SELECT  *   FROM  USER_TAB_PRIVS   --( 내가 가진 객체 권한 )

 


SELECT  *   FROM  USER_TAB_PRIVS_RECD  --( 내가 받은 권한 )

 

SELECT  *   FROM  USER_TAB_PRIVS_MADE  --( 모든 테이블의 권한 확인 )

 

SELECT  *   FROM  DBA_TAB_PRIVS  --( 모든 테이블 관련 권한 )

 

 

▶ User의 생성 및 권한관리

    - User
      모든 Database객체는 특정 user의 소유로 되어 있으며 자신의 소유객체 외에 다른 소유의 객체는 권한이 있어야 접근이 가능
    - Oracle은 user로 Database 사용을 control
    - Database 생성시 자동으로 생성되는 User
      ① SYS
          DBA Role을 가지고 있으며 Data Dictionary Table의 소유자
      ② SYSTEM
          DBA Role을 가지고 있으며 Data Dictionary View의 소유자

⑴ User 생성 및 변경
    - User 생성 구문
       create user user명 identified by 패스워드명    

       SQL > show user          -- 현재 접속된 사용자명
       SQL > create user ocp identified by ocp;

    - User 변경 구문
       password 변경은 해당 user 혹은 dba Role안의 alter user 권한을 가지고 있는 user만 변경이 가능하다.

       SQL> alter user tonkjsp identified by tonkjsp1;
       SQL> conn tonkjsp/tonkjsp1
                연결되었습니다.

⑵ 권한(Privilege)
    - 특정 SQL문을 수행 할 수 있는 권리.
    - Oracle의 모든 명령문은 그에 대한 권한이 있어야만 가능하다.
    - 권한에는 database에서 객체를 정의할 수 있는 System권한과 정의된 객체에 대한 특정 작업을 부여 할 수 있는 객체 권한이 있다.
    - System 권한에서 Any라는 옵션은 다른 계정 소유의 객체에게도 수행 할 수 있다.
      Drop any Table table명
    - 권한   

 

   - 권한 부여 및 회수

   ① system 권한 부여
       grant
               system 권한 [, system권한 ..., rol명... , role명 , .... ]
       to
               {user명 | role명  | public } , [{user명 | role명 | public } .... ]
               [with admin option]

       SQL> grant create session, create table to user;
       SQL> grant create session to user1 with admin option

   ② 객체 권한 부여
       grant
              객체 권한  [, 객체권한 ..., ] || all
              on 대상객체, 대상객체, ....
      to
             {user명 | role명 | public} [,{user명 | role명 | public } ... ]
             [with grant option]

       SQL> grant execute on dbms_pipe
       SQL> to public ;
       SQL> grant upate(ename, sal) on emp
       SQL> to user1
       SQL> with grant option;        

   ③ system 권한 회수
        REVOKE
        system권한[, system권한.., role명, role명]
        from
        {user명 | role명 | public } [,{user명 | role명 | public } ...]

        SQL> revoke create table from user1;

   ④ 객체 권한 회수
        REVOKE
        객체권한 [, 객체권한 ..,]  | ALL
        ON 대상객체, 대상객체, ....
        FROM
        {user명 | role명 | public } [,{user명 | role명 | public} ...]        

        SQL> revoke execute on dbms_pipe from winter;     

    ※ public , all,  with admin option , with grant option

     ① public
         특정 user가 아닌 모든 user에게 권한 부여

     ② all
        객체 권한에 명시하는 것으로 해당 객체의 모든 권한을 부여

     ③ with admin option
         권한 상속

     ④ with grant option
        권한 상속, cascade ,,,,,,

⑶ Role
    - 권한의 모음 , 권한을 묶어서 수많은 권한들을 편리하게 제어할 수 있는 기능
    - 수행하는 명령문이 기존의 권한 부여 및 취소하는 명령과 동일
    - system권한 ,객체권한 모두, 같이 묶을 수 있다.
    - role에 포함된 권한 설정을 변경하면 해당 role을 포함한 계정도 즉시 변경됨.
      그럼으로 구너한 설정 변경에 대한 조치를 취할 필요가 없다.
    - 소유되지 않으면 schema  객체가 아니다.
    - dba 관리자가 생성하면 아무 계정이나 자신의 권한을 포함시킬 수 있다.
    - create role권한이 있으면 다른 계정이라도 role을 생성할 수 있으나 자신의 객체가 되지 않고 공동으로 사용하게 됨.

      SQL> conn system/manager
               연결되었습니다.
      SQL> create role arole;
               롤이 생성되었습니다.
      SQL> create role broke;
               롤이 생성되었습니다.
      SQL>  grant drop any table, select any table to arole;
                권한이 부여되었습니다.
      SQL> conn tonkjsp/tonkjsp1
                연결되었습니다.
      SQL> grant select on staff to broke;
                권한이 부여되었습니다.

 

 

=== User Managerment ===              

 - sys 사용자    : Database 내의 모든 권한을 갖구 있다.
 - system 사용자 : DBA, pw : manager     
 - scott 사용자 : pw : tiger, 사용자별 공간, 리소스 제한, 패스워드 관리, 세션관리 등
 - table, view, trigger등 database object는 사용자별로 생성, object 소유자는 해당 object를 생성한 사용자
                                      
* 사용자 생성 (system 계정에서)
  create user oratest identified by oratest;  //user:oratest pw:oratest
                                      
  create oratest indetified by oratest  
  default tablespace appl_data   // 해당 사용자 아이디가 사용할 테이블 등의 오브젝트들을 생성하고자 할때 할당되는 테이블스페이스
  temporary tablespace temp;     // 해당 사용자 아이디가 Sort, Group by 등의 작업을 수행하고자 할때 사용되는 테이블스페이스
                                      
  create oratest indetified by oratest  
  default tablespace appl_data        
  temporary tablespace temp           
  quota 15M on appl_data
  quota 10M on system;
                                      

* 변경
  alter user oratest identified by studyhard; (암호바꾸기)
                                      
  alter user oratest default tablespace users; (테이블스페이스 바꾸기)
                                      
  alter user oratest                    
  default tablespace users            
  quota 20M on users;                 
                                      

* 제거
  drop user oratest;                    
  drop user oratest cascade; (객체가 들어 있을때)

* user 보기 - 딕셔너리
  select * from dba_users;              
  select * from user_users;             

* 사용자 공간 할당 모니터링- 딕셔너리
  select * from user_ts_quotas;         
  select * from dba_ts_quotas;          
                                    
* 사용자 세션 모니터링 및 중단
  select sid, serial#, username, program from v$session;
  alter system kill session '13, 25060'; (sid, serial#)
                                      
  col program format A20;               
                                      

----------------------------------------------------------------------------------------
=== Password Managerment ===          
                                      
 - account locking : 횟수이상 틀리면 락 걸음.
 - password aging and expiration : password 유효기간 설정.
 - password history : 이전에 사용했던 password 다시 사용못함.
 - password complexity verification : 복잡성 체크

                                      
* account locking
 careate profile my_profile limit      
         failed_login_attempts 4  (4번 기회)
         password_lock_time 30;  (30일동안)
 alter user scott profile my_profile; (적용)
 alter user scott account unlock; (락걸렸을때 해제)
 alter user scott accout lock; (걍 잠구기)

                                       
* password aging and expiration
 create profile my_profile limit       
        failed_login_attempts 4  (4번 기회)
        password_lock_time 30  (30일동안)failed
        password_life_time 60  (유효 60일)
        password_grace_time 3  (유예기간 3일)
                                       
 alter user scott profile my_profile; (적용)
 alter user scott password expire; (걍 잠구기)

                                       
* password history
 create profile my_profile limit       
        password_reuse_time 60 (60일 동안 사용할수 없음)
        password_reuse_max unlimited;  
 alter user scott profile my_profile; (적용)

 create profile my_profile limit       
        password_reuse_max 3           
        password_reuse_max unlimited;  
 alter user scott profile my_profile; (적용)
                                       

* password complexity verification :스크립트(utlpwdmg.sql)사용
 - 스크립트 위치 : /oracle\Ora81\RDBMS\ADMIN\utlpwdmg.sql
 - sys 계정에서 해야한다.              
     
                                       
* 최종                                
 careate profile my_profile limit      
        failed_login_attempts 4  (4번 기회)      
        password_life_time 60  (패스워드 사용일수)
        password_reuse_time 60 (60일 동안 사용할수 없음)
        password_reuse_max unlimited   
        password_verify_function verify_function (암호검증_
        password_lock_time 1/24 (로그인 시도시 실패 후 account lock걸려있는 기간)
        password_grace_time 0; (첫번째 로그 성공후 password 소멸 전에 변경 할 수 있는 유예기간)

                                       
* profile 초기화
 careate profile my_profile unlimited  
        failed_login_attempts unlimited  (4번 기회)      
        password_life_time unlimited  (패스워드 사용일수)
        password_reuse_time unlimited (60일 동안 사용할수 없음)
        password_reuse_max unlimited   
        password_verify_function null (암호검증_
        password_lock_time unlimited  (로그인 시도시 실패 후 account lock걸려있는 기간)
        password_grace_time unlimited; (첫번째 로그 성공후 password 소멸 전에 변경 할 수 있는 유예기간)
                                       

* password 딕셔너리
 select resource_name, limit from dba_profiles
      where profile="my_profile' and resource_type = 'password';
                                       
 
 ----------------------------------------------------------------------------------------
 === 시스템 권한 === 
                  
 - create session : 궈한을 받은자(grantee) 데이타베이스 접속할 수 있게
 - create table : 테이블, 인덱스 생성, (unlimited tablespace 같이 준다.)
 - unlimited tablespace : 테이블스페이스에서 블록을 할당
 - select any table : 어떤 schema로 된 snapshot이라도 검색할 수 있다.
                                       
* 권한 주기 - system 권한에서
 create user acc_user identified by acc1030;
 grant create session to acc_user; (세션주기)
 grant create session to public; (전체 유저에게)
 grant create table, unlimited tablespace to acc_user;(table 생성 권한주기)
 
                                       
* 권한 회수
 revoke create session from acc_user; (권한 회수)
                                       
 
* 사용자가 다른사용자에게 권한주기 with admin option이 있어야 함
 connect system/manager                
 create user a_user identified by a1030;
 create user b_user identified by b1030;
 grant create session to a_user with admin option;
 connect a_user/a1030;                 
 grant create session to b_user with admin option;
                                       
* 딕셔너리                            
 select * from dba_sys_privs;          

                                       
----------------------------------------------------------------------------------------
=== object privileges ===                 
 
* 권한 주기
 connect scott/tiger                   
 grant select on emp to acc_user; (select 권한 주기)
 grant insert on emp to acc_user; (insert 권한 주기)
 grant update (sal) n emp to acc_user; (sal 컬럼 update 권한 주기)
 connect acc_user/acc1030;             
 select * from scott.emp;              
                                       
* 권한 회수
 revoke update on emp from acc_user;   
                                       
* 사용자가 다른사용자에게 권한주기 with admin option이 있어야 함
 - 시스템 권한은 계층적이다.           
 - revoke 할때 cascade 된다.           
                                       
* 딕셔너리                            
 user_tab_privs : 사용자가 소유자, 부여자 또는 권한을 받은 자인 경우의 오브젝트에 대한 권한.
 user_tab_privs_made : 사용자가 소유하고 있는 오브젝트에 대한 모든 권한
 user_tab_privs_recd : 사용자가 권한을 받은 자인 경우의 오브젝트에 대한 권한.
 user_col_privs : 사용자가 소유자, 부여자 또는 권한을 받은 자인 경우 열에 대한 권한
 user_col_privs_made : 사용자가 소유하고 있는 오브젝트의 열에 대한  모든 권한
 user_col_privs_recd : 사용자가 권하을 받은자인 경우의 열에 대한 권한
                                       
                                       
 ----------------------------------------------------------------------------------------
 
 === Roles ===                         
 
 - 권한들의 묶음                       
 - System권한, Object 권한 모두 구성되어 질수 있다.
 - Enable/Disable 될 수 있다.          
 - Role은 Password를 가질 수 있다.     
                                       
* 생성                                
 create role clerk_role not inentified; (암호 필요 X)
 create role clerk_role indentified by xyz901; (암호 필요)
                                       
* rolls에게 권한부여                 
 grant create session, create table to clerk_role;
                                       
* 사용자에게 부여                     
 grant clerk_role to sctt, other_role; 
                                       
* role 활성화/비활성화                
 set role clerk_role identified by xyz901; (clerk_role만 활성화, 나머진 비활성화)
 set role all excpt acct_role; (acct_role 빼구 모든 role 활성화)
 set role none; (모두 비활성화)        
                                       
* 예제                                
 create user pay_clack identified by pay_clerk;
 create user manager identified by manager;
 create user president identified by president;
                                       
 grant create session to pay_clerk, manager, president; (접속 권한 주기)
 grant create role to scott;(roll 생성 권한 주기)
                                       
 conn scatt/tiger;                     
 create role pay_clerk_role not identified;
 create role manager_role not identified;
 create role president_role not identified;
                                       
 grant select on emp to pay_clerk_role, manager_role;
 grant update(sal, comm) on emp to pay_clerk_role;
 grant update(mgr, depno) on emp to manager_role;
 grant pay_clerk_role, manager to president_role;
 grant pay_clerk_role to pay_clerk;    
 grant manager_role to manager;        
 grant preident_role to presidet;      
                                       
* 딕셔너리
 role_sys_privs  : role에 부여된 시스템 권한에 대한 정보
 role_tab_privs  : role에 부여된 테이블 권한에 대한 정보
 role_role_privs : 다른 role에 부여된 role에 대한 정보
 session_roles   : 현재 사용자에게 활성화된 role에 대한 정보
 user_role_privs : 사용자에게 부여된 role에 대한 정보
 dba_sys_privs   : 사용자 및 role에 부여된 시스템 권하에 대한 정보
 dba_roles       : 데이터베이스에 존재하는 모든 role에 대한 정보


[펌]CRS 와 10G REAL APPLICATION CLUSTERS oracle DB

제품 : ORACLE SERVER

작성날짜 : 2004-11-30


CRS 와 10G REAL APPLICATION CLUSTERS
===================================

 

PURPOSE
\-------
이 문서는, 10g Real Application Cluster의 CRS (Cluster Ready Services)에 대한 추가적인
정보를 제공하는 것을 목적으로 한다.


Explanation
\-----------
1. CRS 와 10g REAL APPLICATION CLUSTERS

CRS (Cluster Ready Services)는 10g Real Application Cluster의 새로운 기능으로,
모든 플랫폼에 대해 표준화된 클러스터 인터페이스를 제공 해 주고, 이전 버전에서는 없었던
새로운 고가용 서비스를 제공해 준다.


2. CRS 핵심 기능

CRS와 10g RAC를 설치하기 전에, CRS및 10g RAC에 대해 사전에 알아 두어야 할 사항이 있다 :

\- 10g RAC를 설치를 위해서는 CRS는 사전에 설치 되고 실행되어야 한다.

\- CRS는 하드웨어 공급 업체에서 제공하는 클러스터 제품 (예 : Sun Cluster,
HP Serviceguard, IBM HACMP, TruCluster, Veritas Cluster, Fujitsu Primecluster,
기타 ...) 위에서 실행 될 수도 있고, 하드웨어 공급 업체에서 제공하는 클러스터 제품
없이도 실행될 수 있다. 하드웨어 업체에서 공급하는 클러스터 제품은 9i RAC까지는 반드시
필요했지만, 10g RAC에서는 선택 사항이다.

\- CRS HOME 과 ORACLE_HOME 은 반드시 다른 디렉토리에 설치 되어야 한다.

\- CRS를 설치하기 전에, voting 파일 또는 OCR (Oracle Configuration Repository) 파일을
설치 할 수 있는 공유된 디렉토리 또는 디바이스가 셋업되어야 한다. voting file은 최소 20MB 정도
크기이며, OCR 파일은, 최소 100MB 크기가 되어야 한다.

\- CRS 및 RAC를 설치하기 위해서는 다음과 같은 네트워크 인터페이스가 구성되어야 한다 :
- Public Interface
- Private Interface
- Virtual (Public) Interface
관련된 추가적인 정보는 참조.

\- CRS 설치 후 root.sh를 실행시키면 CRS 서비스를 구동시킨다. 만약 CRS가 정상적으로
구동되지 않는다면, Note 240001.1 참조.

\- RAC 노드당 1개의 CRS 데모만 실행 가능.

\- 유닉스 시스템의 경우, CRS 서비스는 /etc/inittab 상의 ‘respawn’ entry로 등록되어 있다.

\- 네트워크 split이 있을 경우 (노드간 통신 두절) data corruption을 방지 하기 위해 하나
또는 그 이상의 노드에서 리부팅이 발생할 수 있다.

\- CRS 서비스를 구동시키는 올바른 방법은 장비를 부팅시키는 것이다.

\- 서비스를 중단시키는 올바른 방법은, 장비를 shutdown 시키거나, 'init.crs stop' 명령을
실행시키는 것이다.

\- CRS 데몬을 kill 시키는 것은 올바른 방법이 아니며, 오직 설치된 CRS를 제거한 경우에만
적용해도 되는 방법이다. (Bulletin No: 22343 참조) 이것은 , 플래그 파일에 불일치가 발생 할
수 있기 때문이다.

\- 시스템 유지 보수를 위해서는, OS를 단일 사용자 모드 (single user mode)로 전환한다.

서비스 스택이 구동되면, ps -ef 명령으로 관련된 데몬 프로세스를 확인 할 수 있다 :

\[rac1]/u01/home/beta> ps -ef | grep crs

oracle 1363 999 0 11:23:21 ? 0:00 /u01/crs_home/bin/evmlogger.bin -o /u01
oracle 999 1 0 11:21:39 ? 0:01 /u01/crs_home/bin/evmd.bin
root 1003 1 0 11:21:39 ? 0:01 /u01/crs_home/bin/crsd.bin
oracle 1002 1 0 11:21:39 ? 0:01 /u01/crs_home/bin/ocssd.bin


3. CRS DAEMON 기능

다음은 각각의 CRS 데몬 프로세스에 대한 간략한 설명이다 :

CRSD:
\- HA 작업을 위한 엔진
- '애플리케이션 자원'관리
- '애플리케이션 자원'을 구동, 정지, fail over 처리
- 애플리케이션 자원 구동/정지/점검 하기 위한 별도의 'actions'을 spawn
- OCR(Oracle Configuration Repository)의 구성 프로파일 관리
- OCR의 현재 알려진 상태를 저장
- root 권한으로 실행
- 장애 발생시 자동으로 재 구동됨

OCSSD:
\- OCSSD는 RAC의 일부로, ASM과 함께 단일 인스턴스를 구성함
- 노드 멤버쉽에 대한 액세스를 제공
- 그룹 서비스 제공
- 기본적인 클러스터 lock 기능 제공
- 하드웨어 공급 업체에서 제공하는 클러스터 소프트웨어가 설치되어 있을 경우, 통합을 실시
- 하드웨어 공급 업체에서 제공하는 클러스터 소프트웨어 없이도 실행 가능
- 오라클 계정으로 실행
- 장애로 인한 종료시 시스템 리부팅됨
--- 리부팅은 split brain 현상 발생시, 데이터 corruption 방지를 목적으로 함.

EVMD:
\- 특정한 사건 발생 시 이벤트 생성
- 자식 프로세스로 evmlogger를 spawn 시킴
- Evmlogger는 필요시 자식 프로세스를 spawn 시킴
- callout directory를 스캔하고 callout을 호출
- 오라클 계정으로 실행.
- 장애로 인한 종료시 자동으로 재 구동됨


4. CRS 로그 디렉토리

CRS 문제의 원인을 추적할 때는, CRS 홈 디렉토리 아래 디렉토리를 살펴보는 것이
중요하다.

$ORA_CRS_HOME/crs/log - 이 디렉토리는, CRS 자원들에 대한 트레이스를 포함하며,
CRS에 의해 식별된 가입(joining), 탈퇴(leaving), 재구동(restarting), 재배치(relocating)와
관련된 정보들이 기록된다.

$ORA_CRS_HOME/crs/init - crsd.bin 데몬과 관련된 모든 core dump가 기록된다.

$ORA_CRS_HOME/css/log - css 로그는, 재구성(reconfiguration)이나, 성공하지
못한 체크인 (missed checkin), 클라이언트의 css listener로 부터 발생한 연결(connect) 및
연결해제(disconnect)와 관련된 모든 액션을 기록한다. 때에 따라서는 로거에서는 (auth.crit)
유형의 메시지를 남기는데 이것은 오라클에 의해 리부팅이 발생할 때 남는다. 이 정보는
리부팅이 정확히 언제 발생했는지를 확인하는데 사용될 수 있다.

$ORA_CRS_HOME/css/init - 기본적으로는 ocssd로 부터의 core dump 파일을 저장하며, 프로세스의
종료가 심각한 문제로 간주되는 css 데몬의 pid 정보 또한 기록된다. css의 비정상 재 구동이 발생할
경우, core 파일은, core. 형태로 기록된다.

$ORA_CRS_HOME/evm/log - evn과 evmlogger 데몬의 로그 파일이 기록된다. CRS 또는 CSS 관련 디렉토리
처럼 디버깅 용도로 자주 사용되지는 않는다.

$ORA_CRS_HOME/evm/init - EVM의 pid와 lock 파일이 저장된다. EVM으로 부터 발생한 core 파일 또한
이 디렉토리에 저장된다. 디버깅을 위해서는 Note 1812.1 참조.

$ORA_CRS_HOME/srvm/log - OCR을 위한 로그 파일.


5. CRS 자원의 상태

RAC를 설치하고, RAC root.sh을 실행시키면 VIPCA (Virtual IP Configuration Assistant)가
구동된다. crs_stat 명령을 이용하여 모든 CRS 자원을 확인할 수 있다. 예 :

cd $ORA_CRS_HOME/bin
./crs_stat

NAME=ora.rac1.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE

NAME=ora.rac1.oem
TYPE=application
TARGET=ONLINE
STATE=ONLINE

NAME=ora.rac1.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE

NAME=ora.rac1.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE

NAME=ora.rac2.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE

NAME=ora.rac2.oem
TYPE=application
TARGET=ONLINE
STATE=ONLINE

NAME=ora.rac2.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE

NAME=ora.rac2.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE

CRS 자원을 읽기 쉬운 형태로 확인하기 위한 스크립트 또한 사용할 수 있다.
다음은 shell script의 예이다 :

\--------------------------- Begin Shell Script \-------------------------------

#!/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=/usr/xpg4/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;}'

\--------------------------- End Shell Script \-------------------------------

실행 결과 예시 :

\[opcbsol1]/u01/home/usupport> ./crsstat
HA Resource Target State
\----------- \------ \-----
ora.V10SN.V10SN1.inst ONLINE ONLINE on opcbsol1
ora.V10SN.V10SN2.inst ONLINE ONLINE on opcbsol2
ora.V10SN.db ONLINE ONLINE on opcbsol2
ora.opcbsol1.ASM1.asm ONLINE ONLINE on opcbsol1
ora.opcbsol1.LISTENER_OPCBSOL1.lsnr ONLINE ONLINE on opcbsol1
ora.opcbsol1.gsd ONLINE ONLINE on opcbsol1
ora.opcbsol1.ons ONLINE ONLINE on opcbsol1
ora.opcbsol1.vip ONLINE ONLINE on opcbsol1
ora.opcbsol2.ASM2.asm ONLINE ONLINE on opcbsol2
ora.opcbsol2.LISTENER_OPCBSOL2.lsnr ONLINE ONLINE on opcbsol2
ora.opcbsol2.gsd ONLINE ONLINE on opcbsol2
ora.opcbsol2.ons ONLINE ONLINE on opcbsol2
ora.opcbsol2.vip ONLINE ONLINE on opcbsol2

 

6. CRS 자원 관리

자원을 관리하기 위해서는, srvctl 명령을 사용한다. 다음은 명령어 문법 예제이다.


1) CRS 자원 상태

srvctl status database -d \[-f] \[-v] \[-S ]
srvctl status instance -d -i >\[,]
\[-f] \[-v] \[-S ]
srvctl status service -d -s \[,]
\[-f] \[-v] \[-S ]
srvctl status nodeapps \[-n ]
srvctl status asm -n

예제:

데이터베이스의 상태, 모든 인스턴스와 모든 서비스
srvctl status database -d ORACLE -v
이름이 부여된 인스턴스의 상태와 현재 서비스
srvctl status instance -d ORACLE -i RAC01, RAC02 -v
이름이 부여된 서비스의 상태.
srvctl status service -d ORACLE -s ERP -v
데이터베이스 애플리케이션을 지원하는 모든 노드의 상태.
srvctl status node


2) CRS 자원의 구동

srvctl start database -d \[-o < start-options>]
\[-c | -q]
srvctl start instance -d -i
\[,] \[-o ] \[-c | -q]
srvctl start service -d [-s \[,]]
\[-i ] \[-o ] \[-c | -q]
srvctl start nodeapps -n
srvctl start asm -n \[-i ] \[-o ]

예제:

데이터베이스를 모든 활성화된 인스턴스와 함께 구동.
srvctl start database -d ORACLE
이름이 부여된 인스턴스의 구동.
srvctl start instance -d ORACLE -i RAC03, RAC04
이름이 부여된 서비스의 구동. 연관된 인스턴스는 필요시 구동됨.
srvctl start service -d ORACLE -s CRM
이름이 부여된 인스턴스의 서비스의 구동.
srvctl start service -d ORACLE -s CRM -i RAC04
노드 애플리케이션의 구동.
srvctl start nodeapps -n myclust-4

 

3) CRS 자원의 정지

srvctl stop database -d \[-o ]
\[-c | -q]
srvctl stop instance -d -i \[,]
\[-o ]\[-c | -q]
srvctl stop service -d [-s \[,]]
\[-i ]\[-c | -q] \[-f]
srvctl stop nodeapps -n
srvctl stop asm -n \[-i ] \[-o ]

예제:

데이터베이스, 모든 인스턴스, 모든 서비스를 정지 시킴.
srvctl stop database -d ORACLE
이름이 부여된 인스턴스를 정지 시킴. 그 전에 우선 존재하는 모든 서비스를 재배치 함.
srvctl stop instance -d ORACLE -i RAC03,RAC04
서비스를 정지시킴.
srvctl stop service -d ORACLE -s CRM
이름이 부여된 인스턴스의 서비스를 정지 시킴.
srvctl stop service -d ORACLE -s CRM -i RAC04
노드 애플리케이션을 정지 시킴. 인스턴스와 서비스 역시 정지됨.
srvctl stop nodeapps -n myclust-4


4) CRS 자원의 추가

srvctl add database -d -o \[-m ] \[-p ]
\[-A /netmask] \[-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}]
\[-s ] \[-n ]
srvctl add instance -d -i -n
srvctl add service -d -s -r
\[-a ] \[-P ] \[-u]
srvctl add nodeapps -n -o
[-A /netmask[/if1\[|if2|...]]]
srvctl add asm -n -i -o

OPTIONS:

-A vip range, node, and database, address specification. The format of
address string is:
\[]//[/host interface2 |..]>] [,] \[]//
[/]
-a for services, list of available instances, this list cannot include
preferred instances
-m domain name with the format “us.mydomain.com”
-n node name that will support one or more instances
-o $ORACLE_HOME to locate Oracle binaries
-P for services, TAF preconnect policy - NONE, PRECONNECT
-r for services, list of preferred instances, this list cannot include
available instances.
-s spfile name
-u updates the preferred or available list for the service to support the
specified instance. Only one instance may be specified with the -u
switch. Instances that already support the service should not be
included.

예제:

새로운 노드의 추가.
srvctl add nodeapps -n myclust-1 -o $ORACLE_HOME ?A
139.184.201.1/255.255.255.0/hme0
새로운 데이터 베이스의 추가.
srvctl add database -d ORACLE -o $ORACLE_HOME
이미 존제하는 데이터베이스에 이름이 부여된 인스턴스 추가.
srvctl add instance -d ORACLE -i RAC01 -n myclust-1
srvctl add instance -d ORACLE -i RAC02 -n myclust-2
srvctl add instance -d ORACLE -i RAC03 -n myclust-3
서비스를 이미 존재하는 데이터베이스에 추가하며, 선호되는 인스턴스를 지정 (-r)하고,
가용한 인스턴스를 지정함(-a). 가용 인스턴스에 대해서는 기본 failover를 사용함.
srvctl add service -d ORACLE -s STD_BATCH -r RAC01,RAC02 -a RAC03,RAC04
이미 존재하는 데이터베이스에 선호되는 인스턴스를 list 1, 가용한 인스턴스를 list 2에
추가함. 가용 인스턴스에 대해서는 사전연결 (preconnect) 방식을 사용함.
srvctl add service -d ORACLE -s STD_BATCH -r RAC01,RAC02 -a RAC03,RAC04 -P PRECONNECT


5) CRS RE자원의 제거

srvctl remove database -d
srvctl remove instance -d \[-i ]
srvctl remove service -d -s \[-i ]
srvctl remove nodeapps -n

예제:

데이터베이스에 대한 애플리케이션의 제거.
srvctl remove database -d ORACLE
이미 존재하는 데이터베이스의 이름이 부여된 인스턴스에 대한 애플리케이션 제거.
srvctl remove instance -d ORACLE -i RAC03
srvctl remove instance -d ORACLE -i RAC04
서비스 제거.
srvctl remove service -d ORACLE -s STD_BATCH
인스턴스로부터 서비스 제거.
srvctl remove service -d ORACLE -s STD_BATCH -i RAC03,RAC04
노드로 부터 모든 노드 애플리케이션 제거.
srvctl remove nodeapps -n myclust-4


6) CRS 자원의 변경

srvctl modify database -d \[-n ] \[-m ]
\[-p ] \[-r {PRIMARY | PHYSICAL_STANDBY | LOGICAL_STANDBY}]
\[-s ]
srvctl modify instance -d -i -n
srvctl modify instance -d -i {-s | -r}
srvctl modify service -d -s -i
-t \[-f]
srvctl modify service -d -s -i
-r \[-f]
srvctl modify nodeapps -n \[-A ] \[-x]

OPTIONS:

-i -t the instance name (-i) is replaced by the
instance name (-t)
-i -r the named instance is modified to be a preferred instance
-A address-list for VIP application, at node level
-s add or remove ASM dependency

예제:

인스턴스가 다른 노드에서 실행되도록 변경.
srvctl moinstance -d ORACLE -n myclust-4
서비스가 다른 노드에서 실행되도록 변경.
srvctl modify service -d ORACLE -s HOT_BATCH -i RAC01 -t RAC02
인스턴스가 서비스의 선호되는 인스턴스가 되도록 변경.
srvctl modify service -d ORACLE -s HOT_BATCH -i RAC02 ?r


7) SERVICE의 재 배치

srvctl relocate service -d -s \[-i ]-t \[-f]

예제:

서비스를 한 인스턴스에서 다른 인스턴스로 재 배치
srvctl relocate service -d ORACLE -s CRM -i RAC04 -t RAC01

 

8) CRS 자원을 활성화 (자원은 이 기능을 사용할 당시 실행중이거나, 정지된 상태일 수 있음)

srvctl enable database -d
srvctl enable instance -d -i \[,]
srvctl enable service -d -s ] \[, ] \[-i ]

예제:

데이터베이스를 활성화.
srvctl enable database -d ORACLE
이름이 부여된 인스턴스의 활성화.
srvctl enable instance -d ORACLE -i RAC01, RAC02
서비스의 활성화.
srvctl enable service -d ORACLE -s ERP,CRM
이름이 부여된 인스턴스에서 서비스의 활성화.
srvctl enable service -d ORACLE -s CRM -i RAC03


9) CRS 자원의 비활성화 (자원은 이 기능을 사용할 당시 정지된 상태 이어야만 함)

srvctl disable database -d
srvctl disable instance -d -i \[,]
srvctl disable service -d -s ] \[,] \[-i ]

예제:

데이터베이스를 전역(global) 비활성화 시킴.
srvctl disable database -d ORACLE
이름이 부여된 인스턴스의 비활성화.
srvctl disable instance -d ORACLE -i RAC01, RAC02
서비스를 전역(global) 비활성화.
srvctl disable service -d ORACLE -s ERP,CRM
이름이 부여된 인스턴스상의 서비스를 비 활성화.
srvctl disable service -d ORACLE -s CRM -i RAC03,RAC04

 

추가 정보는 Oracle10g Real Application Clusters Administrator's Guide - Appendix B 참조


Example
\-------


Reference Documents
\-------------------
CRS and 10g Real Application Clusters


[펌] SAN 스우치의 포트 조닝 Storage

제  목 : SAN 스위치의 포트 조닝(zoning) 설정(Brocade 제품)
글쓴이 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2004.7.19(월)
정리일 : 2004.9.06(월)

1. 조닝이란

SAN 스토리지 환경에서 SAN 스위치에 연결된 서버가 지정한 스토리지만 액세스할 수 있도록 권한부여하는
것을 의미한다.

2. 시스템 구성 예

- 16포트의 SAN 스위치(Brocade Silkworm 모델)
- 서버 5대
  mng1(15번 포트), web1(14번), st1(13번), st2(12번), test(11번)
- SAN 스토리지 2대에 4개의 볼륨
  main_a(0번 포트), main_b(1번), bak_a(2번), bak_b(3번)

각 서버는 다음 볼륨만 볼 수 있도록 조닝한다.

- mng1는 모든 볼륨을 사용
- web1은 main_b볼륨만
- st1은  main_a볼륨만
- st2는  main_a, main_b 볼륨만
- test는 main_b 볼륨만



3. 포트 조닝 설정

telnet이나 시리얼 케이블로 SAN 스위치에 로긴한 후 다음 명령으로 설정한다.

 
Fabric OS (tm) Release v3.?.?

login: admin
Password: ????????

sw1:admin> zonecreate "mng1_stor_all",    "1,15;1,0;1,1;1,2;1,3"
sw1:admin> zonecreate "web1_stor_main_b", "1,14;1,1"
sw1:admin> zonecreate "st1_stor_main_a",  "1,13;1,0"
sw1:admin> zonecreate "st2_stor_main_ab", "1,12;1,0;1,1"
sw1:admin> zonecreate "test_stor_main_b", "1,11;1,1"
sw1:admin>
sw1:admin> cfgcreate  "coffeenix_cfg",    "mng1_stor_all;web1_stor_main_b; st1_stor_main_a; st2_stor_main_ab; test_stor_main_b"
sw1:admin> zoneshow
Defined configuration:
cfg: coffeenix_cfg
      mng1_stor_all; web1_stor_main_b; st1_stor_main_a;
      st2_stor_main_ab; test_stor_main_b
zone: mng1_stor_all
      1,15; 1,0; 1,1; 1,2; 1,3
zone: st1_stor_main_a
      1,13; 1,0
zone: st2_stor_main_ab
      1,12; 1,0; 1,1
zone: test_stor_main_b
      1,11; 1,1
zone: web1_stor_main_b
      1,14; 1,1

Type to continue, Q to stop: ?
Effective configuration:
cfg: coffeenix_cfg
zone: mng1_stor_all
1,15
1,0
1,1
1,2
1,3
zone: st1_stor_main_a
1,13
1,0
zone: st2_stor_main_ab
1,12
1,0
1,1
zone: test_stor_main_b
1,11
1,1
zone: web1_stor_main_b
1,14
1,1

sw1:admin>
sw1:admin> cfgenable "coffeenix_cfg"
Starting the Commit operation...
0x102914f0 (tRcs): Jun 19 14:20:03
INFO ZONE-MSGSAVE, 4, cfgSave completes successfully.

cfgEnable successfully completed
sw1:admin> cfgsave

 


4. 기타 명령

이외에 조닝할 때 유용한 명령은 다음과 같은 것이 있다.

1) 지정한 존을 삭제한다.

   admin> zonedelete "st3_stor_main_ab"

2) 스위치 이름을 지정한 것으로 변경한다.

   admin> switchname "sw1"

3) 이더넷과 FC IP 주소를 출력한다.

   admin> ipaddrshow

4) 비밀번호를 변경한다.

   admin> passwd "admin"

즐겨찾기 유익한 자료


ccna,ccnp Network


1 2 3 4 5 6 7 8 9 10 다음


메모장