어려움: ★★☆☆☆
문제 1: 리두 로그 그룹 및 멤버 생성, 추가 및 삭제(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: 데이터베이스의 모든 파일 이동(10분)
1. 리두 로그 파일 이동
(1) 리두 로그 파일 그룹과 현재 데이터베이스의 멤버를 확인합니다.

SELECT GROUP#, member
FROM v$logfile;
(2) 새 리두 로그 파일 세트를 생성합니다.

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) 현재 리두 로그 파일을 지워 비활성화합니다.

ALTER SYSTEM CHECKPOINT;
/* 현재 REDO 로그파일을 전부 Archive log 영역에 옮기고, 실행 중이던 redo 로그 파일은 비활성화시킨다. archive log mode 상태가 필수적이다. */
ALTER SYSTEM ARCHIVE LOG ALL;
/* 로그파일 그룹의 상태를 다시 확인한다. inactive, unused 상태의 로그파일 그룹은 삭제 가능하다. */
SELECT group#, status
FROM v$log;
2. 컨트롤 파일 이동

/* 컨트롤 파일 파라미터 확인하기 */
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. 데이터 파일 이동

/* 실습용 테이블스페이스 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 테이블스페이스로 이동(10분)
1. 모든 테이블스페이스 및 해당 데이터 파일의 상태 쿼리

SELECT FILE_NAME, TABLESPACE_NAME
FROM DBA_DATA_FILES;
2. SYSAUX 및 SYSTEM 테이블스페이스의 데이터 파일을 이동할 주소에 복사합니다.

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. 테이블스페이스를 RESTORE한 후 데이터베이스를 OPEN합니다.

RECOVER TABLESPACE SYSTEM;
RECOVER TABLESPACE SYSAUX;
ALTER DATABASE OPEN;