본문 바로가기

DB

06강

Oracle Administration Workshop Ⅰ

 

4장 Managing the Oracle Instance

 

 Isqlplus로 remote db에 관리자로 접근하여 db startup하기
  • remote에서 db에 관리자로 접근하기 위해서 isqlplus의 id:jfv, pw:jfv라는 user를 추가 하고 그 user가 dba권한을 갖도록 설정한다.
  1. 10gWSI: 4-10. Setting Up iSQL*Plus for SYSDBA and SYSOPER
  2. 0. Stop the isqlplus application
    1. Create users for the iSQL*Plus DBA URL.
    2. Grant the webDba role to the users.
    3. Restart the iSQL*Plus server after making any changes
       to the JAZN authentication file, jazn-data.xml.
    4.Test iSQL*Plus DBA Access.
  3. 0
    $isqlplusctl stop
  4. 1.To start the JAZN shell, enter:
    >vi .bash_profile
       JAVA_HOME=$ORACLE_HOME/jdk; export JAVA_HOME <--확인만 하삼
  5. >cd $ORACLE_HOME/oc4j/j2ee/isqlplus/application-deployments/isqlplus
  6. >$JAVA_HOME/bin/java   \
        -Djava.security.properties=$ORACLE_HOME/oc4j/j2ee/home/config/jazn.security.props \
        -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar \
        -user "iSQL*Plus DBA/admin"  \
        -password welcome -shell
  7. 2.Create Users, Grant Users the webDba Role
  8. JAZN:> listusers "iSQL*Plus DBA"
    admin
  9. JAZN:> adduser "iSQL*Plus DBA" jfv jfv         <-->  remuser "iSQL*Plus DBA"  jfv
                                                         setpasswd "iSQL*Plus DBA" jfv jfv oracle
  10. JAZN:> grantrole webDba "iSQL*Plus DBA" jfv    <-->  revokerole webDba "iSQL*Plus DBA" jfv
    JAZN:> exit
  11. 3.Restart the iSQL*Plus server
    > isqlplusctl start

 

Database Startup and Shutdown
  • Startup

    • option

      1. STARTUP NOMOUNT (NOMOUNT 단계까지 진행)

        • Opening Controlfiles
        • (v$sga, v$bgprocess)
      2. STARTUP MOUNT (MOUNT 단계까지 진행)

        • Opening Datafiles, Redologfiles
        • (v$datafile, v$logfile, v$controlfiles)
      3. STARTUP OPEN (OPEN 단계까지 진행 : Default)

        • (dba_xxx, all_xxx, user_xxx)
    •  option 하위의 v$...등등은 각 단계에서 사용가능해 지는 view들이다.

       startup 되다가 혹시라도 중단될때 각각의 view조회해서 어디쯤에서 멈췄는지 알수 있다.

    1.  ALERT DATABASE MOUNT;  --NOMOUNT 단계에서 MOUNT 로 진행하라는 명령
    2.  ALERT DATABASE OPEN;   --MOUNT 단계에서 OPEN 단계로 진행하라는 명령
  • Shutdown

    • shutdown normal : 사용자가 나갈때 까지 기다려
    • shutdown immediate : 현재 commit된건 ok 인데 나머지는 rollback 하고 죽여
    • shutdown transactional : 현재 진행되는 Tx만 끝나면 죽여! 새로운 Tx는 안받아줘!
    • shutdown abort : 파워 뽑아버려!!!!
진단 File
  1. Alert log

    •  목적 : 오라클 서버가 정상적으로 돌고 있는지 확인 목적
    • 인스턴스당 반드시 하나 존재
    • 물리적 구조에 대해 영향을 미치는 명령을 실행시 관련된 정보 기록
    • background_dump_dest parameter에 존재 한다.
    • 파일명은: alert_orcl.log (alert_인스턴스명.log)

      • alert_orcl.log는 자꾸 커지는 파일인데 너무 크게 되서 dist꽉 차게 되면 startup나 shutdown시 에러가 발생한다.
  2. Trace file (퍼퍼먼스 목적이다.)

    1. by background process : background process가 에러를 낼때만 만들어 진다.

      • 위치는 : background_dump_dest parameter에 존재 한다.
    2. by Server process : 사용자의 요구가 있을경우 만들어 진다.

      • 위치는 : user_dump_dest parameter에 존재한다.

 

Initialization Parameter Files
  • Parameter File Tyles

    • Static parameter file, PFILE(~8i):init<SID>.ora   (아스키)

    • Persistent parameter file, SPFILE(9i~):spfile<SID>.ora (바이너리)
    • 그러니까 말이지 8i까지는 pfile을 썼었어 아스키로 되어 있어서 text편집도 되고 Dynamic Parameter의 경우는 바로 수정도 할수 있고 그렇지

            그런데 서버를 리스타트 하고 나면 Dynamic Parameter로 설정된 Parameter은 사라져! 대박~ 또 Static Parameter는 서버를 리스타트

            해야 되자네...그러니 미치는 거지! Static Parameter의 경우는 당근 리스타트 해야 하고

            결국 9i엔 spfile이란 놈이 나왔는데 이놈은 pfile을 바이너리 파일로 쑝 바꾼 파일인데 spfile은 Dynamic Parameter로 수정하더라도 spfile 및

            메모리등 다 적용 할 수 있어! 리스타트가 되어도 off않되고 적용 유지되지! 그러니까 spfile 쓰삼!

  •  Parameter 변경 Systax

    • alter system set timed_statistics=false;  scope=[both:memory:spfile]

      • 옵션의 Default값은(both=memory와spfile를 다 바꾸시오, memory는 memory만 변경하라는 뜻이고 spfile는 spfile만 변경하게함)

        • pfile default: memory
        • spfile default: both

 

 5장 Managing Database Storage Structures

 

OMF
  • Oracle_Mansged Files(OMF)

  • file의 생성시 file이름을 지정하지 않아도 file이름을 자동으로 결정

  • file삭제시 db내부의 file pointer를 삭제할 뿐남 아니라 OS상의 file도 삭제

    • tablespace 생성시 이름을 주면 OMF가 아니다. 

      1. SQL> create tablespace ttbs
          2     datafile '/home/oracle/ttbs01.dbf' size 10M,
          3              '/home/oracle/ttbs02.dbf' size 10M;
      2. SQL> SELECT TABLESPACE_NAME, FILE_NAME FROM DBA_DATA_FILES;
      3. SQL> DROP tablespace ttbs;
        • 파일 이름을 주었기 때문에 OMF가 아니다.
        • 이럴경우 tablespace를 삭제하고 OS에서 다시 한번 file을 삭제 해줘야 한다.
        • 관리가 힘들다는 거지!

 

  1. SQL> create Tablespace ttbs;
  2. SQL> drop Tablespace ttbs;
  3. * 이렇게 그냥 이름 없이 생성하면 ORACLE알아서 파일 생성한다. 또 drop tablespace시 OS의 파일도 알아서 삭제해준다.
  4. 이게 OMF방식이라는 것이다. 
TableSpace
  • TableSpace 공간 부족 현상 해결 방법

    1. ADD DATAFILE (Datafile을 더한다.)
    2. AUTOEXTEND ON (사이즈 자동 증가 옵션)
    3. RESIZE (뭐...리사이즈지)
  • Type

    • Permanent : create/alter/drop 하는 object들은 Permanent Type으로 해야 한다.
    • Temporary : sorting시 중간결과를 저장하는 TableSpace는 Temporary Type로 해야 한다.
    • Undo : Undo는 Undo
  • Temporary TableSpace

    • 필요성 : 사용자가 sorting을 요청시 그 데이타가 커서 PGA영역으로 부족할때 Temporary를 이용하여 sorting한다.

      혹 user 생성시 명시적으로 Temporary을 할당 받지 못할경우 System의 sorting Temporary space를 사용한다.

      근데..근데..근데 System 영역을 사용하면 성능저하가 염려 되기에 9i 부터는 별도의 DEFAULT_TEMP_TABLESPACE 가 존재하고 그것을 쓴다.

    • Syntax
    1. Create Temporary Tablespace
    2. Tempfile '~/temp01.dbf' size 100M;
    3. --위에처럼 한다고 해서 Temporary를 알아서 사용하는 것이 아니다.
    4. Alter user hr
    5. Temporary Tablespace temp;
    6. --이처럼 user에게 할당해 주어야 한다.
  • ASM (auto 스토리지 관리)

    • file system (OS)
    • raw device (OS)
    • ASM - (oracle)

      • file stripping (IO분산)
      • Mirroring (데이타 보호 [동일한 이미지를 다른 disk에 존재 시킨다.])
      • Online Rebalancing ([DB를 사용하는 중간에 물리적 disk를 추가 및 제거 할 수 있다.]) 

        • 이걸 file system및 raw device에서는 못해
  • Default TableSpace 확인
  1. SELECT property_name, property_value
    FROM database_properties
    WHERE property_name LIKE '%DEFAULT%'
  2. -----------------------------------------------PROPERTY_NAME ------------------------------------------------------PROPERTY_VALUE ----
  3. DEFAULT_TEMP_TABLESPACE TEMP
    DEFAULT_PERMANENT_TABLESPACE USERS
    DEFAULT_TBS_TYPE SMALLFILE

6장 Administering User Security

 

권한
  • sys : 는 못하는게 없는 관리자
  • system : sys의 권한 중 DBA권한을 받은 관리자임(이놈은 DB 올리고 내리는거 못해, 결국 이놈도 end user)
  • 인증 방법 (ID, Password 관리 방법)

    • Password 방식 user명 db내부, pwd는 db내부
    • Exteral방식 user명 db내부, pwd는 db외부
    • Global방식 : 별도의 인증 서버
  •  전체 권한 확인 및 부여된 상태
  1. select * from dba_sys_privs;
    select * from dba_role_privs;

 

Role Test
  1. SQL> CREATE USER tuser IDENTIFIED BY oracle;
    User created.
    SQL> CREATE ROLE arole;
    Role created.
    SQL> CREATE ROLE brole IDENTIFIED BY oracle;
    Role created.
    SQL> GRANT create session TO arole, brole;
    Grant succeeded.
    SQL> GRANT select on hr.employees TO arole;
    Grant succeeded.
    SQL> GRANT select on hr.departments TO brole;
    Grant succeeded.
    SQL> GRANT arole TO tuser;
    Grant succeeded.
    SQL> ALTER USER tuser DEFAULT ROLE arole;
    User altered.
    SQL> GRANT brole TO tuser;
    Grant succeeded.

 

 

7장 Managing Schema Object

 

  • object : view, sequence, synonym
  • segment : table, index
  • Constraints(제약조건)

    • ENABLE(제약조건 강요상태)

      • VALIDATE : New Data 체크, 기존 Data 체크
      • NOVALIDATE : New Date 체크, 기존 Date 체크않함
    • DISABLE(제약조건 아니아니강요상태)

      • VALIDATE : New Data 체크않함, 기존 Data 체크
      • NOVALIDATE : New Data 체크 않함, 기존 Data 체크 않함
    • New Data Check 여부에 따라 ENABLE/DISABLE
    • 기존 Data Check여부에 따라 : VALIDATE / NOVALIDATE
    • 그니까 특정 테이블에 데이타 100만건 넣을때 허걱..제약조건 켜 있으면 느리지! 엄청...
    • 그래도 당장은 그 체크 기능을 죽여 놓고 100만건 insert하고 그다음 enable해서 체크를 진행한다.
    • 그런데 그냥 Enable하면 기존 데이타 끼리도 막 체그 하고 그래서 Enable쓸때는 옵셥으로 기존 데이타끼리도
    • 체크하는 그건 뻘짓을 제거 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.