1. READ ONLY 옵션의 필요성
* 테이블스페이스 옵션을 READ ONLY으로 할 경우 DML 중 SELECT(조회)만 가능
1) 데이터의 변경이 없는 경우(Ex> log 테이블 등)
→ READ ONLY로 변경시 성능의 개선, BCV 백업시 해당 테이블스페이스 제외 가능
2) 데이터가 변경되면 안되는 경우, 일관성을 유지하고 싶은 경우
Ex> 데이터 마이그레이션(이행) 상황, MDM 등 기준 데이터 유지하는 경우
2. 테이블스페이스를 READ ONLY 할 수 있는 조건
1) TABLESPACE에 ACTIVE 트랜잭션이 없어야 한다.
2) TABLESPACE에 ACTIVE ROLLBACK SEGMENT가 없어야 한다.
3) TABLESPACE에 ONLINE BACKUP이 없어야 한다.
4) SYSTEM TABLESPACE가 아니어야 한다. (SYS, TEMP 등)
3. 스크립트
1) 수행 스크립트
/* READ ONLY로 변경하기 */
ALTER TABLESPACE 테이블스페이스이름 READ ONLY;
/* READ WRITE(ONLINE)으로 변경하기 */
ALTER TABLESPACE 테이블스페이스이름 READ WRITE;
2) 시스템 영역 제외 전체 발췌 스크립트
/* DB별 테이블스페이스 명명규칙이 다를 수 있으니 전체 확인 필수 */
SELECT 'ALTER TABLESPACE '||A.TABLESPACE_NAME||' READ ONLY;' READ_ONLY_SQL
, 'ALTER TABLESPACE '||A.TABLESPACE_NAME||' READ WRITE;' READ_WRITE_SQL
FROM DBA_TABLESPACES A
WHERE A.TABLESPACE_NAME NOT IN ('SYSTEM', 'SYSAUX', 'USERS', 'TEMP')
AND .TABLESPACE_NAME NOT LIKE '%UNDO%'
ORDER BY A.TABLESPACE_NAME
;
* 관련 SQL
1) ACTIVE SESSION KILL
/* KILL 전에 스키마 이름 등 세션 정보 반드시 확인
SCEHMANAME NOT IN 조건에 제외할 스키마 추가
*/
SELECT 'ALTER SYSTEM KILL SESSION "'||A.SID||','||A.SERIAL#||',@'||A.INST_ID||'" IMEDIATE;' KILL_SQL
, A.SQL_ID
, A.STATUS
, A.*
FROM GV$SESSION A
WHERE A.STATUS = 'ACTIVE'
AND SCHEMANAME NOT IN ('SYS');
2) DATA FILE 별 별도 확인
/* ENABLED 컬럼에서 READ WRITE / READ ONLINE 확인 */
SELECT * FROM GV$DATAFILE;
* 참고자료 :
https://docs.oracle.com/cd/E18283_01/server.112/e17120/tspaces006.htm
반응형
'데이터 사이언스 DataScience > Data Base 데이터베이스' 카테고리의 다른 글
[Oracle] Profile을 통한 계정관리 (0) | 2022.10.04 |
---|---|
[Oracle] AWR DUMP 백업하기, HTML로 추출하기 (0) | 2022.08.03 |
[Oracle] MGA 이슈 → 19버전은 19.8 이후 버전 사용 권장 (0) | 2022.06.21 |
[Oracle] range 파티션 split 작업 체크리스트 (0) | 2022.06.07 |
[Oracle] Temp 테이블스페이스 사용량, 세션 확인 (2) | 2022.05.26 |