난이도: ★★☆☆☆
문제 1: redo 로그 group과 member를 create, add, drop 해보기 (5분)
/* 로그파일 그룹의 실행 상태를 표시하는 쿼리 */
SET LINESIZE 150
SELECT group#, status
FROM V$LOG;
/* 전체 로그파일 그룹과 그 멤버에 대한 정보를 표시하는 쿼리 */
SELECT group#, MEMBER
FROM V$LOGFILE;
/* 로그파일 그룹 추가하기 */
ALTER DATABASE ADD LOGFILE GROUP 4 ('/u01/app/oracle/oradata/RYUHOUSE/redo04_01.log',
'/u01/app/oracle/oradata/RYUHOUSE/redo04_02.log') SIZE 50M;
/* 로그파일 멤버 추가하기 */
ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/RYUHOUSE/redo04_03.log')
REUSE TO GROUP 4;
/* 로그파일 멤버 DROP */
ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/RYUHOUSE/redo04_03.log';
/* 로그파일 그룹 DROP */
ALTER DATABASE DROP LOGFILE GROUP 4;
난이도: ★★★☆☆
문제 2: 데이터베이스의 모든 파일을 relocate하기 (10분)
1. redo 로그파일 relocate
(1) 현재 데이터베이스의 redo log file 그룹과 멤버를 확인한다.
SELECT GROUP#, member
FROM v$logfile;
(2) 새로운 redo 로그파일 그룹들을 생성한다.
ALTER DATABASE ADD LOGFILE GROUP 3 '/u01/app/oracle/oradata/RYUHOUSE/redo03.log' SIZE 50M;
ALTER DATABASE ADD LOGFILE GROUP 4 '/u01/app/oracle/oradata/RYUHOUSE/redo04.log' SIZE 50M;
(3) 현재 redo 로그파일을 비워서 비활성화시킨다.
ALTER SYSTEM CHECKPOINT;
/* 현재 REDO 로그파일을 전부 Archive log 영역에 옮기고, 실행 중이던 redo 로그 파일은 비활성화시킨다. archive log mode 상태가 필수적이다. */
ALTER SYSTEM ARCHIVE LOG ALL;
/* 로그파일 그룹의 상태를 다시 확인한다. inactive, unused 상태의 로그파일 그룹은 삭제 가능하다. */
SELECT group#, status
FROM v$log;
2. 컨트롤파일 relocate
/* 컨트롤 파일 파라미터 확인하기 */
SHOW PARAMETER CONTROL_FILES
/* 컨트롤 파일 파라미터를 relocate 하고싶은 주소로 바꾸기, 컨트롤 파일은 2개 이상 지정하는 것이 좋음 */
ALTER SYSTEM SET CONTROL_FILES='/u01/app/oracle/oradata/RYUHOUSE/control01.ctl', '/u01/app/oracle/oradata/RYUHOUSE/control02.ctl' SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
/* 기존 컨트롤파일 위치를 relocate 하고싶은 주소로 복사하기 (접속 시 컨트롤 파일 깨짐 오류를 대비하기 위해, mv를 사용하지 않았다. */
$ cp /u01/app/oracle/oradata/ryuhome/control01.ctl /u01/app/oracle/oradata/RYUHOUSE/control01.ctl
sqlplus / as sysdba
STARTUP
SHOW PARAMETER CONTROL_FILES
3. 데이터파일 relocate하기
/* 실습용 테이블스페이스 mytbs01 생성 */
CREATE TABLESPACE mytbs01 DATAFILE '/u01/app/oracle/oradata/RYUHOUSE/mytbs01.dbf' SIZE 50M;
/* 테이블스페이스의 데이터파일을 offline 상태로 바꾸기 */
ALTER TABLESPACE mytbs01 DATAFILE OFFLINE;
/* 테이블스페이스의 데이터파일을 relocate하고싶은 위치에 복사하기 */
host cp /u01/app/oracle/oradata/RYUHOUSE/mytbs01.dbf /u01/app/oracle/oradata/RYUHOUSE/mytbs.dbf
/* 데이터파일을 rename지정하기 (controlfile에 그 내역이 자동으로 저장됨) */
ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/RYUHOUSE/mytbs01.dbf' TO '/u01/app/oracle/oradata/RYUHOUSE/mytbs.dbf';
/* 테이블스페이스를 RECOVER 하고 online으로 돌려놓기 */
RECOVER TABLESPACE mytbs01;
ALTER TABLESPACE mytbs01 ONLINE;
난이도: ★★★☆☆
문제 3: SYSTEM, SYSAUX 테이블스페이스의 데이터파일을 relocate 하기 (10분)
1. 모든 테이블스페이스와 그 데이터파일 현황 쿼리하기
SELECT FILE_NAME, TABLESPACE_NAME
FROM DBA_DATA_FILES;
2. SYSAUX, SYSTEM 테이블스페이스의 데이터파일을 relocate하려는 주소에 복사하기
host cp /u01/app/oracle/oradata/MYHOME/datafile/o1_mf_sysaux_kzkzlwdv_.dbf /u01/app/oracle/oradata/MYHOME/datafile/o1_mf_sysaux_kzkzlwdv_1.dbf
host cp /u01/app/oracle/oradata/MYHOME/datafile/o1_mf_system_kzkzks7p_.dbf /u01/app/oracle/oradata/MYHOME/datafile/o1_mf_system_kzkzks7p_1.dbf
3. MOUNT모드로 열고, 데이터파일명을 변경하기
STARTUP MOUNT
ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/MYHOME/datafile/o1_mf_sysaux_kzkzlwdv_.dbf' TO '/u01/app/oracle/oradata/MYHOME/datafile/o1_mf_sysaux_kzkzlwdv_1.dbf'
ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/MYHOME/datafile/o1_mf_system_kzkzks7p_.dbf' TO '/u01/app/oracle/oradata/MYHOME/datafile/o1_mf_system_kzkzks7p_1.dbf';
4. 테이블스페이스를 RECOVER 한 후, 데이터베이스를 OPEN
RECOVER TABLESPACE SYSTEM;
RECOVER TABLESPACE SYSAUX;
ALTER DATABASE OPEN;