ORA-00210๋?
ORA-00210์ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ธฐ๋(Startup) ๊ณผ์ ์์ ์ง์ ๋ ์ปจํธ๋กค ํ์ผ(Control File)์ ์ด์ง ๋ชปํ ๋ ๋ฐ์ํ๋ ์๋ฌ์ ๋๋ค. ์ปจํธ๋กค ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ ์ ๋ณด(๋ฐ์ดํฐํ์ผ ๋ชฉ๋ก, ๋ฆฌ๋ ๋ก๊ทธ ํ์ผ ์์น, SCN ์ ๋ณด ๋ฑ)๋ฅผ ๋ด๊ณ ์๋ ๋งค์ฐ ์ค์ํ ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ก, ์ด ํ์ผ์ ์ ๊ทผํ์ง ๋ชปํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Mount ๋จ๊ณ์กฐ์ฐจ ์งํํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ผ ์์คํ ์์, ์๋ชป๋ ํ๋ผ๋ฏธํฐ ์ค์ , ํ์ผ ๊ถํ ๋ฌธ์ , ๋๋ ์ปจํธ๋กค ํ์ผ ์์ฒด์ ๋ฌผ๋ฆฌ์ ์์์ด ์์ธ์ด ๋๋ฉฐ, ์ฆ๊ฐ์ ์ธ ์กฐ์น๋ฅผ ์ทจํ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค ์ค๋จ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์ฃผ์ ๋ฐ์ ์์ธ
1. ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ๋ถ์ผ์น (spfile/pfile ์ค์ ์ค๋ฅ)
๊ฐ์ฅ ํํ ์์ธ์ผ๋ก, CONTROL_FILES ํ๋ผ๋ฏธํฐ์ ์ง์ ๋ ๊ฒฝ๋ก์ ์ค์ ํ์ผ์ด ์กด์ฌํ๋ ๊ฒฝ๋ก๊ฐ ๋ค๋ฅผ ๋ ๋ฐ์ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฅธ ์๋ฒ๋ก ์ด์ (Migration)ํ๊ฑฐ๋, ๋์คํฌ ์ฌ๋ฐฐ์น, ASM ๋์คํฌ ๊ทธ๋ฃน๋ช
๋ณ๊ฒฝ ํ ํ๋ผ๋ฏธํฐ๋ฅผ ์
๋ฐ์ดํธํ์ง ์์ ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๊ฐ ์์ฃผ ๋ฐ์ํฉ๋๋ค. ํนํ SPFILE์ ์ฌ์ฉํ๋ ํ๊ฒฝ์์๋ ํ๋ผ๋ฏธํฐ ๋ณ๊ฒฝ ํ ์ฌ๊ธฐ๋ํ์ง ์์ผ๋ฉด ์ด์ ๊ฒฝ๋ก๊ฐ ๊ทธ๋๋ก ๋จ์ ์๋ฌ๋ฅผ ์ ๋ฐํฉ๋๋ค.
2. ์ปจํธ๋กค ํ์ผ์ ๋ฌผ๋ฆฌ์ ์์ ๋๋ ์ญ์
๋์คํฌ ์ฅ์ , ์คํ ๋ฆฌ์ง ์ค๋ฅ, ๋๋ ์ค์๋ก ์ธํ ํ์ผ ์ญ์ ๋ก ์ธํด ์ปจํธ๋กค ํ์ผ ์์ฒด๊ฐ ์์๋๊ฑฐ๋ ์กด์ฌํ์ง ์์ ์ ์์ต๋๋ค. Oracle์ ์ด์์ ์์ ์ฑ์ ์ํด ์ปจํธ๋กค ํ์ผ์ ๋ค์คํ(Multiplexing)ํ๋๋ก ๊ถ์ฅํ๋๋ฐ, ๋ชจ๋ ๋ค์คํ ๊ฒฝ๋ก์ ํ์ผ์ด ๋์์ ์์ค๋๋ฉด ๋ณต๊ตฌ๊ฐ ๋งค์ฐ ์ด๋ ค์์ง๋๋ค. ์ด ๊ฒฝ์ฐ ์๋ฌ ๋ฉ์์ง์ ํจ๊ป ORA-00202 (control file: 'xxx') ์๋ฌ๊ฐ ๋๋ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
3. OS ํ์ผ ๊ถํ ๋ฐ ์์ ๊ถ ๋ฌธ์
์ปจํธ๋กค ํ์ผ์ด ์กด์ฌํ๋๋ผ๋ Oracle ํ๋ก์ธ์ค(์ผ๋ฐ์ ์ผ๋ก oracle ์ ์ )๊ฐ ํด๋น ํ์ผ์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฉด ๋์ผํ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ์์คํ
ํจ์น, OS ์
๊ทธ๋ ์ด๋, ๋๋ ๋ณด์ ์ ์ฑ
๋ณ๊ฒฝ ์ดํ ํ์ผ ์์ ๊ถ์ด ๋ณ๊ฒฝ๋๋ ์ฌ๋ก๊ฐ ์ค๋ฌด์์ ์ข
์ข
๋ณด๊ณ ๋ฉ๋๋ค. NFS ๋ง์ดํธ ํ๊ฒฝ์ด๋ ๊ณต์ ์คํ ๋ฆฌ์ง ํ๊ฒฝ์์๋ ํนํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์์ธ 1 ํด๊ฒฐ: ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ํ์ธ ๋ฐ ์์
๋จผ์ ํ์ฌ ํ๋ผ๋ฏธํฐ์ ์ค์ ๋ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก๋ฅผ ํ์ธํฉ๋๋ค.
-- NOMOUNT ์ํ์์ ํ๋ผ๋ฏธํฐ ํ์ธ
STARTUP NOMOUNT;
-- ํ์ฌ CONTROL_FILES ํ๋ผ๋ฏธํฐ ์กฐํ
SHOW PARAMETER CONTROL_FILES;
-- ๋๋ v$parameter ๋ทฐ์์ ํ์ธ
SELECT name, value
FROM v$parameter
WHERE name = 'control_files';
์ค์ ํ์ผ ๊ฒฝ๋ก์ ํ๋ผ๋ฏธํฐ ๊ฐ์ด ๋ค๋ฅด๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ ํฉ๋๋ค.
-- SPFILE์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ๋ผ๋ฏธํฐ ์์ ํ ์ฌ๊ธฐ๋
-- (NOMOUNT ์ํ์์๋ SCOPE=SPFILE๋ง ๊ฐ๋ฅ)
ALTER SYSTEM SET CONTROL_FILES =
'/oradata/ORCL/control01.ctl',
'/oradata/ORCL/control02.ctl'
SCOPE=SPFILE;
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ๊ธฐ๋
SHUTDOWN ABORT;
STARTUP;
PFILE์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ํ
์คํธ ์๋ํฐ๋ก init.ora ํ์ผ์ ์ง์ ์์ ํฉ๋๋ค.
-- pfile ์์น ํ์ธ (OS ์์์)
-- $ORACLE_HOME/dbs/initORCL.ora
-- pfile ๋ด์ฉ ์์ ์์
-- control_files=('/oradata/ORCL/control01.ctl','/oradata/ORCL/control02.ctl')
-- pfile๋ก ๊ธฐ๋
STARTUP PFILE='/u01/app/oracle/product/19c/dbs/initORCL.ora';
์์ธ 2 ํด๊ฒฐ: ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
Case A - ๋ค์คํ๋ ์ปจํธ๋กค ํ์ผ ์ค ์ผ๋ถ๊ฐ ์์๋ ๊ฒฝ์ฐ (๊ฐ์ฅ ์ฌ์ด ๋ณต๊ตฌ)
-- 1. ํ์ฌ ์ ํจํ ์ปจํธ๋กค ํ์ผ ํ์ธ
SELECT status, name FROM v$controlfile;
-- 2. ์ ์์ ์ธ ์ปจํธ๋กค ํ์ผ์ OS์์ ๋ณต์ฌ (DB ์ข
๋ฃ ํ ์งํ)
SHUTDOWN ABORT;
-- OS ๋ช
๋ น์ด๋ก ๋ณต์ฌ (์์์ ์คํ)
-- cp /oradata/ORCL/control01.ctl /oradata/ORCL/control02.ctl
-- 3. DB ์ฌ๊ธฐ๋
STARTUP;
Case B - ๋ชจ๋ ์ปจํธ๋กค ํ์ผ์ด ์์ค๋ ๊ฒฝ์ฐ (๋ฐฑ์
์์ ๋ณต๊ตฌ)
-- RMAN์ ์ด์ฉํ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
RMAN TARGET /
-- ์๋ ๋ฐฑ์
์์ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
RESTORE CONTROLFILE FROM AUTOBACKUP;
-- ๋๋ ํน์ ๋ฐฑ์
์ธํธ์์ ๋ณต๊ตฌ
RESTORE CONTROLFILE FROM '/backup/ctl_c-12345-20241015-00';
-- ๋ณต๊ตฌ ํ DB Mount
ALTER DATABASE MOUNT;
-- ๋ฐ์ดํฐํ์ผ ๋ณต๊ตฌ ๋ฐ OPEN
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
Case C - ๋ฐฑ์
์ด ์๋ ๊ฒฝ์ฐ (์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ - ์ตํ์ ์๋จ)
-- ํธ๋ ์ด์ค ํ์ผ์์ ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ ์คํฌ๋ฆฝํธ ์ถ์ถ
-- (์ฌ์ ์ ์๋ ๋ช
๋ น์ผ๋ก ์์ฑํด ๋์๋ค๋ฉด ํ์ฉ ๊ฐ๋ฅ)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS '/tmp/controlfile_backup.sql';
-- ์ฌ์์ฑ ์คํฌ๋ฆฝํธ ์์ ๊ตฌ์กฐ
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/ORCL/redo01.log' SIZE 200M BLOCKSIZE 512,
GROUP 2 '/oradata/ORCL/redo02.log' SIZE 200M BLOCKSIZE 512,
GROUP 3 '/oradata/ORCL/redo03.log' SIZE 200M BLOCKSIZE 512
DATAFILE
'/oradata/ORCL/system01.dbf',
'/oradata/ORCL/sysaux01.dbf',
'/oradata/ORCL/undotbs01.dbf',
'/oradata/ORCL/users01.dbf'
CHARACTER SET AL32UTF8;
-- ์ฌ์์ฑ ํ ๋ณต๊ตฌ ์งํ
RECOVER DATABASE USING BACKUP CONTROLFILE;
ALTER DATABASE OPEN RESETLOGS;
์์ธ 3 ํด๊ฒฐ: OS ํ์ผ ๊ถํ ์์
-- OS ์์์ ๊ถํ ๋ฐ ์์ ๊ถ ํ์ธ ํ ์์
-- ls -la /oradata/ORCL/*.ctl
-- ์์ ๊ถ ๋ณ๊ฒฝ (root ๊ถํ ํ์)
-- chown oracle:oinstall /oradata/ORCL/control01.ctl
-- chown oracle:oinstall /oradata/ORCL/control02.ctl
-- ๊ถํ ๋ถ์ฌ
-- chmod 640 /oradata/ORCL/control01.ctl
-- chmod 640 /oradata/ORCL/control02.ctl
-- ๊ถํ ์์ ํ DB ๊ธฐ๋ ์๋
STARTUP;
-- ๋๋ ํ ๋ฆฌ ๊ถํ๋ ํ์ธ ํ์
-- ls -ld /oradata/ORCL/
-- chmod 750 /oradata/ORCL/
์๋ฐฉ ๋ฐฉ๋ฒ
1. ์ปจํธ๋กค ํ์ผ ๋ค์คํ ๋ฐ ์ ๊ธฐ ๋ฐฑ์ ์๋ํ
์ปจํธ๋กค ํ์ผ์ ๋ฐ๋์ ์๋ก ๋ค๋ฅธ ๋ฌผ๋ฆฌ์ ๋์คํฌ(๋๋ ASM ๋์คํฌ ๊ทธ๋ฃน)์ ์ต์ 3๊ฐ ์ด์ ๋ค์คํํ์ฌ ์ด์ํด์ผ ํฉ๋๋ค. ๋ํ RMAN์ CONFIGURE CONTROLFILE AUTOBACKUP ON ์ค์ ์ ํ์ฑํํ๋ฉด ๋ฐฑ์
๋๋ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์๋ง๋ค ์ปจํธ๋กค ํ์ผ์ด ์๋์ผ๋ก ๋ฐฑ์
๋์ด, ์ฅ์ ๋ฐ์ ์ ์ ์ํ ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ์๋ ๋ฐฑ์
ํ์ฑํ (RMAN)
RMAN TARGET /
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT
FOR DEVICE TYPE DISK TO '/backup/rman/ctl_%F';
-- ํ์ฌ ๋ค์คํ ์ํ ํ์ธ
SELECT name, status FROM v$controlfile;
-- ์ปจํธ๋กค ํ์ผ ํธ๋ ์ด์ค ๋ฐฑ์
(์ ๊ธฐ ์คํฌ๋ฆฝํธ์ ํฌํจ ๊ถ์ฅ)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS '/backup/trace/controlfile_trace.sql' REUSE;
2. ์ ๊ธฐ์ ์ธ ํ๋ผ๋ฏธํฐ ๋ฐ ํ์ผ ๊ฒฝ๋ก ์ ํฉ์ฑ ์ ๊ฒ ์๋ํ
์ 1ํ ์ด์ CONTROL_FILES ํ๋ผ๋ฏธํฐ์ ์ง์ ๋ ๊ฒฝ๋ก์ ์ค์ OS ํ์ผ์ ์กด์ฌ ์ฌ๋ถ, ์์ ๊ถ, ๊ถํ์ ์คํฌ๋ฆฝํธ๋ก ์ ๊ฒํ๋ ๋ฃจํด์ ๊ตฌ์ถํด์ผ ํฉ๋๋ค. ํนํ OS ํจ์น, ์คํ ๋ฆฌ์ง ๊ต์ฒด, ์๋ฒ ๋ง์ด๊ทธ๋ ์ด์
์์
์ดํ์๋ ๋ฐ๋์ ์ ๊ฒ ์ ์ฐจ๋ฅผ ์ํํ๊ณ , ๋ณ๊ฒฝ ์ฌํญ์ ๋ฌธ์ํํ๋ ์ต๊ด์ด ์ค์ํฉ๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ์ํ ์ ๊ฒ ์ฟผ๋ฆฌ (์ด์ ๋ชจ๋ํฐ๋ง ์คํฌ๋ฆฝํธ์ ํฌํจ)
SELECT
cf.name AS controlfile_path,
cf.status AS status,
cf.block_size AS block_size,
cf.file_size_blks AS file_size_blocks
FROM v$controlfile cf
ORDER BY cf.name;
-- Alert log์์ ์ปจํธ๋กค ํ์ผ ๊ด๋ จ ์๋ฌ ๋ชจ๋ํฐ๋ง
-- (์ธ๋ถ ์ ์คํฌ๋ฆฝํธ ์ฐ๋ ๊ถ์ฅ)
SELECT originating_timestamp, message_text
FROM v$diag_alert_ext
WHERE message_text LIKE '%control%'
AND originating_timestamp > SYSDATE - 1
ORDER BY originating_timestamp DESC;
๊ด๋ จ ์๋ฌ
-
ORA-00202:
control file: 'filename'โ ORA-00210๊ณผ ํจ๊ป ์ถ๋ ฅ๋๋ฉฐ, ์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ปจํธ๋กค ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๋ช ์ํฉ๋๋ค. ๋ ์๋ฌ๋ ๊ฑฐ์ ํญ์ ์์ผ๋ก ๋ฐ์ํ๋ฏ๋ก ํจ๊ป ํ์ธํด์ผ ํฉ๋๋ค. -
ORA-00205:
error in identifying control file, check alert log for more infoโ ์ปจํธ๋กค ํ์ผ ์๋ณ ์์ฒด๊ฐ ์คํจํ ๊ฒฝ์ฐ๋ก, ORA-00210๊ณผ ์ ์ฌํ ๋งฅ๋ฝ์์ ๋ฐ์ํ๋ฉฐ Alert Log์ ์์ธ ๋ด์ฉ์ ๋ฐ๋์ ํ์ธํด์ผ ํฉ๋๋ค. -
ORA-00227:
corrupt block detected in control file: (block 1, # blocks 1)โ ์ปจํธ๋กค ํ์ผ์ด ์กด์ฌํ์ง๋ง ๋ด๋ถ ๋ธ๋ก์ด ์์๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ฉฐ, ๋ค์คํ ๋ณต์ฌ๋ณธ์ผ๋ก ๊ต์ฒดํ๊ฑฐ๋ RMAN ๋ณต๊ตฌ๊ฐ ํ์ํฉ๋๋ค. -
ORA-00221:
error on write to control fileโ ์ปจํธ๋กค ํ์ผ์ ์ฐ๊ธฐ ์์ ์ด ์คํจํ ๊ฒฝ์ฐ๋ก, ๋์คํฌ ํ(Full) ๋๋ ์คํ ๋ฆฌ์ง I/O ์ค๋ฅ์ ํจ๊ป ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.












