ORA-00207: ์ค๋ฌด DBA๋ฅผ ์ํ ์๋ฒฝ ๊ฐ์ด๋
ORA-00207๋?
ORA-00207์ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์(Startup) ๊ณผ์ ์์ ์ปจํธ๋กค ํ์ผ๋ค์ ์ฝ์ ๋, ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ ์ปจํธ๋กค ํ์ผ์ด ํผ์ฌ๋์ด ์๋ค๊ณ ํ๋จํ ๋ ๋ฐ์ํ๋ ์๋ฌ์
๋๋ค. Oracle์ ๋ค์คํ(Multiplexing)๋ฅผ ์ํด ์ฌ๋ฌ ๊ฐ์ ์ปจํธ๋กค ํ์ผ ์ฌ๋ณธ์ ์ ์งํ๋๋ฐ, ์ด ํ์ผ๋ค์ ๋ฐ๋์ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์ผํ ์์ ์ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค. ์ฆ, init.ora ๋๋ spfile์ ๋์ด๋ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ์ค ํ๋ ์ด์์ด ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌด๊ดํ ํ์ผ์ด๊ฑฐ๋, ๋ค๋ฅธ DB์์ ๋ณต์ฌํด์จ ํ์ผ๋ก ๊ต์ฒด๋ ๊ฒฝ์ฐ์ ์ด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ฃผ์ ๋ฐ์ ์์ธ
1. ์๋ชป๋ ์ปจํธ๋กค ํ์ผ ๋ณต์ฌ ๋๋ ๊ต์ฒด (๊ฐ์ฅ ํํ ์์ธ)
์ด์ ํ๊ฒฝ์์ ๋์คํฌ ์ฅ์ ๋ฐ์ ํ ๋ณต๊ตฌ ์์ ์ ํ๊ฑฐ๋, ํ ํ๊ฒฝ(๊ฐ๋ฐ/์คํ ์ด์ง/๋ค๋ฅธ ์ด์ DB)์ ์ปจํธ๋กค ํ์ผ์ ์ค์๋ก ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ๋ก์ ๋ฎ์ด์ด ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ํํ ์์ธ์ ๋๋ค. Oracle์ ์ปจํธ๋กค ํ์ผ ๋ด๋ถ์ DB ์ด๋ฆ(DB_NAME), DBID, ์์ฑ ํ์์คํฌํ ๋ฑ์ ์๋ณ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฉฐ, ์ด ๊ฐ๋ค์ด ์ผ์นํ์ง ์์ผ๋ฉด ์ฆ์ ORA-00207์ ๋ฐ์์ํต๋๋ค.
2. ๋ค์คํ๋ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ์ค์ ์ค๋ฅ
CONTROL_FILES ํ๋ผ๋ฏธํฐ์ ๋ฑ๋ก๋ ๊ฒฝ๋ก ์ค ํ๋๊ฐ ์ ํ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปจํธ๋กค ํ์ผ์ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฒฝ์ฐ์
๋๋ค. ํนํ ๋์ผ ์๋ฒ์์ ์ฌ๋ฌ Oracle ์ธ์คํด์ค๋ฅผ ์ด์ํ๋ ํ๊ฒฝ์์, ์ DB๋ฅผ ์์ฑํ๊ฑฐ๋ ํ๋ผ๋ฏธํฐ ํ์ผ์ ํธ์งํ ๋ ๊ฒฝ๋ก๋ฅผ ์๋ชป ์ง์ ํ๋ฉด ์ด ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
3. ๋ฐฑ์ ๋ณต๊ตฌ ๊ณผ์ ์์์ ์ปจํธ๋กค ํ์ผ ๋ถ์ผ์น
RMAN์ ์ฌ์ฉํ ๋ณต๊ตฌ ์์ ๋๋ ์ฝ๋ ๋ฐฑ์ ๋ณต๊ตฌ ์, ํน์ ์์ ์ ์ปจํธ๋กค ํ์ผ๋ง ๋ณต์ํ๊ณ ๋ค๋ฅธ ์ปจํธ๋กค ํ์ผ ์ฌ๋ณธ์ ์ด์ ์ํ ๊ทธ๋๋ก ๋จ์์๊ฑฐ๋, ์์ ๋ค๋ฅธ ๋ฐฑ์ ์ธํธ์์ ๊ฐ์ ธ์จ ํ์ผ๋ก ํผ์ฌ๋ ๊ฒฝ์ฐ ๋ฐ์ํฉ๋๋ค. ์ปจํธ๋กค ํ์ผ์ SCN(System Change Number) ๋ฐ ์ฒดํฌํฌ์ธํธ ์ ๋ณด๋ฅผ ํฌํจํ๋ฏ๋ก, ๋ฒ์ ์ด ๋ค๋ฅธ ์ปจํธ๋กค ํ์ผ์ด ํผ์ฌ๋๋ฉด Oracle์ด ์ด๋ฅผ ๋ค๋ฅธ DB๋ก ์ธ์ํ๊ฒ ๋ฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์ฌ์ ์ง๋จ: ํ์ฌ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ํ์ธ
๋จผ์ ์ด๋ค ์ปจํธ๋กค ํ์ผ์ด ์ค์ ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
-- SPFILE ๋๋ PFILE์์ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ํ์ธ (DB๊ฐ OPEN ์ํ์ผ ๊ฒฝ์ฐ)
SHOW PARAMETER CONTROL_FILES;
-- ๋๋
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME = 'control_files';
DB๊ฐ ๊ธฐ๋๋์ง ์์ SQL*Plus์ ์ ์์ด ์ ๋๋ ๊ฒฝ์ฐ, OS ๋ ๋ฒจ์์ SPFILE ๋๋ PFILE์ ์ง์ ํ์ธํฉ๋๋ค.
# SPFILE ๋ด์ฉ์ ํ
์คํธ๋ก ํ์ธ (strings ๋ช
๋ น ํ์ฉ)
strings $ORACLE_HOME/dbs/spfile${ORACLE_SID}.ora | grep control_files
# ๋๋ PFILE ์ง์ ํ์ธ
cat $ORACLE_HOME/dbs/init${ORACLE_SID}.ora | grep control_files
ํด๊ฒฐ ๋ฐฉ๋ฒ 1: ์ ์ ์ปจํธ๋กค ํ์ผ๋ก ์์๋ ์ฌ๋ณธ ๊ต์ฒด
์ ์์ ์ธ ์ปจํธ๋กค ํ์ผ ์ฌ๋ณธ์ด ํ๋๋ผ๋ ์กด์ฌํ๋ค๋ฉด, ์ด๋ฅผ ๋๋จธ์ง ๊ฒฝ๋ก์ ๋ณต์ฌํ์ฌ ๋๊ธฐํํฉ๋๋ค.
# ์์: 3๊ฐ์ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ์ค ๋ ๋ฒ์งธ๊ฐ ์ค์ผ๋ ๊ฒฝ์ฐ
# ์ ์ ํ์ผ: /u01/oradata/ORCL/control01.ctl
# ์ค์ผ ํ์ผ: /u02/oradata/ORCL/control02.ctl
# ์ ์ ํ์ผ: /u03/oradata/ORCL/control03.ctl
# 1. ์ธ์คํด์ค ์์ ์ข
๋ฃ
sqlplus / as sysdba
SHUTDOWN ABORT;
EXIT;
# 2. ์ ์ ์ปจํธ๋กค ํ์ผ์ ์ค์ผ๋ ๊ฒฝ๋ก์ ๋ณต์ฌ
cp /u01/oradata/ORCL/control01.ctl /u02/oradata/ORCL/control02.ctl
# 3. ํ์ผ ๊ถํ ํ์ธ (oracle ์์ ์ฌ์ผ ํจ)
ls -al /u02/oradata/ORCL/control02.ctl
chown oracle:oinstall /u02/oradata/ORCL/control02.ctl
-- 4. DB ์ฌ๊ธฐ๋
STARTUP;
-- 5. ๋ชจ๋ ์ปจํธ๋กค ํ์ผ ์ ์ ํ์ธ
SELECT NAME, STATUS FROM V$CONTROLFILE;
ํด๊ฒฐ ๋ฐฉ๋ฒ 2: CONTROL_FILES ํ๋ผ๋ฏธํฐ ๊ฒฝ๋ก ์์
CONTROL_FILES์ ์๋ชป๋ ๊ฒฝ๋ก๊ฐ ๋ฑ๋ก๋ ๊ฒฝ์ฐ, ํ๋ผ๋ฏธํฐ๋ฅผ ์์ ํ์ฌ ์ฌ๋ฐ๋ฅธ ํ์ผ๋ง ์ฐธ์กฐํ๋๋ก ํฉ๋๋ค.
-- SPFILE์์ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ์์ (NOMOUNT ์ํ์์๋ ๊ฐ๋ฅ)
STARTUP NOMOUNT;
-- ์ ์์ ์ธ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก๋ง ๋ช
์
ALTER SYSTEM SET CONTROL_FILES =
'/u01/oradata/ORCL/control01.ctl',
'/u03/oradata/ORCL/control03.ctl'
SCOPE=SPFILE;
-- SPFILE ๋ณ๊ฒฝ ํ ์ฌ๊ธฐ๋
SHUTDOWN IMMEDIATE;
STARTUP;
-- PFILE์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, PFILE ์ง์ ํธ์ง ํ ์๋์ ๊ฐ์ด ๊ธฐ๋
-- PFILE ๋ด control_files ํญ๋ชฉ ์์ ์์:
-- control_files = ('/u01/oradata/ORCL/control01.ctl', '/u03/oradata/ORCL/control03.ctl')
STARTUP PFILE='/u01/app/oracle/admin/ORCL/pfile/init.ora';
ํด๊ฒฐ ๋ฐฉ๋ฒ 3: RMAN์ ์ด์ฉํ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
๋ฐฑ์
์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ RMAN์ผ๋ก ์ปจํธ๋กค ํ์ผ์ ๋ณต๊ตฌํฉ๋๋ค.
# RMAN ์ ์ ํ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
rman target /
-- NOMOUNT ์ํ์์ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
STARTUP NOMOUNT;
-- ์๋ ๋ฐฑ์
์์ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
RESTORE CONTROLFILE FROM AUTOBACKUP;
-- ๋๋ ํน์ ๋ฐฑ์
ํผ์ค์์ ๋ณต๊ตฌ
RESTORE CONTROLFILE FROM '/backup/ORCL/ctl_backup_20240101.bkp';
-- ๋ณต๊ตฌ ํ MOUNT ์ํ๋ก ์ ํ
ALTER DATABASE MOUNT;
-- ๋ฏธ๋์ด ๋ณต๊ตฌ ์ํ
RECOVER DATABASE;
-- RESETLOGS๋ก DB OPEN
ALTER DATABASE OPEN RESETLOGS;
-- ๋ณต๊ตฌ ์๋ฃ ํ ์ปจํธ๋กค ํ์ผ ์ํ ๋ฐ DB ์๋ณ ์ ๋ณด ๊ฒ์ฆ
SELECT DBID, NAME, DB_UNIQUE_NAME, CREATED FROM V$DATABASE;
SELECT NAME, STATUS FROM V$CONTROLFILE;
SELECT CHECKPOINT_CHANGE#, CHECKPOINT_TIME FROM V$CONTROLFILE;
ํด๊ฒฐ ๋ฐฉ๋ฒ 4: ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ (์ตํ์ ์๋จ)
๋ชจ๋ ์ปจํธ๋กค ํ์ผ์ด ์์๋์๊ฑฐ๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ, CREATE CONTROLFILE ๋ช
๋ น์ผ๋ก ์ฌ์์ฑํฉ๋๋ค.
-- NOMOUNT ์ํ์์ ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ
STARTUP NOMOUNT;
-- ๋ฐ์ดํฐํ์ผ ๋ฐ ๋ฆฌ๋ ๋ก๊ทธ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์์ฑ
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/oradata/ORCL/redo01.log' SIZE 200M,
GROUP 2 '/u01/oradata/ORCL/redo02.log' SIZE 200M,
GROUP 3 '/u01/oradata/ORCL/redo03.log' SIZE 200M
DATAFILE
'/u01/oradata/ORCL/system01.dbf',
'/u01/oradata/ORCL/sysaux01.dbf',
'/u01/oradata/ORCL/undotbs01.dbf',
'/u01/oradata/ORCL/users01.dbf'
CHARACTER SET AL32UTF8;
-- ์ฌ์์ฑ ํ ๋ณต๊ตฌ ๋ฐ OPEN
RECOVER DATABASE;
ALTER DATABASE OPEN;
-- ์์ ํ
์ด๋ธ์คํ์ด์ค ์ฌ๋ฑ๋ก (์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ ์ ์ด๊ธฐํ๋จ)
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/oradata/ORCL/temp01.dbf' SIZE 500M;
์๋ฐฉ ๋ฐฉ๋ฒ
1. ์ปจํธ๋กค ํ์ผ ๋ค์คํ ๋ฐ ์ ๊ธฐ์ ๋ฐฑ์ ์๋ํ
์ปจํธ๋กค ํ์ผ์ ๋ฐ๋์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์๋ก ๋ค๋ฅธ ๋์คํฌ ๋๋ ์คํ ๋ฆฌ์ง์ 3๊ฐ ์ด์ ๋ค์คํํ์ฌ ์ด์ํด์ผ ํฉ๋๋ค. ๋ํ RMAN์ CONFIGURE CONTROLFILE AUTOBACKUP ON ์ค์ ์ ํ์ฑํํ์ฌ DB ๊ตฌ์กฐ ๋ณ๊ฒฝ(ํ
์ด๋ธ์คํ์ด์ค ์ถ๊ฐ, ๋ฐ์ดํฐํ์ผ ์ถ๊ฐ ๋ฑ) ์ ์ปจํธ๋กค ํ์ผ ๋ฐฑ์
์ด ์๋์ผ๋ก ์ํ๋๋๋ก ๊ตฌ์ฑํฉ๋๋ค. ๋ณต๊ตฌ ์์
์์๋ ๋ฐ๋์ ํด๋น DB์ ์ปจํธ๋กค ํ์ผ๋ง ์ฌ์ฉํ๋๋ก ์์
์ DBID์ DB_NAME์ ๋ฌธ์ํํด๋์ด์ผ ํฉ๋๋ค.
-- RMAN ์ปจํธ๋กค ํ์ผ ์๋ ๋ฐฑ์
์ค์
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/%F';
-- ํ์ฌ DB ์๋ณ ์ ๋ณด ๋ฌธ์ํ (๋ณต๊ตฌ ๊ธฐ์ค๊ฐ)
SELECT DBID, NAME, DB_UNIQUE_NAME, CREATED, RESETLOGS_TIME
FROM V$DATABASE;
2. ์ปจํธ๋กค ํ์ผ ์ด์ ํ์ค ์๋ฆฝ ๋ฐ ๋ณ๊ฒฝ ๊ด๋ฆฌ ์ฒ ์ ํ
๋ค์์ Oracle ์ธ์คํด์ค๋ฅผ ์ด์ํ๋ ํ๊ฒฝ์์๋ ๊ฐ DB๋ณ๋ก ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ๋ช
๋ช
๊ท์น(์: /oradata/{ORACLE_SID}/control0N.ctl)์ ํ์คํํ๊ณ , ํ๋ผ๋ฏธํฐ ํ์ผ ๋ณ๊ฒฝ ์ ๋ฐ๋์ ๋ณ๊ฒฝ ์ ํ ์ค๋
์ท์ ๊ธฐ๋กํ๋ ๋ณ๊ฒฝ ๊ด๋ฆฌ ์ ์ฐจ๋ฅผ ์๋ฆฝํด์ผ ํฉ๋๋ค. ๋ณต๊ตฌ ์์
์ ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ํตํด ๋์ DB์ DBID, CONTROL_FILES ๊ฒฝ๋ก, DB_NAME ์ผ์น ์ฌ๋ถ๋ฅผ ๋ฐ๋์ ํ์ธํ๋ ์ต๊ด์ ์ ์ฐฉ์์ผ์ผ ํฉ๋๋ค.
-- ์ ๊ธฐ ์ ๊ฒ ์คํฌ๋ฆฝํธ ์์ (cron ๋ฑ๋ก ๊ถ์ฅ)
-- ์ปจํธ๋กค ํ์ผ ์ํ ๋ฐ ํฌ๊ธฐ ์ผ๊ด์ฑ ํ์ธ
SELECT
NAME,
STATUS,
BLOCK_SIZE,
FILE_SIZE_BLKS,
(BLOCK_SIZE * FILE_SIZE_BLKS) / 1024 / 1024 AS SIZE_MB
FROM V$CONTROLFILE
ORDER BY NAME;
๊ด๋ จ ์๋ฌ
| ์๋ฌ ์ฝ๋ | ์ค๋ช |
|---|---|
| ORA-00202 |
control file: '%s' โ ์ปจํธ๋กค ํ์ผ ์ฒ๋ฆฌ ์ค ๋ฐ์ํ๋ ์ผ๋ฐ์ ์ธ I/O ์ค๋ฅ์ ํจ๊ป ์ถ๋ ฅ๋๋ฉฐ, ORA-00207์ ์ ํ ์๋ฌ๋ก ์์ฃผ ๋ํ๋ฉ๋๋ค. |
| ORA-00204 | ์ปจํธ๋กค ํ์ผ ์ฝ๊ธฐ ์ค๋ฅ (Read error), ๋ฌผ๋ฆฌ์ ์์ ๋๋ ์ ๊ทผ ๊ถํ ๋ฌธ์ ์ ๋ฐ์ํฉ๋๋ค. |
| ORA-00205 | ์ปจํธ๋กค ํ์ผ ์๋ณ ์ค๋ฅ๋ก, CONTROL_FILES ํ๋ผ๋ฏธํฐ์ ์ง์ ๋ ํ์ผ์ ์ฐพ์ง ๋ชปํ ๋ ๋ฐ์ํฉ๋๋ค. ORA-00207๊ณผ ํจ๊ป ์ถ |












