일일 정리

DB 패스워드 파일, Table 관리

mysecurity 2025. 4. 23. 17:27

목차

1. DB 패스워드 파일

1-1 관리자 접속을 위한 패스워드 파일 생성

 

2. Table 관리

2-1 테이블 move와 인덱스 rebuild

 

 

1. DB 패스워드 파일

1-1 관리자 접속을 위한 패스워드 파일 생성

관리자는 네트워크로 접속 후 오라클을 작동시킬 수 있어야하므로 일반 계정들과 달리 오라클 밖에 패스워드 파일이 존재한다.

 

환경

SID : DB19

네트워크 접속을 위해 sys(관리자) 패스워드를 지정한다.

 

$ orapwd file=$ORACLE_HOME/dbs/orapwDB19 password=zaqxsw123 force=y format=12

- file = [패스워드파일]

- password = [사용할 패스워드]

- force =[y/n]  :  y 설정 시 패스워드 파일이 있을 경우 강제 생성한다.

- format = [호환버전] : 12이하로 지정하면 패스워드에 특수문자가 불필요하다.

- entries = [인원수] : sysdba 권한을 할당해줄 수 있는 인원 수를 설정한다.

 

2. Table 관리

2-1 테이블 move와 인덱스 rebuild

테이블에 대해 인서트 작업 이후 롤백 작업 수행 시 할당받은 공간만이 그대로 남아있어 용량 낭비가 일어난다. 또한 sql문 실행 시 빈 공간도 모두 탐색하여 리소스가 낭비되므로 테이블스페이스를 재구성하여 빈 공간을 제거하는 작업을 진행한다.
테이블은 move, 인덱스는 rebuild를 이용하지만 용어의 차이일 뿐 작업은 완전히 동일하다.

 

● 사용 명령어

SQL> ALTER TABLE <table명> MOVE [TABLESPACE <tablespace명>];

- 테이블을 지정한 테이블스페이스로 이동한다.

- 테이블스페이스를 지정하지 않으면 현재 저장된 테이블스페이스에 재구성한다.

 

SQL> ALTER INDEX <index명> REBUILD [TABLESPACE <tablespace명>];

- 인덱스를 지정한 테이블스페이스로 이동한다.

- 테이블스페이스를 지정하지 않으면 현재 저장된 테이블스페이스에 재구성한다.

 

 SQL> SELECT D.TN, ROUND(TOTAL/1000000) "TOTAL(MB)",                                
  2                ROUND(FREE/1000000) "FREE(MB)",
  3                TO_CHAR(ROUND(FREE/TOTAL*100,1),'99.9')||'%' RATE
  4   FROM (SELECT TABLESPACE_NAME TN, SUM(BYTES) TOTAL FROM DBA_DATA_FILES
  5        GROUP BY TABLESPACE_NAME) D,
  6        (SELECT TABLESPACE_NAME TN, SUM(BYTES) FREE FROM DBA_FREE_SPACE
  7        GROUP BY TABLESPACE_NAME) F
  8   WHERE D.TN=F.TN;

- 각 테이블스페이스에 남아있는 공간을 MB단위와 백분율로 검색한다.

 

 실습

이전 수업에서 생성한 school 테이블을 이용해 다음과 같이 실습한다.

 

사전 준비: usr테이블스페이스, st유저 생성

create tablespace usr
datafile
'/app/ora19c/oradata/disk1/usr01.dbf' SIZE 30M,
'/app/ora19c/oradata/disk2/usr02.dbf' SIZE 30M;

CREATE USER st       
IDENTIFIED BY st
DEFAULT TABLESPACE usr
TEMPORARY TABLESPACE tmp
QUOTA UNLIMITED ON usr            
QUOTA 2M ON indx; 

GRANT connect, resource TO st

 

 

- 테이블의 chaining row 수를 확인한다. 이 수가 크다면 무브를 고려한다.

     * chaining row : 블록보다 크기가 큰 행이 들어올 시 데이터를 쪼개 넣는다.

- 각 테이블이 저장된 테이블스페이스를 확인한다.

- 각 테이블스페이스에서 사용 가능한 공간을 확인한다.

 

- student 테이블을 indx 테이블스페이스로 이동시킨다.

 

- student 테이블의 인덱스 상태를 확인한다. 테이블 구성 시 제약 조건이 있을 경우 해당 인덱스는 자동 생성된다.

- 테이블의 위치가 바뀌었으므로 기존 인덱스의 rowID가 모두 쓰레기값이 되어버려 UNUSABLE 상태가 된다.

- 인덱스를 원래 테이블 스페이스에 재구성한다.