ORA-00200: Control File Could Not Be Created ์๋ฒฝ ํด๊ฒฐ ๊ฐ์ด๋
ORA-00200๋?
ORA-00200์ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ปจํธ๋กค ํ์ผ(Control File)์ ์์ฑํ์ง ๋ชปํ ๋ ๋ฐ์ํ๋ ์๋ฌ์
๋๋ค. ์ปจํธ๋กค ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ(๋ฐ์ดํฐ ํ์ผ, ๋ฆฌ๋ ๋ก๊ทธ ํ์ผ ์์น ๋ฑ)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํต์ฌ ํ์ผ๋ก, ์ด ํ์ผ ์์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์์ ์ผ๋ก ๋ง์ดํธํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค. ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ(CREATE DATABASE) ๋จ๊ณ, ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ(CREATE CONTROLFILE) ์์
, ๋๋ RMAN์ ํตํ ๋ณต๊ตฌ ๊ณผ์ ์์ ์ด ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉฐ, ์ฆ๊ฐ์ ์ธ ์์ธ ํ์
๊ณผ ์กฐ์น๊ฐ ํ์ํฉ๋๋ค.
์ฃผ์ ๋ฐ์ ์์ธ
1. ํ์ผ ์์คํ ๊ถํ ๋ฌธ์ ๋๋ ๋๋ ํ ๋ฆฌ ๋ฏธ์กด์ฌ
Oracle ํ๋ก์ธ์ค(์ผ๋ฐ์ ์ผ๋ก oracle OS ๊ณ์ )๊ฐ ์ปจํธ๋กค ํ์ผ์ ์์ฑํ๋ ค๋ ๊ฒฝ๋ก์ ๋ํ ์ฐ๊ธฐ ๊ถํ์ด ์๊ฑฐ๋, ํด๋น ๋๋ ํ ๋ฆฌ ์์ฒด๊ฐ ์กด์ฌํ์ง ์์ ๋ ๊ฐ์ฅ ๋น๋ฒํ๊ฒ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด CONTROL_FILES ํ๋ผ๋ฏธํฐ์ ์ง์ ๋ ๊ฒฝ๋ก๊ฐ ์ค์ OS์ ์กด์ฌํ์ง ์๊ฑฐ๋, ๋ง์ดํธ ํฌ์ธํธ๊ฐ ๋๋ฝ๋ ๊ฒฝ์ฐ๊ฐ ์ด์ ํด๋นํฉ๋๋ค. ์ค๋ฌด์์ ์คํ ๋ฆฌ์ง ์ฌ๊ตฌ์ฑ, ์๋ฒ ์ด์ , NFS ๋ง์ดํธ ํด์ ์ดํ ์ด ๋ฌธ์ ๊ฐ ์ข
์ข
๋ฐ์ํฉ๋๋ค.
2. ๋์คํฌ ๊ณต๊ฐ ๋ถ์กฑ (No Space Left on Device)
์ปจํธ๋กค ํ์ผ์ด ์์ฑ๋ ํํฐ์ ๋๋ ๋ณผ๋ฅจ์ ๊ฐ์ฉ ๋์คํฌ ๊ณต๊ฐ์ด ๋ถ์กฑํ ๊ฒฝ์ฐ์๋ ORA-00200์ด ๋ฐ์ํฉ๋๋ค. ์ปจํธ๋กค ํ์ผ ์์ฒด์ ํฌ๊ธฐ๋ ์์ญ MB ์์ค์ด์ง๋ง, ์ด๋ฏธ ๋์คํฌ๊ฐ ๊ฝ ์ฐฌ ์ํ๋ผ๋ฉด Oracle์ ํ์ผ ์์ฑ ์์ฒด๋ฅผ ์คํจ ์ฒ๋ฆฌํฉ๋๋ค. ํนํ ์์นด์ด๋ธ ๋ก๊ทธ๊ฐ ๊ณผ๋ํ๊ฒ ์์ด๊ฑฐ๋ ํธ๋ ์ด์ค ํ์ผ์ด ๋์คํฌ๋ฅผ ์ ์ ํ์ฌ ๊ณต๊ฐ์ด ๋ถ์กฑํด์ง๋ ์ํฉ๊ณผ ๋์์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
3. CONTROL_FILES ํ๋ผ๋ฏธํฐ ์ค์ ์ค๋ฅ
SPFILE ๋๋ PFILE ๋ด์ CONTROL_FILES ํ๋ผ๋ฏธํฐ์ ์๋ชป๋ ๊ฒฝ๋ก, ์คํ, ๋๋ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ์ ๋ฐ์ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์๋ฒ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๊ฑฐ๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ์ดํ ํ๋ผ๋ฏธํฐ ํ์ผ์ ๊ฐฑ์ ํ์ง ์์ ๊ฒฝ์ฐ, ๋๋ CREATE CONTROLFILE ๊ตฌ๋ฌธ์์ ๊ฒฝ๋ก๋ฅผ ์๋ชป ๊ธฐ์
ํ ๊ฒฝ์ฐ๊ฐ ๋ํ์ ์ธ ์์
๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์์ธ 1 ํด๊ฒฐ: ๋๋ ํ ๋ฆฌ ์์ฑ ๋ฐ ๊ถํ ๋ถ์ฌ
๋จผ์ alert log์ trace ํ์ผ์ ํ์ธํ์ฌ ์ ํํ ์ด๋ ๊ฒฝ๋ก์์ ์คํจํ๋์ง ํ์
ํฉ๋๋ค.
-- alert log ์์น ํ์ธ
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Diag Trace';
-- ํ์ฌ CONTROL_FILES ํ๋ผ๋ฏธํฐ ํ์ธ
SHOW PARAMETER CONTROL_FILES;
-- ๋๋
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = 'control_files';
ํ์ธ ํ OS ๋ ๋ฒจ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
# OS ๋ช
๋ น์ด (root ๋๋ oracle ๊ณ์ )
mkdir -p /u01/app/oracle/oradata/ORCL
chown oracle:oinstall /u01/app/oracle/oradata/ORCL
chmod 750 /u01/app/oracle/oradata/ORCL
# ๋์คํฌ ๋ง์ดํธ ํ์ธ
df -h /u01/app/oracle/oradata/ORCL
ls -ld /u01/app/oracle/oradata/ORCL
๋๋ ํ ๋ฆฌ ์์ฑ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
-- DB ์ฌ๊ธฐ๋ ์๋
STARTUP NOMOUNT;
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
์์ธ 2 ํด๊ฒฐ: ๋์คํฌ ๊ณต๊ฐ ํ๋ณด ํ ์ฌ์์ฑ
# OS์์ ๋์คํฌ ์ฌ์ฉ๋ ํ์ธ
df -h
du -sh /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/*
# ์ค๋๋ ํธ๋ ์ด์ค ํ์ผ ์ ๋ฆฌ (30์ผ ์ด์)
find /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ -name "*.trc" -mtime +30 -delete
find /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ -name "*.trm" -mtime +30 -delete
์์นด์ด๋ธ ๋ก๊ทธ๋ก ์ธํ ๊ณต๊ฐ ๋ถ์กฑ ์ RMAN์ ํ์ฉํ์ฌ ์ ๋ฆฌํฉ๋๋ค.
-- RMAN์ผ๋ก ์ค๋๋ ์์นด์ด๋ธ ๋ก๊ทธ ์ญ์
-- (๋ฐฑ์
์๋ฃ๋ ์์นด์ด๋ธ ๋ก๊ทธ๋ง ์ญ์ )
rman target /
# RMAN ํ๋กฌํํธ์์ ์คํ
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
๊ณต๊ฐ ํ๋ณด ํ ์ปจํธ๋กค ํ์ผ์ ์ฌ์์ฑํฉ๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ ์์
-- NOMOUNT ์ํ์์ ์คํ
STARTUP NOMOUNT;
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/ORCL/redo01.log' SIZE 50M,
GROUP 2 '/u01/app/oracle/oradata/ORCL/redo02.log' SIZE 50M,
GROUP 3 '/u01/app/oracle/oradata/ORCL/redo03.log' SIZE 50M
DATAFILE
'/u01/app/oracle/oradata/ORCL/system01.dbf',
'/u01/app/oracle/oradata/ORCL/sysaux01.dbf',
'/u01/app/oracle/oradata/ORCL/undotbs01.dbf',
'/u01/app/oracle/oradata/ORCL/users01.dbf'
CHARACTER SET AL32UTF8;
์์ธ 3 ํด๊ฒฐ: CONTROL_FILES ํ๋ผ๋ฏธํฐ ์์
SPFILE์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์์ ํฉ๋๋ค.
-- ํ์ฌ SPFILE ์ฌ์ฉ ์ฌ๋ถ ํ์ธ
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = 'spfile';
-- SPFILE์์ CONTROL_FILES ํ๋ผ๋ฏธํฐ ์์ (NOMOUNT ์ํ์์๋ ๊ฐ๋ฅ)
-- ๋จผ์ PFILE๋ก ์ถ์ถ
CREATE PFILE='/tmp/init_backup.ora' FROM SPFILE;
PFILE์ ํ
์คํธ ํธ์ง๊ธฐ๋ก ์ด์ด ๊ฒฝ๋ก๋ฅผ ์์ ํ ํ ๋ค์ SPFILE๋ก ๋ณํํฉ๋๋ค.
-- pfile์ ์ง์ ์์ ํ ๋ค spfile ์ฌ์์ฑ
CREATE SPFILE FROM PFILE='/tmp/init_backup.ora';
-- ๋๋ SPFILE ์ง์ ์์ (๋ง์ดํธ ๊ฐ๋ฅํ ๊ฒฝ์ฐ)
ALTER SYSTEM SET CONTROL_FILES=
'/u01/app/oracle/oradata/ORCL/control01.ctl',
'/u01/app/oracle/fast_recovery_area/ORCL/control02.ctl'
SCOPE=SPFILE;
์์ ํ DB๋ฅผ ์ฌ๊ธฐ๋ํ์ฌ ์ ์ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
-- ์ฌ๊ธฐ๋ ๋ฐ ํ์ธ
SHUTDOWN IMMEDIATE;
STARTUP;
-- ์ปจํธ๋กค ํ์ผ ์ ์ ์ธ์ ํ์ธ
SELECT STATUS, NAME FROM V$CONTROLFILE;
-- ์ปจํธ๋กค ํ์ผ ์์ธ ์ ๋ณด ํ์ธ
SELECT * FROM V$CONTROLFILE_RECORD_SECTION;
์๋ฐฉ ๋ฐฉ๋ฒ
1. ์ปจํธ๋กค ํ์ผ ๋ค์คํ ๋ฐ ์ ๊ธฐ์ ์ธ ๋ฐฑ์ ์ ์ฑ ์๋ฆฝ
์ปจํธ๋กค ํ์ผ์ ๋ฐ๋์ ์๋ก ๋ค๋ฅธ ๋์คํฌ(๋๋ ASM ๋์คํฌ ๊ทธ๋ฃน)์ ์ต์ 3๊ฐ ์ด์ ๋ค์คํํ์ฌ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ๋จ์ผ ์ง์ ์ฅ์ (SPOF)๋ก ์ธํด ๋ชจ๋ ์ปจํธ๋กค ํ์ผ์ด ์์๋๋ ์ํฉ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๋ํ RMAN์ ํตํด ์ ๊ธฐ์ ์ผ๋ก ์ปจํธ๋กค ํ์ผ ์๋ ๋ฐฑ์
์ ํ์ฑํํ๊ณ , BACKUP CURRENT CONTROLFILE ๋ช
๋ น ๋๋ CONFIGURE CONTROLFILE AUTOBACKUP ON ์ค์ ์ ํตํด ์ฃผ์ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์๋ง๋ค ์๋ ๋ฐฑ์
์ด ์ํ๋๋๋ก ๊ตฌ์ฑํฉ๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ์๋ ๋ฐฑ์
ํ์ฑํ (RMAN)
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/cf_%F';
-- ํ์ฌ ๋ค์คํ ์ํ ํ์ธ
SELECT NAME FROM V$CONTROLFILE;
2. ๋์คํฌ ๊ณต๊ฐ ๋ฐ ํ์ผ ์์คํ ๋ชจ๋ํฐ๋ง ์๋ํ
๋์คํฌ ๊ณต๊ฐ ๋ถ์กฑ์ ์์ธก ๊ฐ๋ฅํ ๋ฌธ์ ์์๋ ๋ถ๊ตฌํ๊ณ ์ค๋ฌด์์ ์์ฃผ ๊ฐ๊ณผ๋ฉ๋๋ค. Oracle Enterprise Manager(OEM), Zabbix, Nagios ๋ฑ์ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ์ฃผ์ ํ์ผ ์์คํ
์ ์ฌ์ฉ๋ฅ ์ด 80%๋ฅผ ์ด๊ณผํ๋ฉด ์ฆ์ ์๋ฆผ์ด ๋ฐ์ก๋๋๋ก ์๊ณ์น๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธ๋ฌ ์์นด์ด๋ธ ๋ก๊ทธ ์๋ ์ญ์ ์ ์ฑ
๊ณผ ํธ๋ ์ด์ค ํ์ผ ์๋ ์ ๋ฆฌ ์คํฌ๋ฆฝํธ๋ฅผ cron job์ผ๋ก ๋ฑ๋กํ์ฌ ์ด์ ์ค ๊ณต๊ฐ ๊ณ ๊ฐ ์ํฉ์ ์ฌ์ ์ ๋ฐฉ์งํฉ๋๋ค.
-- ์์นด์ด๋ธ ๋ก๊ทธ ๊ณต๊ฐ ์ฌ์ฉ ํํฉ ํ์ธ
SELECT DEST_NAME, STATUS, TARGET, ARCHIVER,
SCHEDULE, DESTINATION, BINDING
FROM V$ARCHIVE_DEST
WHERE STATUS = 'VALID';
-- FRA(Fast Recovery Area) ์ฌ์ฉ๋ฅ ํ์ธ
SELECT SPACE_LIMIT/1024/1024/1024 AS LIMIT_GB,
SPACE_USED/1024/1024/1024 AS USED_GB,
ROUND(SPACE_USED/SPACE_LIMIT*100, 2) AS USED_PCT
FROM V$RECOVERY_FILE_DEST;
๊ด๋ จ ์๋ฌ
| ์๋ฌ ์ฝ๋ | ์ค๋ช |
|---|---|
| ORA-00201 |
control file version incompatible โ ์ปจํธ๋กค ํ์ผ์ ๋ฒ์ ์ด Oracle ์ํํธ์จ์ด ๋ฒ์ ๊ณผ ํธํ๋์ง ์์ ๋ ๋ฐ์. ์
๊ทธ๋ ์ด๋ ๋๋ ๋ค์ด๊ทธ๋ ์ด๋ ํ ์ฃผ๋ก ๋ํ๋จ. |
| ORA-00202 |
control file: 'string' โ ์ปจํธ๋กค ํ์ผ ์ ๊ทผ ์ค ๋ฐ์ํ ํ์ ์๋ฌ๋ก, ORA-00200๊ณผ ํจ๊ป ์คํ ํํ๋ก ์ถ๋ ฅ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์. ์ ํํ ํ์ผ ๊ฒฝ๋ก์ ๋ฌธ์ ๋ฅผ ํน์ ํ ๋ ์ ์ฉ. |
| ORA-00210 |
cannot open the specified control file โ ์ง์ ๋ ์ปจํธ๋กค ํ์ผ์ ์ด ์ ์๋ ๊ฒฝ์ฐ ๋ฐ์. ํ์ผ์ด ์กด์ฌํ์ง ์๊ฑฐ๋ ์์๋ ๊ฒฝ์ฐ ๋ํ๋จ. |
| ORA-00227 |
corrupt block detected in control file โ ์ปจํธ๋กค ํ์ผ ๋ด๋ถ์ ๋ธ๋ก์ด ์์๋ ๊ฒฝ์ฐ ๋ฐ์. ํ๋์จ์ด ์ค๋ฅ๋ ๋น์ ์ ์ข
๋ฃ ์ดํ ๋ํ๋ ์ ์์ผ๋ฉฐ, ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ์ด ํ์. |
| ORA-01503 |
CREATE CONTROLFILE failed โ CREATE CONTROLFILE ๋ช
๋ น ์์ฒด๊ฐ ์คํจํ์ ๋ ๋ฐ์ํ๋ ์์ ์๋ฌ๋ก, ORA-00200๊ณผ ํจ๊ป ๋ฐ์ํ์ฌ ๊ทผ๋ณธ ์์ธ ํ์
์ ํ์ฉ. |
๐ก DBA ์ค๋ฌด ํ: ORA-00200 ๋ฐ์ ์ ๊ฐ์ฅ ๋จผ์
$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/alert_<SID>.logํ์ผ์ ํ์ธํ์ธ์. Alert log์๋ ์คํจํ ๊ฒฝ๋ก์ OS ๋ ๋ฒจ์ ์๋ฌ ๋ฉ์์ง๊ฐ ํจ๊ป ๊ธฐ๋ก๋์ด ์์ด ์์ธ์ ๋น ๋ฅด๊ฒ ํน์ ํ ์ ์์ต๋๋ค. ์ปจํธ๋กค ํ์ผ ๊ด๋ จ ์์ ์ ์๋ ๋ฐ











