SQL

오라클 관리자 실습 과정

Pulseeee 2022. 11. 15. 19:31
반응형

목차

1....................................... 오라클 startup과 shutdown

                                          1)오라클 시작과 종료

                                          2)단계별 startup 과정

                                          3)shutdown 옵션의 이해

                                          4)readonly 상태의 이해와 실습

2....................................... Parameter file 관리

                                          1)parameter file 확인

                                          2) spfile 환경에서 파라미터 확인과 수정

                                          3) Spfile 운영 환경에서 scope 설정에 따른 parameter 값의 변화

 

3....................................... Control file 관리

                                          1) Control file 확인

                                           2) Spfile 환경에서 contril file 다중화 실습

 

4....................................... Redo log file 관리

                                           1) Redo log file 확인

1-1)오라클 시작과 종료

 

SQL> STARTUP [NOMOUNT | MOUNT | OPEN [READ ONLY | READ WRITE]]

STARTUP : 오라클을 시작한다. (SHUTDOWN 상태에서만 사용 가능하다.)

NOMOUNT : NOMOUNT 단계까지 오라클을 시작한다.

MOUNT : MOUNT 단계까지 오라클을 시작한다.

OPEN : OPEN 단계까지 오라클을 시작한다.

READ ONLY : DB를 읽기전용으로 시작한다.

READ WRITE : DB를 읽기쓰기 상태로 시작한다.

'_'은 default 값을 의미한다.

 

SQL> SHUTDOWN [ IMMEDIATE | TRANSACTIONAL | NORMAL| ABORT ]
 - 오라클을 종료한다.

 

1-2)단계별 startup 과정

                                          

STARTUP 과정

SQL> ALTER DATABASE [ MOUNT | OPEN [ READ ONLY | READ WRITE ]];
 - DB가 SHUTDOWN 상태가 아니라 NOMOUNT나 MOUNT 상태인 경우 오라클을 더 상위 단계로 올리기 
 위해 사용한다.
 NOMOUNT 상태의 DB를 한 번에 OPEN 상태로 올릴 수는 없다.
 MOUNT : MOUNT 단계로 DB를 변경한다.
 OPEN: OPEN 단계로 DB을 변경한다.
 READ ONLY : DB를 읽기전용으로 OPEN한다.
 READ WRITE : DB를 읽기쓰기 상태로 OPEN한다.
SQL> SELECT STATUS FROM V$INSTANCE;
 - DB의 상태를 확인한다.
 - STATUS 칼럼의 값은 DB의 상태를 나타낸다.

1-3)shutdown 옵션의 이해

 

NORMAL : 현재 사용 중인 모든 접속이 종료되길 기다린다. (기본값)

TRANSACTIONAL : 진행 중인 TRANSACTION은 기다려주지만 TRANSACTION이 진행 중이지 않은 세션은 강제 종료 시킨다.

IMMEDIATE : 모든 TRANSACTION 과 접속을 강제로 종료한다.

ABORT : DB의 상태와는 상관없이 메모리에서 INSTANCE를 해제한다.

 

SQL> SHUTDOWN [ IMMEDIATE | TRANSACTIONAL | NORMAL| ABORT ]
 - 오라클을 종료한다.

 

4)readonly 상태의 이해와 실습

 

SQL> STARTUP OPEN READ ONLY;   - 종료 상태의 DB를 읽기전용으로 OPEN한다.
SQL> ALTER DATABASE OPEN READ ONLY;   - MOUNT 상태의 DB를 읽기 전용으로 OPEN한다.
SQL> SELECT OPEN_MODE FROM V$DATABASE;   - 데이터베이스의 상태를 조회한다.
                                                                                        - READ ONLY와 READ WRITE 상태가 있다.

 

 

read only로 startup

read only로 startup시 일반 사용자 터미널에서는 테이블을 읽을 순 있지만 테이블을 삭제하지는 못한다.

 

 

2-1parameter file 확인

 

SQL> SELECT name, value FROM V$PARAMETER;    - Parameter 이름과 설정된 값을 확인한다.
SQL> SHOW PARAMETER <parameter 명>   - 설정된 parameter 값을 확인 한다.

 

parameter의 설정된 값과 이름, 위치를 확인 할 수 있다.

 

 

2-2 spfile 환경에서 파라미터 확인과 수정

 

SQL> ALTER SYSTEM SET <parameter 명> = <값>;    - 지정한 파라미터의 값을 수정한다.
                                                                                        - spfile 사용 환경에서 설정된 파라미터 값은 항구적으로 수정된다.
                                                                                        - 동적인 파라미터만 수정 가능하다.

 

 

SQL> SELECT NAME, VALUE FROM V$PARAMETER;    - 현재 운영중인 parameter 값을 조회한다.
                                                                                              - 'SHOW PARAMETER ~'에 출력 값과 동일하다.

 

SQL> SELECT NAME, VALUE FROM V$SPPARAMETER;  - spfile에 설정된 값을 조회한다.

 

SQL> select name, value from v$spparameter where name like '%undo%';

 

 

 

SQL> select name,value from v$parameter where name like '%undo%';
SQL> show parameter undo;

 

alter 명령어를 이용하여 undo_retention의 값을 300으로 변경

 

 

shutdown 후 startup 해서도 변경된 값이 저장되어 있다.

 

2-3 Spfile 운영 환경에서 scope 설정에 따른 parameter 값의 변화

 

SQL> ALTER SYSTEM SET <parameter 명> = <값> SCOPE = [SPFILE | MEMORY | BOTH];
 - 지정한 parameter의 값을 수정한다. 
 - SCOPE 절은 spfile 운영 환경인 경우만 사용한다.
 - SPFILE : spfile만 수정한다. (정적 parameter 수정에서는 필수이다.)
 - MEMORY : 현재 DB의 parameter 설정 값만 수정한다. spfile은 수정하지 않음으로 DB를 재시작하면
 원래 설정 값으로 환원된다.
 - BOTH : spfile과 instance의 설정된 parameter값을 모두 수정한다.(default값)

 

 

3-1 Control file 확인

 

SQL> SELECT NAME FROM V$CONTROLFILE;      - 사용 중인 control file의 목록을 조회한다.

 

 

 

 

3-2 Spfile 환경에서 contril file 다중화 실습

 

- Spfile을 사용하는 환경에서 다음 step에 따라 control file을 /app/ora19c/oradata/disk4, 
 /app/ora19c/oradata/disk5에 분산 배치한다.
 step 1. DB의 상태를 확인한다.
 step 2. control_files 파라미터를 수정한다.
 step 3. DB를 SHUTDOWN 한다.
 step 4. 파라미터에 정의한 것과 같이 control file의 물리적 상태를 수정한다.
 step 5. DB를 STARTUP 한다.

 

/app/ora19c/oradata/ 디렉토리 안에 disk1,2,3,4,5 디렉토리를 만들어 준다.

 

 

DB의 상태를 확인하고 control_files의 위치를 disk4와 disk5로 옮긴다고 입력해주고&nbsp; shutdown immediate 한다.

 

오라클이 startup 하지 않은 상태에서 control01, control02 file을 DB19디렉토리에서 disk4, disk5 디렉토리로 옮겨준다.
startup으로 오라클을 open하여 controlfile이 disk4와 disk5에 들어 있는지 확인한다.

 

 

4-1) Redo log file 확인

 

SQL> SELECT A.GROUP#, A.MEMBER, B.BYTES, B.STATUS, B.SEQUENCE#
 2 FROM V$LOGFILE A, V$LOG B
 3 WHERE A.GROUP# = B.GROUP#
 4 ORDER BY 1;
 - 현재 log 그룹과 member의 운영 상황을 조회한다.
 - GROUP# : 그룹 번호
 - MEMBER : 멤버 파일의 경로 및 파일명
 - BYTES : 멤버 파일의 크기
 - STATUS : 그룹의 상태 [표 4.1]을참고 한다.
SQL> ARCHIVE LOG LIST
 - Archive log 관련 내용을 조회한다.
 - Archive log mode가 아닌 경우 조회된 내용은 별 의미가 없다.

 

SELECT a.group#, a.member, b.bytes, b.status, b.sequence# FROM v$logfile a, v$log b WHERE a.group# = b.group# ORDER BY 1;
ARCHIVE LOG LIST

 

4-2) Log switch와 checkpoint

 

SQL> ALTER SYSTEM SWITCH LOGFILE;
 - Log switch를 강제로 발생 시킨다.
SQL> ALTER SYSTEM CHECKPOINT;
 - Check point를 강제로 발생 시킨다.

 

SELECT a.group#, a.member, b.bytes, b.status, b.sequence#
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1; 를 이용하여 현재 redo파일의 상태를 확인한다.

 

ALTER SYSTEM SWITCH LOGFILE;  명령어로 Log switch를 강제로 발생시켜 상태를 변경시킨다.

ALTER SYSTEM CHECKPOINT;  명어로 Check point를 강제로 발생시킨다.

 

SQL> !vi switch.sql   < switch.sql을 만들고 switch 와 checkpoint 강제로 발생시키게 내용을 입력해준다.
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM CHECKPOINT;

 

@switch 명령어를 사용하면 안에 입력한 내용이 실행되면서 Log switch와 checkpoint를 강제로 발생시킨다.

 

4)3 Redo log group 추가와 삭제

 

SQL> ALTER DATABASE DROP LOGFILE GROUP [group number];
 - 지정한 redo log group을 삭제한다.
SQL> ALTER DATABASE ADD LOGFILE GROUP [group number]
 2 (['member file1', 'member file2', ... ]) SIZE [크기];
 - redo log group을 추가한다. [group number]는 생략 가능하다.

 

 

ALTER DATABASE DROP LOGFILE GROUP 3;  명령어로 GROUP 3이 삭제되었다.

 

!ls /app/ora19c/oradata/DB19/ 를 해보면 안에 redo03.log 파일이 남아 있는데

!rm /app/ora19c/oradata/DB19/redo03.log 명령어로 삭제해 준다.

 

ALTER DATABASE ADD LOGFILE GROUP 4
'/app/ora19c/oradata/DB19/redo04.log' SIZE 50M;  용량이 50M인 LOGFILE GROUP 4를 만들어준다.

 

SELECT a.group#, a.member, b.bytes, b.status, b.sequence#
FROM v$logfile a, v$log b
WHERE a.group# = b.group#
ORDER BY 1;

조회결과 용량 50M의 LOGFILE GROUP 4가 생성된 것을 확인 할 수 있다.

 

 

ALTER DATABASE ADD LOGFILE GROUP 5
'/app/ora19c/oradata/DB19/redo05.log' SIZE 50M;  명령어로 50M의  LOGFILE GROUP 5가 생성되었다.

 

 

 

 

4-5) Redo log file 재배치

 

- redo log 그룹과 member를 시스템 상태에 다음 조건에 따라 재배치한다.
 . /app/ora19c/oradata/DB19 디렉토리에 위치한 redo log file을 3개의 그룹과 2개의 멤버 파일로 서로 다른 
 디스크의 마운트 디렉토리인 disk4와 disk5에 다중화 한다.
 . 단 그룹의 번호는 1,2,3으로, 멤버 파일의 크기는 50M로 제한한다.

현재 redo log file group을 확인한다.

 

 

GROUP 1, 2를 삭제 해준다.

 

 

GROUP 1,2,3,의 redo log file을 용량50M로 disk4와 disk5에 위치하게 생성한다.

 

 

GROUP 4, 5를 삭제한다.
SELECT a.group#, a.member, b.bytes, b.status, b.sequence# FROM v$logfile a, v$log b WHERE a.group# = b.group# ORDER BY 1; 명령어로 각각의 redo log file group의 위치와 정보를 확인한다.

 

DB19 디렉토리에 남은 log파일을 확인하고 지워준다.

 

 

실습 5.4 Tablespace 확장 2 - 자동

 

OPEN 상태에서 tablespace 이동

 

SQL> CREATE TABLESPACE <tablespace명> 
 2 DATAFILE '<data file명>' SIZE <크기>
 3 AUTOEXTEND ON NEXT <크기> MAX SIZE <크기>;
 - 자동으로 커지는 data file을 갖는 tablespace를 생성한다.
 - NEXT : 증가치
 - MAX SIZE : 최대 크기 
SQL> ALTER TABLESPACE <tablespace명>
 2 ADD DATAFILE '<추가될 data file명>' SIZE <크기>
 3 AUTOEXTEND ON NEXT <크기> MAX SIZE <크기>;
 - tablespace에 자동으로 커지는 data file을 추가 한다.
SQL> ALTER DATABASE
 2 DATAFILE '<변경할 data file명>
 3 AUTOEXTEND [ON | OFF] NEXT <크기> MAX SIZE <크기>;
 - 지정한 data file을 자동증가를 설정한다.

 

 

 

 

 

User 생성과 관리

1) User 조회

 

SQL> SELECT username, default_tablespace, temporary_tablespace,
 2 account_status, profile
 3 FROM dba_users;
 - User의 이름과 각 user의 여러 설정 사항을 조회한다. 
 - USERNAME : 사용자명
 - DEFAULT_TABLESPACE : 기본으로 사용할 tablespace명
 - TEMPORARY_TABLESPACE : 사용할 temporary tablespace명
 - ACCOUNT_STATUS : 계정의 상태 
 - PROFILE : 사용 중인 profile명

 

 

 

SQL> DESC dba_users;

 

SQL> SELECT username, default_tablespace, temporary_tablespace, account_status, profile FROM dba_users&nbsp;ORDER BY 1;

 

2) User 생성

SQL> CREATE USER <user 명> 
 2 IDENTIFIED BY <암호>
 3 DEFAULT TABLESPACE <tablespace 명>
 4 TEMPORARY TABLESPACE <tablespace 명>
 5 QUOTA <크기> ON <tablespace 명>, ...... 
 6 [ACCOUNT {LOCK / UNLOCK}]
 7 [PROFILE {<profile명> / DEFAULT}] 
 - User를 생성한다.
 - DEFAULT TABLESPACE : User의 기본 tablespace
 - TEMPORARY TABLESPACE : User의 기본 temporary tablespace
 - QUOTA : tablespace별 허용된 저장량
 - ACCOUNT : 계정 잠금 설정
 - PROFILE : 적용될 PROFILE 지정
 - CREATE 문장은 ALTER 문장과 형식이 동일하다.
SQL> SELECT username, tablespace_name, max_bytes, max_blocks FROM dba_ts_quotas;
 - 각 사용자의 tablespace별 quota량을 조회한다.
 - MAX_BYTES : 할당된 quota량 (byte단위)
 - MAX_BLOCKS : 할당된 quota량 (block개수)
 - quota가 unlimited로 지정되어 제한하지 않는 경우 -1로 표시된다.

 

SQL> SELECT tablespace_name, bytes, file_name FROM dba_data_files;

 

 

 

반응형