반응형

 

 

 

 

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로 옮긴다고 입력해주고  shutdown immediate 한다.

 

오라클이 startup 하지 않은 상태에서 control01, control02 file을 DB19디렉토리에서 disk4, disk5 디렉토리로 옮겨준다.

startup으로 오라클을 open하여 controlfile이 disk4와 disk5에 들어 있는지 확인한다.

반응형

'SQL' 카테고리의 다른 글

오라클 자동실행  (0) 2022.12.27
SQL index 시퀀스  (0) 2022.12.27
오라클 관리자 실습 과정  (0) 2022.11.15
오라클 컨트롤파일  (0) 2022.11.08
오라클 파라미터 파일  (0) 2022.11.08
반응형

목차

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;

 

 

 

반응형

'SQL' 카테고리의 다른 글

SQL index 시퀀스  (0) 2022.12.27
오라클 Control file 확인  (0) 2022.11.17
오라클 컨트롤파일  (0) 2022.11.08
오라클 파라미터 파일  (0) 2022.11.08
오라클 스타트업  (0) 2022.11.08
반응형

컨트롤파일 관리
파일명에는 경로명이 반드시 들어가야한다.
v$ 데이터딕셔너리캐시에 만들어지는데 셧다운하면 없어진다.

 

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

 

SQL> SHOW PARAMETER control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /app/ora19c/oradata/DB19/control01.ctl, 

                                                         /app/ora19c/oradata/DB19/control02.ctl

컨트롤 파일의 이름,타입과 위치정보

 

SQL>  DESC v$controlfile;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 STATUS                                             VARCHAR2(7)
 NAME                                               VARCHAR2(513)
 IS_RECOVERY_DEST_FILE                              VARCHAR2(3)
 BLOCK_SIZE                                         NUMBER
 FILE_SIZE_BLKS                                     NUMBER
 CON_ID                                             NUMBER

SQL>  SELECT name FROM v$controlfile;

NAME
--------------------------------------------------------------------------------
/app/ora19c/oradata/DB19/control01.ctl
/app/ora19c/oradata/DB19/control02.ctl

 

SQL> !ls /app/ora19c/oradata/DB19/*.ctl
/app/ora19c/oradata/DB19/control01.ctl /app/ora19c/oradata/DB19/control02.ctl

 

 

 

 

반응형

'SQL' 카테고리의 다른 글

오라클 Control file 확인  (0) 2022.11.17
오라클 관리자 실습 과정  (0) 2022.11.15
오라클 파라미터 파일  (0) 2022.11.08
오라클 스타트업  (0) 2022.11.08
SQL 단일행 함수  (0) 2022.11.08
반응형

파라미터파일

인스턴스에 접속하려면 파라미터파일이 필요하다.
파라미터파일 하나로 여러곳 공유 가능하다. (다중 인스턴스 구현)

파미터파일중에 실시간으로 바꿀수있는게 있고 실시간으로 바꾸지 못하는게 있다.

 

 

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

 

SQL>  SELECT name, value FROM v$parameter WHERE name = 'spfile';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
spfile
/app/ora19c/19c/dbs/spfileDB19.ora

: 파라미터 파일의  위치를 알 수 있다.

 


SQL> SHOW PARAMETER instance_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      DB19
SQL>

설정된 파라미터 값을 확인할 수 있다.

 

 

SQL> !ls $ORACLE_HOME/dbs
hc_DB19.dat  init.ora  lkDB19  orapwDB19  spfileDB19.ora

파라미터파일의 위치는 오라클홈의 dbs디렉토리 안에 있다.

 

 

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

 

SQL> SELECT name, value FROM v$spparameter WHERE name LIKE '%undo%';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
temp_undo_enabled


undo_management


undo_tablespace
UNDOTBS1


NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
500
현재 운영중인 파라미터 값 조회,'SHOW PARAMETER ~'에 출력 값과 동일하다.

 

SQL>  SELECT name,value FROM v$parameter WHERE name LIKE '%undo%';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
temp_undo_enabled
FALSE

undo_management
AUTO

undo_tablespace
UNDOTBS1


NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
500
 - spfile에 설정된 값을 조회한다.

 


SQL> SHOW PARAMETER undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     500
undo_tablespace                      string      UNDOTBS1

 

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

 


SQL> ALTER SYSTEM SET undo_retention=300;

System altered.

SQL> SELECT name, value FROM v$spparameter
  2  WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
300


값을 300으로 변경

 

SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300

 

 

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  830469472 bytes
Fixed Size                  8901984 bytes
Variable Size             562036736 bytes
Database Buffers          251658240 bytes
Redo Buffers                7872512 bytes
Database mounted.
Database opened.
SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300
SQL>

shutdown 후 startup 후에도 적용된 모습

 

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값)

 

SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300
SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300
SQL> ALTER SYSTEM SET undo_retention = 600 SCOPE = memory;

System altered.

SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     600
SQL> SELECT name, value FROM v$parameter WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
600


SQL> SELECT name, value FROM v$spparameter WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
300

 

SQL> startup
ORACLE instance started.

Total System Global Area  830469472 bytes
Fixed Size                  8901984 bytes
Variable Size             562036736 bytes
Database Buffers          251658240 bytes
Redo Buffers                7872512 bytes
Database mounted.
Database opened.
SQL> SHOW PARAMETER undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     300
undo_tablespace                      string      UNDOTBS1
SQL> ALTER SYSTEM SET undo_retention = 500 SCOPE = spfile;

System altered.

SQL> SHOW PARAMETER undo_retention;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     300
SQL> SELECT name,value FROM v$parameter WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
300


SQL> SELECT name,value FROM v$spparameter WHERE name = 'undo_retention';

NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_retention
500

반응형

'SQL' 카테고리의 다른 글

오라클 관리자 실습 과정  (0) 2022.11.15
오라클 컨트롤파일  (0) 2022.11.08
오라클 스타트업  (0) 2022.11.08
SQL 단일행 함수  (0) 2022.11.08
SQL 제약 조건 UK, NOT NULL, CHECK  (0) 2022.11.08
반응형

STARTUP 과정

STARTUP  spfileora19c.ora 파일로 오라클을 실행한다. 한단계씩 올라갈 수 있다. (두단계씩은 못올라감)


alter database 단계명 (DB가 shutdown 상태가 아니라 NOMOUNT나 MOUNT 상태인 경우 오라클을 더 상위 단계로 올리기 위해 사용한다.

NOMOUNT 상태의 DB를 한번에 OPEN 상태로 올릴 수는 없다.

MOUNT 인스턴스 시작,  컨트롤파일을 열어서 물리적인 위치나 상태정보를 알 수 있다.
OPEN   모든 파일을 열어서 일반사용자가 사용 할 수 있게 해준다. 

READ ONLY  DB를 읽기전용으로 OPEN한다.

READ WRITE DB를 읽기쓰기 상태로 OPEN한다.

 

SQL> SELECT STATUS FROM V$INSTANCE;
 - DB의 상태를 확인한다.
 - STATUS 칼럼의 값은 DB의 상태를 나타낸다.

 

STARTUP NOMOUNT으로 스타트하여 인스턴스가 시작된 상태
DATABASE MOUNT
DATABASE OPEN


Shutdown

Shutdown 종료 옵션

NORMAL: 현재 사용 중인 모든 접속이 종료되길 기다린다.(서버에 접속한사람이 없을때 셧다운)

TRANSACTIONAL : 진행 중인 transaction은 기다려주지만 transaction이 진행 중이지 않은 세션은 강제 
종료시킨다. (서버에 접속한사람 끊고 셧다운 (작업중이면 끝나고 셧다운시킴))
IMMEDIATE : 모든 transaction과 접속을 강제로 종료한다. (서버에 접속한사람 강제로 셧다운)

ABORT : DB의 상태와는 상관없이 메모리에서 instance를 해제한다. (정전)



SYS 계정의 SHUTDOWN IMMEDIATE
일반 사용자 계정으로는 shutdown 명령을 할 수 없다.

startup 역순

오픈단계 : 컨트롤파일로 데이터파일, 리두로그파일을 열어야한다.
마운트단계 : 파라미터파일안에 컨트롤파일의 정보를 읽어서 실행하고 데이터파일과 리두로그파일의 위치,상태정보를 확인한다.
노마운트단계 : 파라미터파일의 정보는 위치와 이름이 정해져 있다.

반응형

'SQL' 카테고리의 다른 글

오라클 컨트롤파일  (0) 2022.11.08
오라클 파라미터 파일  (0) 2022.11.08
SQL 단일행 함수  (0) 2022.11.08
SQL 제약 조건 UK, NOT NULL, CHECK  (0) 2022.11.08
오라클 트렌젝션, 데드락  (0) 2022.11.08
반응형

단일행 함수

단일 행 함수의 종류
-문자 함수 : 
                대소문자 변환 함수
           LOWER 문자열을 소문자로 변환한다. LOWER(문자열)
           UPPER 문자열을 대문자로 변환한다. UPPER(문자열)
           INITCAP 첫 문자만 대문자로 변환하고 나머지는 소문자로 변환한다. INITCAP(문자열)


-숫자 함수
-날짜 함수
-변환 함수
-일반 함수
SELECT TO_CHAR(12345.678, '009,909.999') num FROM dual;

반응형
반응형

데이터양을 줄이기 위해 분리하는 과정 = 정규화 과정
pk : 학생테이블의 학번컬럼, 사원테이블의 사번컬럼 등
fk : emp테이블의 부서번호



제약 조건 이해와 설정 : UK, NOT NULL, CHECK

NULL은 정해진 값이 없어서 여러번 가능 사용 할 수 있다.

UK(Unique Key) 설정
SQL> CREATE TABLE 테이블 (
2 ..... 3 CONSTRAINT 제약_조건 UNIQUE (컬럼));
SQL> CREATE TABLE 테이블 (
2 컬럼 데이터_타입 CONSTRAINT 제약_조건 UNIQUE,
3 ......

NOT NULL 설정
SQL> CREATE TABLE 테이블 (
2 컬럼 데이터_타입 CONSTRAINT 제약_조건 NOT NULL,
3 ......
-> 모든 숫자컬럼에 NOT NULL을 사용하는게 일반적(만약 지정이 안되어 있다면 지정하지 않은 이유를 알아야한다.)


CHECK 설정 (where절에 썼던거 처럼 쓰면 된다.)
SQL> CREATE TABLE 테이블 (
2 ..... 3 CONSTRAINT 제약_조건 CHECK (조건)); 
SQL> CREATE TABLE 테이블 (
2 컬럼 데이터_타입 CONSTRAINT 제약_조건 CHECK (조건),
3 ......

CHECK와 NOT NULL 제약 조건 검색
SQL> SELECT constraint_name, search_condition FROM user_constraints
 2 WHERE table_name = '테이블';

(sal is NOT NULL)

제약 조건 관리

테이블 만들때 제약조건 하는것 보다 나중에 제약조건 추가하는 방법이 좋다.
 제약 조건 추가/삭제
SQL> ALTER TABLE 테이블 
 2 ADD CONSTRAINT 제약_조건 제약_조건_타입;

SQL> ALTER TABLE 테이블 
 2 MODIFY 컬럼 CONSTRAINT 제약_조건 NOT NULL;

SQL> ALTER TABLE 테이블 
 2 DROP PRIMARY KEY | UNIQUE(컬럼) | CONSTRAINT 제약_조건 [CASCADE];


반응형
반응형

작업단위 트렌젝션
데이터파일
모든 작업내용(데이터파일을 변경시킨내용)이 리두로그 파일에 시간단위로 적혀있다.
컨트롤파일 오라클이 데이터파일이나 리두로그파일을 사용할때 위치가 들어 있다. 미러링( 하드가 망가지더라도 복구하기 위해서)

서버프로세스는 데이터베이스 버퍼캐시를 통해 데이터파일의 데이터를 읽음 만약 버퍼캐시에 데이터가 없다면
데이터파일에서 데이터를 데이터베이스 버퍼캐시에 올려서 읽는다.

원하는 정보가 있는지 없는지 = 겟
원하는 정보를 찾으면 = 히트
원하는 정보를 못찾으면 = 리스

insert시 서버 프로세스는 버퍼캐시에서 해당테이블이 있는지 찾는다. 커밋시 데이터베이스 버퍼캐시에서 수행한다.
작업일지를 리두로그버퍼에게 저장하여 연속성을 유지한다. 커밋이 되었다면 리두로그버퍼는 리두로그파일에 작업일지를 저장한다.

데이터베이스 버퍼 캐시는 메모리가 블락형태로 되어있다.
블락의 크기를 다 채우기 전까지는 데이터파일에 내리지 않는다

이렇게 되면 데이터파일과 리두로그파일의 동기화가 달라서 데이터베이스가 불안정해지는데
일정시간마다 ckpt 체크포인트의 이벤트를 발생시켜 점검한다.


파라미터파일 데이터베이스 환경변수가 들어있다. 메모리사이즈
SMON 정전등으로 데이터베이스가 강제종료 되었을때 부팅하면서 컴트롤파일과 데이터파일, 리두로그파일을 점검해보고 복구를 자동으로 해준다
딕셔너리를 조회할때 데이터딕셔너리캐시로 올려서 조회한다.

sql문을 날리면 라이브러리캐시에 저장된다.

 

identified by st01
default tablespace users
quota unlimited on users;

grant connect, resource to st01;
grant create view to st01;

tnsping 계정이름 >> 데이터베이스 연결 확인방법


sql 명령어
트랜잭션(Transaction)과 잠금(Lock)의 이해
트랙잭션 : 커밋이나 롤백 하기 전까지의 작업단위
특성
원자성(Aotomicity) 
 - 트랜잭션은 최소의 작업 단위로서 전체가 처리되거나 취소될 수 있지만 일부만 처리될
 수 없다. 
일관성(Consistency)
 - 트랜잭션이 실행된 이후 데이터베이스의 무결성은 반드시 유지돼야 한다. 
독립성(Isolation)
 - 트랜잭션을 여러 개 동시에 실행하더라도 각각의 트랜잭션은 서로 영향을 줄 수 없다. 
 즉 실행이 종료되지 않은 트랜잭션의 결과는 다른 트랜잭션에서 참조하는 것이 불가능하다. 
영속성(Durability)
 - 종료된 트랜잭션의 결과는 반드시 데이터베이스에 반영돼야 한다.



트랜잭션의 시작과 종료

 1.시작
- 이전 트랜잭션이 종료된 이후 DML(INSERT, UPDATE, DELETE)문장이나 DDL(CREATE, ALTER, 
 DROP, TRUNCATE), DCL(GRANT, REVOKE)문장에 실행됐을 때 시작된다.
(보안등급에 따라 다르게 만들어져서 DML은 명령어 실행후에 커밋과 롤백 명령어를 실행을 완료되어야 
종료되지만 DDL, DCL은 커밋과 롤백없이 명령어 실행이 완료되면 바로 종료된다.
 DML은 작업을 계획하지 않고 하는 경우가 많고, DDL과 DML은 검증된 작업을 수행하는 경우가 많아서
커밋과 롤백을 묻지않고 실행된다.)
 
 2.종료
- COMMIT이나 ROLLBACK 명령이 실행 될 때 종료된다.
- DDL이나 DCL문장의 실행이 완료되면 자동으로 종료된다.
- 사용자의 정상 종료 시에 종료된다.
- 데드락(Deadlock)이 걸리면 트랜잭션의 일부만 종료된다.

segment : 저장하는 곳을 뜻함
undo segment : 롤백을 수행할때 필요한 데이터를 저장하는 곳
독점 잠금 : 행을 잠금(현재 세션 이외에는 접근을 불허하는 잠금), 
공유 잠금 : 테이블 잠금 (사용은 가능하지만 삭제는 불가능)

오라클의 데드락 해소 방식에대해서 기술하고 이렇게 해소하는 이유는 무엇인지 기술하시오.

세션1에서 먼저 한 테이블의 행의 데이터를 수정하면 해당 행을 독점 잠금 하고 해당 테이블을 공유 잠금한다.
세션2에서 해당 테이블의 다른 행의 데이터를 수정하여 독점잠금하지만 해당 테이블의 공유잠금은 되지 않는다.
세션2에서 세션2가 독점잠금한 행의 데이터를 수정하고
세션1에서 세션1이 독점잠금한 행의 데이터를 수정하려고 할때
세션2에서 2번째로 데이터를 수정할때 명령어 실행이 취소가 된다.
데드락을 해소하기 위해서는 세션1에서 commit,roolback 을 해주면 데드락이 해소가 되며 세션1의 명령은 다 수행이 되고
세션2의 명령은 2번째 명령을 제외한 1번째 명령만 적용이된다.

데드락이 생기는 이유는 세션1에서 행의 데이터 수정으로 행의 독점 잠금과 테이블의 공유 잠금이 되었고
세션2에서 같은 테이블의 행하나를 독점 잠금 하지만 세션1이 공유 잠금으로 먼저 실행의 우선권이 주어져서
세션2가 세션1보다 독점잠금한 행의 데이터를 먼저 수정하려고 해도 데드락 해소를 위해 세션2의 명령은 취소가 되기 때문이다.

이렇게 해소하는 이유는 먼저 해당 테이블의 행을 수정함으로써 독점 잠금과 공유 잠금을 설정한 세션에게 공유 잠금을 풀 수 있는
권한이 주어지기 때문이다.


반응형
반응형

테이블을 관리하는 명령어로는 3가지가 있다.

create 생성  -----> 테이블을 생성하면 alter와 drop으로 수정, 삭제함 drop이나 delete는 회사가 망하지 않는 이상 쓰지 않는다.
alter 수정
drop 삭제

SQL> DESC 테이블명; -> 명령어로 테이블 구조를 볼 수 있다.

 

table, index, sqeuence,                                    |  view(alter없음, 실체가 없음,물리적인 공간차지X),userm tablespace
   segment (실제로 메모리를 차지하는 영역)

데이터의 내용은 바뀔지라도 데이터의 구조는 안바뀐다.

테이블 생성과 데이터 타입의 이해

테이블 생성과 삭제

SQL> CREATE TABLE 테이블 ( 
2 컬럼 데이터_타입 [DEFAULT default값] [컬럼 레벨 제약조건],
3 컬럼 데이터_타입 [DEFAULT default값] [컬럼 레벨 제약조건],
4 ...... 
5 [테이블 레벨 제약조건],
6 ..... 
7 );

drop table 테이블; 하면 purge recyclebin;으로 휴지통 비우기

dba_ : sys만 볼 수 있다.
user_ 소유한 테이블 일반사용자
all_ 소유한 테이블 뿐만 아니라 억세스 가능한 테이블을 볼 수 있음 일반사용자

딕셔너리 안에있는 테이블은 대문자이다.
SQL> SELECT table_name
2 FROM user_tables;

SQL> SELECT table_name, column_name, data_type, data_length
 2 FROM user_tab_columns
 3 [WHERE table_name = '테이블'];


테이블 생성에서 이름 규칙
 - 문자로 시작한다.
 - 30자 이내로 한다.
 - 영문, 숫자, _, $, #만을 사용한다.
 . 한글 사용은 가능하지만 되도록 사용하지 않는 것이 좋다.
 - 테이블의 이름은 동일한 유저(스키마) 안에서 유일해야 한다.
 - 예약어는 사용이 불가능하다.
 - 대소문자를 구별하지 않는다.ITCLASS - 79 - B&A
 . 생성할 때 사용한 문자와는 관계없이 모든 이름은 대문자로 정의된다.
 . 테이블 이름은 딕셔너리에 저장되는데, 모두 대문자로 저장된다.

데이터 타입
 - 오라클은 다양한 데이터 타입을 제공한다. 다음은 그 중 많이 사용되는 데이터 타입들이다.
 - 문자 타입
 . VARCHAR2, CHAR, LONG, CLOB
 - 숫자 타입 
 . NUMBER
 - 날짜 타입
 . DATE
 - 이진 타입
 . RAW, LONG RAW, BLOB, BFILE
 - ROWID 타입
 . ROWID : 각행을 구별할수있는 고유한 위치값(index에 저장되어 있음)





제약 조건 이해와 설정  : PK, FK
오라클에서 제공되는 제약 조건
 - PRIMARY KEY (주키, 주식별자) : PK는 테이블의 모든 데이터를 유일하게 식별해주는 컬럼이다.
 - FOREIGN KEY (외부키, 외부식별자) : FK는 테이블 간 관계(Relationship)를 의미한다. 
 - UNIQUE KEY
 - NOT NULL
 - CHECK

PK

예를 들어 student 테이블의 학번은 나머지 컬럼의 결정인자
주식별자는 중복되지 않아야한다.
score 테이블에서는 sno와 cno를 합친게 주식별자가 된다.
sno -> (sname, sex, major, avr, syear ...)
eno -> (ename, job, dno,...)

score
(sno,cno) -> result
  주식별자

FK (참조하는)

 Primary Key 설정
SQL> CREATE TABLE 테이블 (
2 ..... 3 CONSTRAINT 제약_조건 PRIMARY KEY (컬럼)); -> 테이블레벨 제약조건

SQL> CREATE TABLE 테이블 (
2 컬럼 데이터_타입 CONSTRAINT 제약_조건 PRIMARY KEY, -> 컬럼레벨 제약조건
3 ......

 Foreign Key 설정
SQL> CREATE TABLE 테이블 (
2 ..... 3 CONSTRAINT 제약_조건 FOREIGN KEY (컬럼)
4 REFERENCES 참조할_테이블 (참조할_컬럼) [ON DELETE CASCADE]);


SQL> CREATE TABLE 테이블 (
2 컬럼명 데이터_타입 CONSTRAINT 제약_조건 FOREIGN KEY
3 REFERENCES 참조할_테이블 (참조할_컬럼) 
4 [ON DELETE CASCADE],
5 .....

 제약 조건 조회
SQL> SELECT c.table_name, c.constraint_name, c.constraint_type, s.column_name
 2 FROM user_constraints c, user_cons_columns s
 3 WHERE c.constraint_name = s.constraint_name
 4 AND c.table_name in (검색_대상_테이블_목록)
 5 ORDER BY c.table_name;

SQL> SELECT p.table_name 상위테이블, p.constraint_name 상위제약조건, 
 2 c.table_name 하위테이블, c.constraint_name 참조제약조건 
 3 FROM user_constraints p, user_constraints c
 4 WHERE c.r_constraint_name=p.constraint_name
 5 AND p.table_name in (검색_대상_테이블_목록)
 6 ORDER BY p.table_name;

반응형
반응형

select ename, eno, to_char(sal, '$999,999') 급여$,
                   to_char(comm, '$999,999') 보너스$,
                   to_char(hdate, 'YYYY/MM/DD') 입사일 
from emp;
where

insert into emp (eno, ename, sex, job, mgr, hdate, sal, comm, dno)
values ('1001', '문시현', '남', '모델링', null, to_date('1991/02/01','YYYY/MM/DD'), 4500, 520, '10');
->>날짜는 반드시 to_date로 입력해줘서 오라클이 YYYY/MM/DD 형식이라고 인식 시켜줘야한다.

그룹 함수와 HAVING절

MAX 값들 중에 최대 값을 반환한다. MAX(컬럼)
MIN 값들 중에 최소 값을 반환한다. MIN(컬럼)
AVG 평균 값을 계산한다. AVG(컬럼) -  null 이있으면 정확하게 계산 못함 (행이 없다고 인식함)
COUNT 반환된 행의수를 계산한다. COUNT(컬럼 | *) - null 이있으면 정확하게 계산 못함 (행이 없다고 인식함)
SUM 합계를 계산한다. SUM(컬럼)
STDDEV 표준편차를 계산한다.(Standard deviation) STDDEV(컬럼)
VARIANCE 분산을 계산한다. VARIANCE(컬럼)

그룹 함수를 사용하는 경우 고려 사항
 - NULL값은 무시된다.
 - 반드시 단 하나의 값만을 반환한다.
 - GROUP BY 설정 없이 일반 컬럼과 기술될 수 없다.

예제 1. 사원의 급여 평균을 검색한다.
select avg(sal) 평균급여, round(avg(sal)) 평균급여
from emp;

예제 2. 사원들에게 지급된 보너스 총합과 보너스 평균을 검색한다. 
 SQL> select sum(comm) 총액, round(avg(comm)) 평균, count(comm) 수령인원,
  2  round(avg(nvl(comm,0))) 환산평균, count(*) 전체인원
  3  from emp;
>>>> 평균, 환산평균이 같아야하는데 다름 >> null이 있어서 값이 다름

예제 3. 10번 부서원들보다 급여가 높은 사원을 검색한다.



그룹 함수와 GROUP BY절
SQL> SELECT [DISTINCT/ALL] 컬럼 or 그룹함수, ...
 2 FROM 테이블
 3 WHERE 조건
 4 GROUP BY Group대상
 5 ORDER BY 정렬대상 [ASC/DESC]

예제 4. 업무별 평균 급여, 평균 연봉과 부서별 평균 연봉을 검색한다.

예제 5. 부서별로 급여 평균의 최대 값과 최소 값을 검색한다. 

예제 6. 그룹 대상 컬럼과 그룹 함수를 이용한 검색 결과 확인

예제 7. 각 부서별 최소 급여를 받는 사원의 정보를 검색한다.

실습
1. 각 학과별 학생 수를 검색한다. 
select major 학과, count(*) 학생수
from student
group by major;

!2. 화학과와 생물학과 학생 4.5 환산 평점의 평균을 각각 검색한다.

select major 학과, round(avg(avr*4.5/4.0)) 환산평균학점
from student
where major ='생물'
group by major;


!3. 부임일이 10년 이상 된 직급별(정교수, 조교수, 부교수) 교수의 수를 검색한다. 
select orders 직급,  count(*) 인원수
from professor
group by orders;


!4. 과목명에 화학이 포함된 과목의 학점수 총합을 검색한다.
select cname 과목명, round(sum(st_num)) 학점수_총합
from course
group by cname;

 
!5. 화학과 학생들의 기말고사 성적을 성적순으로 검색한다.
select
from
group by

 
6. 학과별 기말고사 평균을 성적순으로 검색한다. 
select major, round(avg(result)) 평균_점수
from student a, score b
where a.sno=b.sno
group by major
order by 2 desc;

7. 30번 부서의 업무별 연봉의 평균을 검색한다. 단 출력 양식은 소수이하 두 자리까지 통일된 형식으로 출력한다.
 
8. 물리학과 학생 중에 학년별로 성적이 가장 우수한 학생의 평점을 검색한다. 
9. 학년별로 환산 평점의 평균값을 검색한다. 단 출력 양식은 소수이하 두 자리까지 통일된 양식으로 출력한다. 
10. 화학과 1학년 학생 중 평점이 평균 이하인 학생을 검색한다.


그룹 함수와 HAVING

SQL> SELECT [DISTINCT/ALL] 컬럼 or 그룹함수, ... 2 FROM 테이블
3 WHERE 조건
4 GROUP BY Group대상
5 HAVING <그룹 함수 포함 조건>
6 ORDER BY 정렬대상 [ASC/DESC];



반응형

+ Recent posts