ORA-00215๋?
ORA-00215 ์๋ฌ๋ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์(STARTUP) ๋๋ ๋ง์ดํธ(MOUNT) ๊ณผ์ ์์ ์ ํจํ ์ปจํธ๋กค ํ์ผ(Control File)์ ๋จ ํ๋๋ ์ฐพ์ง ๋ชปํ์ ๋ ๋ฐ์ํ๋ ์น๋ช
์ ์ธ ์๋ฌ์
๋๋ค. ์ปจํธ๋กค ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ ์ ๋ณด(๋ฐ์ดํฐ ํ์ผ ์์น, ๋ฆฌ๋ ๋ก๊ทธ ํ์ผ ์์น, SCN ์ ๋ณด ๋ฑ)๋ฅผ ๋ด๊ณ ์๋ ํต์ฌ ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ก, ์ด ํ์ผ ์์ด๋ Oracle ์ธ์คํด์ค๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง์ดํธํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค. ์ฃผ๋ก ์ด๊ธฐํ ํ๋ผ๋ฏธํฐ ํ์ผ(SPFILE ๋๋ PFILE)์ CONTROL_FILES ํ๋ผ๋ฏธํฐ ์ค์ ์ด ์๋ชป๋์๊ฑฐ๋, ์ค์ ํ์ผ์ด ์กด์ฌํ์ง ์์ ๋ ์ด ์๋ฌ๊ฐ ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
์ฃผ์ ๋ฐ์ ์์ธ
1. CONTROL_FILES ํ๋ผ๋ฏธํฐ ๊ฒฝ๋ก ์ค๊ธฐ์ฌ ๋๋ ํ์ผ ๋๋ฝ
๊ฐ์ฅ ๋น๋ฒํ ์์ธ์ผ๋ก, init.ora ๋๋ SPFILE ๋ด์ CONTROL_FILES ํ๋ผ๋ฏธํฐ์ ์ง์ ๋ ๊ฒฝ๋ก๊ฐ ์ค์ ํ์ผ ์์คํ
์์ ๊ฒฝ๋ก์ ์ผ์นํ์ง ์์ ๋ ๋ฐ์ํฉ๋๋ค. ์คํ ๋ฆฌ์ง ๋ง์ด๊ทธ๋ ์ด์
, ์๋ฒ ์ด์ , ๋๋ ๋จ์ํ ์คํ๋ก ์ธํด ๊ฒฝ๋ก๊ฐ ํ๋ฆฌ๊ฒ ์ค์ ๋ ๊ฒฝ์ฐ๊ฐ ๋ํ์ ์ด๋ฉฐ, Oracle์ ์ง์ ๋ ๊ฒฝ๋ก์์ ํ์ผ์ ์ฐพ์ง ๋ชปํ๋ฉด ์ฆ์ ์ด ์๋ฌ๋ฅผ ๋ฐํํฉ๋๋ค.
2. ์ปจํธ๋กค ํ์ผ ๋ฌผ๋ฆฌ์ ์ญ์ ๋๋ ์์
์ด์ ์ค ์ค์๋ก ์ปจํธ๋กค ํ์ผ์ด OS ๋ ๋ฒจ์์ ์ญ์ ๋๊ฑฐ๋, ๋์คํฌ ์ฅ์ ยทํ์ผ ์์คํ ์ค๋ฅ๋ก ์ธํด ํ์ผ์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์(corrupt)๋ ๊ฒฝ์ฐ์ ๋๋ค. Oracle์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์คํ(Multiplexing)๋ ์ปจํธ๋กค ํ์ผ์ ๊ถ์ฅํ๋๋ฐ, ๋ค์คํ๊ฐ ๋์ด ์์ง ์์ ๋จ์ผ ๊ตฌ์ฑ ํ๊ฒฝ์์ ์ด๋ฐ ์ฌ๊ณ ๊ฐ ๋ฐ์ํ๋ฉด ๋ณต๊ตฌ๊ฐ ๋งค์ฐ ๊น๋ค๋ก์์ง๋๋ค. ํ์ผ์ด 0๋ฐ์ดํธ๋ก ๋น์์ง๊ฑฐ๋ ๋ถ๋ถ์ ์ผ๋ก ๋ฎ์ด์์์ง ๊ฒฝ์ฐ๋ ๋์ผํ ์๋ฌ๋ฅผ ์ ๋ฐํฉ๋๋ค.
3. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์์ฑ(RECREATE) ๋๋ ๋ณต์ (CLONE) ํ ํ๋ผ๋ฏธํฐ ๋ฏธ์์
์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต์ ํ์ฌ ๊ฐ๋ฐ ๋๋ ํ
์คํธ ํ๊ฒฝ์ ๊ตฌ์ฑํ ๋, ์๋ณธ SPFILE์ ๊ทธ๋๋ก ๋ณต์ฌํ๋ฉด CONTROL_FILES ํ๋ผ๋ฏธํฐ๊ฐ ์๋ณธ ๊ฒฝ๋ก๋ฅผ ๊ทธ๋๋ก ๊ฐ๋ฆฌํค๊ฒ ๋ฉ๋๋ค. ์๋ก์ด ํ๊ฒฝ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅด๊ฑฐ๋ ์ปจํธ๋กค ํ์ผ์ด ์์ง ์์ฑ๋์ง ์์ ์ํ์์ ์ธ์คํด์ค๋ฅผ ๊ธฐ๋ํ๋ฉด ORA-00215๊ฐ ๋ฐ์ํฉ๋๋ค. ํนํ RMAN์ ํ์ฉํ Duplicate ์์
ํ ์๋์ผ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐ์ ํ๋ค ์ค์๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์์ธ 1 ํด๊ฒฐ: CONTROL_FILES ํ๋ผ๋ฏธํฐ ๊ฒฝ๋ก ํ์ธ ๋ฐ ์์
๋จผ์ ํ์ฌ ํ๋ผ๋ฏธํฐ ํ์ผ์ด ์ด๋ค ๊ฒฝ๋ก๋ฅผ ์ฐธ์กฐํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค. SPFILE ๊ธฐ๋ฐ์ด๋ผ๋ฉด STARTUP NOMOUNT ์ด์ ๋จ๊ณ์์ PFILE๋ก ๋คํํ๊ฑฐ๋, OS์์ strings ๋ช
๋ น์ผ๋ก ๋ด์ฉ์ ํ์ธํฉ๋๋ค.
-- PFILE์ ํตํด NOMOUNT ์ํ๋ก ๊ธฐ๋ ํ ํ๋ผ๋ฏธํฐ ํ์ธ
STARTUP NOMOUNT PFILE='/u01/app/oracle/admin/ORCL/pfile/init.ora';
-- ํ์ฌ ์ธ์๋ CONTROL_FILES ํ๋ผ๋ฏธํฐ ๊ฐ ํ์ธ
SHOW PARAMETER CONTROL_FILES;
-- ๋๋ V$PARAMETER ๋ทฐ์์ ํ์ธ
SELECT NAME, VALUE
FROM V$PARAMETER
WHERE NAME = 'control_files';
ํ๋ผ๋ฏธํฐ ๊ฒฝ๋ก๊ฐ ์๋ชป๋ ๊ฒฝ์ฐ, PFILE์ ์ง์ ํธ์งํ๊ฑฐ๋ SPFILE์ ์์ ํฉ๋๋ค.
-- PFILE ์ง์ ์์ ํ ์ฌ๊ธฐ๋ (vi ํธ์ง๊ธฐ ๋ฑ์ผ๋ก ์์ )
-- init.ora ์์ ๋ด์ฉ:
-- control_files = ('/u01/app/oracle/oradata/ORCL/control01.ctl',
-- '/u02/app/oracle/oradata/ORCL/control02.ctl')
-- SPFILE ์์ ์ (NOMOUNT ์ํ์์ ๊ฐ๋ฅ)
ALTER SYSTEM SET CONTROL_FILES=
'/u01/app/oracle/oradata/ORCL/control01.ctl',
'/u02/app/oracle/oradata/ORCL/control02.ctl'
SCOPE=SPFILE;
-- ์ดํ ์ฌ๊ธฐ๋
SHUTDOWN ABORT;
STARTUP;
์์ธ 2 ํด๊ฒฐ: ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
๋ค์คํ๋ ์ปจํธ๋กค ํ์ผ ์ค ์ผ๋ถ๋ง ์์๋ ๊ฒฝ์ฐ, ์ ์์ ์ธ ์ปจํธ๋กค ํ์ผ์ ์์๋ ์์น๋ก ๋ณต์ฌํฉ๋๋ค.
# OS ๋ ๋ฒจ์์ ์ ์ ์ปจํธ๋กค ํ์ผ ๋ณต์ฌ (DB๊ฐ ์ ์ง๋ ์ํ)
cp /u01/app/oracle/oradata/ORCL/control01.ctl \
/u02/app/oracle/oradata/ORCL/control02.ctl
-- ๋ณต์ฌ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ๊ธฐ๋
STARTUP;
-- ๊ธฐ๋ ํ ์ปจํธ๋กค ํ์ผ ์ํ ํ์ธ
SELECT NAME, STATUS FROM V$CONTROLFILE;
๋ชจ๋ ์ปจํธ๋กค ํ์ผ์ด ์์ค๋ ๊ฒฝ์ฐ RMAN ๋ฐฑ์
์ ํ์ฉํ์ฌ ๋ณต๊ตฌํฉ๋๋ค.
-- RMAN์ ํตํ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
RMAN TARGET /
-- ์๋ ๋ฐฑ์
๋ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
RESTORE CONTROLFILE FROM AUTOBACKUP;
-- ๋ณต๊ตฌ ํ MOUNT ์ํ๋ก ์ ํ
ALTER DATABASE MOUNT;
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถ์์ ๋ณต๊ตฌ ์ํ (ํ์ ์)
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
-- RESETLOGS๋ก ์คํ
ALTER DATABASE OPEN RESETLOGS;
์ปจํธ๋กค ํ์ผ ๋ฐฑ์
์กฐ์ฐจ ์๋ ์ต์
์ ์๋๋ฆฌ์ค์์๋ CREATE CONTROLFILE ๋ช
๋ น์ผ๋ก ์ฌ์์ฑํด์ผ ํฉ๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ (๋ฐ์ดํฐ ํ์ผ ๋ฐ ๋ฆฌ๋ ๋ก๊ทธ ํ์ผ ๋ชฉ๋ก ์ฌ์ ํ์
ํ์)
-- alert log ๋๋ ๊ธฐ์กด trace ํ์ผ์์ ๋ชฉ๋ก ํ์ธ ํ ์คํ
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;
-- ์ดํ ๋ณต๊ตฌ ๋ฐ ์คํ
RECOVER DATABASE;
ALTER DATABASE OPEN;
โ ๏ธ ์ฃผ์:
CREATE CONTROLFILE์คํ ์ ๋ฐ๋์ ๊ธฐ์กด ๋ฐ์ดํฐ ํ์ผ๊ณผ ๋ฆฌ๋ ๋ก๊ทธ ํ์ผ์ ์ ํํ ๊ฒฝ๋ก์ ๋ชฉ๋ก์ ํ์ ํด์ผ ํฉ๋๋ค. ์๋ชป๋ ์ ๋ณด๋ก ์์ฑ ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์์ธ 3 ํด๊ฒฐ: ๋ณต์ ํ๊ฒฝ ํ๋ผ๋ฏธํฐ ์ ์
-- NOMOUNT ์ํ์์ SPFILE์ PFILE๋ก ๋คํ
CREATE PFILE='/tmp/init_new.ora' FROM SPFILE;
-- OS์์ init_new.ora ํธ์ง ํ CONTROL_FILES ๊ฒฝ๋ก ์์
-- ์์ ๋ PFILE๋ก ๊ธฐ๋
STARTUP NOMOUNT PFILE='/tmp/init_new.ora';
-- ์ ์ ๊ธฐ๋ ํ์ธ ํ SPFILE ์ฌ์์ฑ
CREATE SPFILE FROM PFILE='/tmp/init_new.ora';
-- ์ต์ข
์ฌ๊ธฐ๋
SHUTDOWN IMMEDIATE;
STARTUP;
์๋ฐฉ ๋ฐฉ๋ฒ
1. ์ปจํธ๋กค ํ์ผ ๋ค์คํ(Multiplexing) ๋ฐ ์๋ ๋ฐฑ์ ์ค์
์ปจํธ๋กค ํ์ผ์ ๋ฐ๋์ ์๋ก ๋ค๋ฅธ ๋์คํฌ(๋๋ ASM ๋์คํฌ ๊ทธ๋ฃน)์ ์ต์ 2~3๊ฐ ์ด์ ๋ค์คํํ์ฌ ๋จ์ผ ์ฅ์ ์ง์ (SPOF)์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ๋ํ RMAN์ CONFIGURE CONTROLFILE AUTOBACKUP ON ์ค์ ์ ํตํด ๋ชจ๋ ๋ฐฑ์
์์
๋ฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์ ์ปจํธ๋กค ํ์ผ์ด ์๋์ผ๋ก ๋ฐฑ์
๋๋๋ก ๊ตฌ์ฑํ๋ฉด, ์ฌํด ๋ฐ์ ์ ์ ์ํ ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ๋ค์คํ ํ์ธ
SELECT NAME FROM V$CONTROLFILE;
-- RMAN ์ปจํธ๋กค ํ์ผ ์๋ ๋ฐฑ์
ํ์ฑํ
RMAN TARGET /
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/%F';
-- ํ์ฌ RMAN ์ค์ ํ์ธ
SHOW ALL;
2. ์ ๊ธฐ์ ์ธ ์ปจํธ๋กค ํ์ผ ํธ๋ ์ด์ค(Trace) ๋คํ ์์ฑ ๋ฐ ๋ณด๊ด
ALTER DATABASE BACKUP CONTROLFILE TO TRACE ๋ช
๋ น์ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํ์ฌ CREATE CONTROLFILE ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ํธ๋ ์ด์ค ํ์ผ์ ์์ฑํ๊ณ ์์ ํ ์์น์ ๋ณด๊ดํ๋ ์ต๊ด์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ์ปจํธ๋กค ํ์ผ์ด ์์ค๋๋ ๊ทน๋จ์ ์ธ ์ํฉ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ๋ง์ง๋ง ๋ณด๋ฃจ๊ฐ ๋ฉ๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ๋ด์ฉ์ ํธ๋ ์ด์ค ํ์ผ๋ก ๋คํ
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
-- ํน์ ํ์ผ๋ก ์ง์ ๋คํ (Oracle 10g ์ด์)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/backup/scripts/controlfile_script.sql' REUSE;
-- ์ด์ง ํํ๋ก๋ ๋ณ๋ ๋ฐฑ์
ALTER DATABASE BACKUP CONTROLFILE TO '/backup/controlfile/control_backup.ctl' REUSE;
๊ด๋ จ ์๋ฌ
-
ORA-00202:
control file: '%s'โ ํน์ ์ปจํธ๋กค ํ์ผ์ ์ด๊ฑฐ๋ ์ฝ๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์๋ฌ๋ก, ORA-00215์ ํจ๊ป ์ถ๋ ฅ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํ์ผ ๊ถํ(Permission) ๋ฌธ์ ๋ ํ์ผ ์์ ์ ์ฃผ๋ก ๋ํ๋ฉ๋๋ค. -
ORA-00205:
error in identifying control fileโ ์ปจํธ๋กค ํ์ผ์ ์๋ณํ๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ฉฐ, ํ์ผ์ด ์กด์ฌํ์ง๋ง ๋ด์ฉ์ด ์ ํจํ์ง ์๊ฑฐ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปจํธ๋กค ํ์ผ์ด ์๋ชป ๋ฐฐ์น๋ ๊ฒฝ์ฐ์ ๋ฐ์ํฉ๋๋ค. -
ORA-00206:
error in writing (block %s, # blocks %s) of control fileโ ์ปจํธ๋กค ํ์ผ ์ฐ๊ธฐ ์์ ์คํจ ์ ๋ฐ์ํ๋ฉฐ, ๋์คํฌ ์ฉ๋ ๋ถ์กฑ์ด๋ I/O ์ค๋ฅ์ ์ฐ๊ด๋ฉ๋๋ค. -
ORA-00210:
cannot open the specified control fileโ ์ง์ ๋ ์ปจํธ๋กค ํ์ผ์ ์คํํ ์ ์์ ๋ ๋ฐ์ํ๋ฉฐ, OS ํ์ผ ๊ถํ ๋๋ ๊ฒฝ๋ก ์ค๋ฅ์ ๊ด๋ จ๋ฉ๋๋ค. ORA-00215 ๋ฐ์ ์ ์ ํ ์๋ฌ๋ก alert log์ ํจ๊ป ๊ธฐ๋ก๋๋ ๊ฒฝ์ฐ๊ฐ ํํฉ๋๋ค.












