ORA-00206๋?
ORA-00206์ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ปจํธ๋กค ํ์ผ(Control File)์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๋์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ๋ํ๋๋ ์๋ฌ์ ๋๋ค. ์ปจํธ๋กค ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ(๋ฐ์ดํฐ ํ์ผ ์์น, ๋ฆฌ๋ ๋ก๊ทธ ํ์ผ ์์น, ์ฒดํฌํฌ์ธํธ ์ ๋ณด ๋ฑ)๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฅ ํต์ฌ์ ์ธ ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ก, ์ด ํ์ผ์ ์ฐ๊ธฐ ์์ ์ด ์คํจํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฆ๊ฐ์ ์ผ๋ก ๋น์ ์ ์ข ๋ฃ(Crash)๋ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ORA-00202(์ปจํธ๋กค ํ์ผ ์๋ณ ์ ๋ณด)์ ORA-27xxx ์๋ฆฌ์ฆ ์๋ฌ์ ํจ๊ป ๋ฐ์ํ๋ฉฐ, ์ด์ ์ค์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์์ค๋ฝ๊ฒ ๋ํ๋๋ ๊ฒฝ์ฐ ์ฆ๊ฐ์ ์ธ ๋์์ด ํ์ํ Critical ์๋ฌ์ ๋๋ค.
์ฃผ์ ๋ฐ์ ์์ธ
1. ์ปจํธ๋กค ํ์ผ์ด ์์นํ ๋์คํฌ์ ๋ฌผ๋ฆฌ์ ์ฅ์ ๋๋ ์ฉ๋ ๋ถ์กฑ
๊ฐ์ฅ ํํ๊ณ ์น๋ช
์ ์ธ ์์ธ์ผ๋ก, ์ปจํธ๋กค ํ์ผ์ด ์ ์ฅ๋ ํ์ผ์์คํ
์ ๋์คํฌ๊ฐ ๊ฝ ์ฐผ๊ฑฐ๋ ๋์คํฌ ์์ฒด์ ๋ฌผ๋ฆฌ์ ์ธ I/O ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์
๋๋ค. Oracle์ ์ปจํธ๋กค ํ์ผ์ ์ฒดํฌํฌ์ธํธ, SCN(System Change Number), ์์นด์ด๋ธ ๋ก๊ทธ ์ ๋ณด ๋ฑ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ํ๋๋ฐ, ์ด ์ฐ๊ธฐ ์์
์ด ์คํจํ๋ฉด ์ฆ์ ORA-00206์ด ๋ฐ์ํฉ๋๋ค. ํนํ ASM(Automatic Storage Management) ํ๊ฒฝ์ด ์๋ ์ผ๋ฐ ํ์ผ์์คํ
ํ๊ฒฝ์์ /u01 ๋๋ /oracle ๋ง์ดํธ ํฌ์ธํธ๊ฐ 100% ์ฌ์ฉ๋ฅ ์ ๋๋ฌํ์ ๋ ์์ฃผ ๋ชฉ๊ฒฉ๋ฉ๋๋ค.
2. ์ปจํธ๋กค ํ์ผ์ ๋ํ OS ํ์ผ ๊ถํ ๋๋ ์์ ๊ถ ๋ฌธ์
Oracle ํ๋ก์ธ์ค(LGWR, CKPT)๊ฐ ์ปจํธ๋กค ํ์ผ์ ์ ๊ทผํ ์ ์๋ ์ ์ ํ OS ๊ถํ์ ๊ฐ์ง ๋ชปํ ๊ฒฝ์ฐ ๋ฐ์ํฉ๋๋ค. ์ด์์ฒด์ ํจ์น, ๋ณด์ ์ ์ฑ
๋ณ๊ฒฝ, ๋๋ ์๋์ผ๋ก ํ์ผ ๊ถํ์ ๋ณ๊ฒฝํ ์ดํ์ Oracle ์์ ์(oracle ์ ์ )์ ์ฐ๊ธฐ ๊ถํ์ด ์ ๊ฑฐ๋๋ฉด ์ด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ํนํ RAC(Real Application Clusters) ํ๊ฒฝ์์ ๊ณต์ ์คํ ๋ฆฌ์ง์ ACL ์ค์ ์ด ๋ณ๊ฒฝ๋์์ ๋ ํ ๋
ธ๋์์๋ง ์ ํ์ ์ผ๋ก ๋ํ๋๋ ๊ฒฝ์ฐ๋ ์์ด ์์ธ ๋ถ์์ด ๋ณต์กํด์ง ์ ์์ต๋๋ค.
3. ์ปจํธ๋กค ํ์ผ ์์ฒด์ ์์(Corruption) ๋๋ ์ญ์
์ค์๋ก ์ปจํธ๋กค ํ์ผ์ด OS ๋ ๋ฒจ์์ ์ญ์ ๋๊ฑฐ๋, ์คํ ๋ฆฌ์ง ๋ ์ด์ด์์ ๋ฐ์ดํฐ ๋ธ๋ก ์์์ด ๋ฐ์ํ ๊ฒฝ์ฐ์ ๋๋ค. ์ผ๋ถ ๋ฐฑ์ ์ํํธ์จ์ด๊ฐ ์คํ ์ํ์ ์ปจํธ๋กค ํ์ผ์ ์๋ชป ์ฒ๋ฆฌํ๊ฑฐ๋, ์ค๋ ์ท ๋ณต์ ๊ณผ์ ์์ ๋ถ์ผ์น๊ฐ ์๊ฒจ ํ์ผ์ด ์์๋๊ธฐ๋ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋จ์ ์ฌ์์์ผ๋ก๋ ํด๊ฒฐ๋์ง ์์ผ๋ฉฐ, ๋ฐฑ์ ์ผ๋ก๋ถํฐ ์ปจํธ๋กค ํ์ผ์ ๋ณต๊ตฌํ๋ ์ ์ฐจ๊ฐ ๋ฐ๋์ ํ์ํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
โ ์์ธ 1 ํด๊ฒฐ: ๋์คํฌ ์ฉ๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐ ์ปจํธ๋กค ํ์ผ ์ด๋
Step 1. ํ์ฌ ์ปจํธ๋กค ํ์ผ ์์น ๋ฐ ๋์คํฌ ์ฌ์ฉ๋ ํ์ธ
-- ์ปจํธ๋กค ํ์ผ ์์น ํ์ธ
SELECT name, status FROM v$controlfile;
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ ๊ด๋ จ ์ฌ์ฉ ์ฉ๋ ํ์ธ
SELECT
file#,
name,
bytes / 1024 / 1024 AS size_mb,
status
FROM v$datafile
ORDER BY bytes DESC;
Step 2. OS ๋ ๋ฒจ์์ ๋์คํฌ ํ์ธ ํ ๊ณต๊ฐ ํ๋ณด (DBA + SA ํ์
)
-- ๋ถํ์ํ ์์นด์ด๋ธ ๋ก๊ทธ ์ญ์ (RMAN ์ฌ์ฉ)
-- * ์ฃผ์: ๋ฐฑ์
์๋ฃ๋ ๋ก๊ทธ๋ง ์ญ์ ํ ๊ฒ
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3';
Step 3. ์ปจํธ๋กค ํ์ผ์ ์ฌ์ ๊ณต๊ฐ์ด ์๋ ๋์คํฌ๋ก ์ด๋
-- SPFILE์์ control_files ํ๋ผ๋ฏธํฐ ๋ณ๊ฒฝ
-- ๋จผ์ ํ์ฌ ์ค์ ํ์ธ
SHOW PARAMETER control_files;
-- SPFILE ์์ (DB ์ฌ์์ ํ์)
ALTER SYSTEM SET control_files =
'/u02/oradata/ORCL/control01.ctl',
'/u03/oradata/ORCL/control02.ctl'
SCOPE = SPFILE;
-- DB ์ข
๋ฃ ํ OS์์ ํ์ผ ๋ณต์ฌ
-- $ cp /u01/oradata/ORCL/control01.ctl /u02/oradata/ORCL/control01.ctl
-- $ cp /u01/oradata/ORCL/control02.ctl /u03/oradata/ORCL/control02.ctl
-- DB ์ฌ์์
SHUTDOWN IMMEDIATE;
STARTUP;
-- ๋ณ๊ฒฝ ํ์ธ
SELECT name FROM v$controlfile;
โ ์์ธ 2 ํด๊ฒฐ: OS ํ์ผ ๊ถํ ๋ณต๊ตฌ
-- 1. ๋จผ์ Alert Log์์ ์์ธ ์๋ฌ ํ์ธ
-- $ORACLE_BASE/diag/rdbms/<db_name>/<instance>/trace/alert_<SID>.log
-- 2. ํ์ฌ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ํ์ธ
SELECT name FROM v$controlfile;
OS ๋ ๋ฒจ์์ ๊ถํ ๋ณต๊ตฌ:
# Oracle ์ ์ ๋ก ์ ํ ๋๋ root์์ ์คํ
# ์ปจํธ๋กค ํ์ผ ์์ ์ ๋ฐ ๊ถํ ํ์ธ
ls -la /u01/oradata/ORCL/control*.ctl
# ์์ ์ ๋ณต๊ตฌ (root ๊ถํ ํ์)
chown oracle:oinstall /u01/oradata/ORCL/control01.ctl
chown oracle:oinstall /u01/oradata/ORCL/control02.ctl
# ๊ถํ ์ค์ (์์ ์ ์ฝ๊ธฐ/์ฐ๊ธฐ, ๊ทธ๋ฃน/๊ธฐํ ๊ถํ ์ ๊ฑฐ)
chmod 640 /u01/oradata/ORCL/control01.ctl
chmod 640 /u01/oradata/ORCL/control02.ctl
-- ๊ถํ ๋ณต๊ตฌ ํ DB ์ฌ์์ ๋ฐ ์ ์ ์ฌ๋ถ ํ์ธ
SHUTDOWN ABORT;
STARTUP;
-- ์ปจํธ๋กค ํ์ผ ์ํ ํ์ธ
SELECT name, status, block_size, file_size_blks
FROM v$controlfile;
โ ์์ธ 3 ํด๊ฒฐ: ๋ฐฑ์ ์ผ๋ก๋ถํฐ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
๋ฐฉ๋ฒ A: RMAN ์๋ ๋ฐฑ์
์ ํตํ ๋ณต๊ตฌ
-- RMAN ์ ์
-- $ rman target /
-- ์ปจํธ๋กค ํ์ผ๋ง ๋ณต๊ตฌ
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;
๋ฐฉ๋ฒ B: ํธ๋ ์ด์ค ํ์ผ๋ก๋ถํฐ ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ
-- ์ฌ์ ์ ์์ฑํด ๋ ์ปจํธ๋กค ํ์ผ ํธ๋ ์ด์ค๋ก ์ฌ์์ฑ
-- (ํ์์ ์๋ ๋ช
๋ น์ด๋ก ํธ๋ ์ด์ค๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์์ฑํด ๋์ด์ผ ํจ)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS '/backup/controlfile_backup.sql' REUSE RESETLOGS;
-- ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ ์คํฌ๋ฆฝํธ ์์ (ํธ๋ ์ด์ค ๋ด์ฉ ๊ธฐ๋ฐ)
STARTUP NOMOUNT;
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/oradata/ORCL/redo01.log' SIZE 200M BLOCKSIZE 512,
GROUP 2 '/u01/oradata/ORCL/redo02.log' SIZE 200M BLOCKSIZE 512,
GROUP 3 '/u01/oradata/ORCL/redo03.log' SIZE 200M BLOCKSIZE 512
DATAFILE
'/u01/oradata/ORCL/system01.dbf',
'/u01/oradata/ORCL/sysaux01.dbf',
'/u01/oradata/ORCL/undotbs01.dbf',
'/u01/oradata/ORCL/users01.dbf'
CHARACTER SET AL32UTF8;
-- ๋ณต๊ตฌ ์งํ
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
ALTER DATABASE OPEN RESETLOGS;
-- ์ ์ปจํธ๋กค ํ์ผ ๋ค์คํ ์ ์ฉ
ALTER DATABASE BACKUP CONTROLFILE TO '/u02/oradata/ORCL/control02.ctl';
์๋ฐฉ ๋ฐฉ๋ฒ
1. ์ปจํธ๋กค ํ์ผ ๋ค์คํ ๋ฐ ์ ๊ธฐ์ ๋ฐฑ์ ์๋ํ
์ปจํธ๋กค ํ์ผ์ ๋ฐ๋์ ์๋ก ๋ค๋ฅธ ๋ฌผ๋ฆฌ ๋์คํฌ(๋๋ ASM ๋์คํฌ ๊ทธ๋ฃน)์ 3๊ฐ ์ด์ ๋ค์คํํ์ฌ ๋จ์ผ ์ฅ์ ์ง์ ์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ๋ํ RMAN์ CONFIGURE CONTROLFILE AUTOBACKUP ON ์ค์ ์ ํ์ฑํํ์ฌ ๋ฐฑ์
์ด ์ํ๋ ๋๋ง๋ค ์ปจํธ๋กค ํ์ผ ์๋ ๋ฐฑ์
์ด ์ด๋ฃจ์ด์ง๋๋ก ํ๊ณ , ์ ๊ธฐ์ ์ผ๋ก ALTER DATABASE BACKUP CONTROLFILE TO TRACE๋ฅผ ์คํํ์ฌ ์ฌ์์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๋ ๋ณด๊ดํด์ผ ํฉ๋๋ค.
-- RMAN ์ปจํธ๋กค ํ์ผ ์๋ ๋ฐฑ์
ํ์ฑํ
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT
FOR DEVICE TYPE DISK TO '/backup/rman/cf_%F';
-- ์ปจํธ๋กค ํ์ผ ๋ค์คํ ํ์ธ
SELECT COUNT(*) AS controlfile_count FROM v$controlfile;
-- ์ปจํธ๋กค ํ์ผ ํธ๋ ์ด์ค ์์ฑ (์ฃผ 1ํ ๊ถ์ฅ)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS '/backup/scripts/create_controlfile.sql' REUSE RESETLOGS;
2. ๋์คํฌ ์ฌ์ฉ๋ฅ ๋ชจ๋ํฐ๋ง ์๋ํ ๋ฐ ์๊ณ์น ์๋ ์ค์
์ปจํธ๋กค ํ์ผ์ด ์์นํ ํ์ผ์์คํ
์ ์ฌ์ฉ๋ฅ ์ ์์ ๋ชจ๋ํฐ๋งํ๊ณ 80% ์ด๊ณผ ์ ๊ฒฝ๋ณด๊ฐ ๋ฐ์ํ๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค. Oracle Enterprise Manager(OEM) ๋๋ ๊ฐ๋จํ ์ ์คํฌ๋ฆฝํธ๋ฅผ cron์ผ๋ก ๋ฑ๋กํ์ฌ DBA์๊ฒ ์ด๋ฉ์ผ/SMS ์๋์ ๋ฐ์กํ๋ ์ฒด๊ณ๋ฅผ ๊ฐ์ถ์ด์ผ ํ๋ฉฐ, ์์นด์ด๋ธ ๋ก๊ทธ ์ ์ฌ ๊ณต๊ฐ๊ณผ ์ปจํธ๋กค ํ์ผ ๊ณต๊ฐ์ ๋ถ๋ฆฌ ๊ด๋ฆฌํ๋ ๊ฒ์ด Best Practice์
๋๋ค.
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ถ์์ ํ์ผ์์คํ
์ฌ์ฉ๋ ์กฐํ (DBA_DATA_FILES ๊ธฐ์ค)
SELECT
tablespace_name,
ROUND(SUM(bytes) / 1024 / 1024 / 1024, 2) AS total_gb,
ROUND(SUM(maxbytes) / 1024 / 1024 / 1024, 2) AS max_gb
FROM dba_data_files
GROUP BY tablespace_name
ORDER BY total_gb DESC;
-- Alert Log ์๋ ๋ชจ๋ํฐ๋ง์ ์ํ ์ธ๋ถ ํ
์ด๋ธ ํ์ฉ (12c ์ด์)
SELECT originating_timestamp, message_text
FROM v$diag_alert_ext
WHERE message_text LIKE '%ORA-00206%'
OR message_text LIKE '%control file%'
ORDER BY originating_timestamp DESC
FETCH FIRST 20 ROWS ONLY;
๊ด๋ จ ์๋ฌ
| ์๋ฌ ์ฝ๋ | ์ค๋ช |
|---|---|
| ORA-00202 | ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ์๋ณ ์๋ฌ๋ก, ORA-00206๊ณผ ํญ์ ํจ๊ป ์ถ๋ ฅ๋์ด ๋ฌธ์ ๊ฐ ๋ ์ปจํธ๋กค ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์๋ ค์ค๋๋ค. |
| ORA-00210 | ์ง์ ๋ ์ปจํธ๋กค ํ์ผ์ ์ด ์ ์๋ ์๋ฌ๋ก, ํ์ผ์ด ์ญ์ ๋์๊ฑฐ๋ ๊ฒฝ๋ก๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ๋ฐ์ํฉ๋๋ค. |
| ORA-00227 | ์ปจํธ๋กค ํ์ผ ๋ด ๋ธ๋ก ์์(Corrupt Block) ๊ฐ์ง ์ ๋ฐ์ํ๋ฉฐ, ๋ณต๊ตฌ๊ฐ ํ์ํ ์ฌ๊ฐํ ์ํ์ ๋๋ค. |
| ORA-00245 | RMAN ๋ฐฑ์ ์ค ์ปจํธ๋กค ํ์ผ |












