ORA-00205๋?
ORA-00205๋ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์(STARTUP) ๊ณผ์ ์์ ์ปจํธ๋กค ํ์ผ(Control File)์ ์๋ณํ๊ฑฐ๋ ์ด์ง ๋ชปํ ๋ ๋ฐ์ํ๋ ์น๋ช
์ ์ธ ์๋ฌ์
๋๋ค. ์ปจํธ๋กค ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ ์ ๋ณด(๋ฐ์ดํฐํ์ผ ์์น, ๋ฆฌ๋ ๋ก๊ทธ ํ์ผ ์์น, SCN ์ ๋ณด ๋ฑ)๋ฅผ ๋ด๊ณ ์๋ ํต์ฌ ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ก, ์ด ํ์ผ ์์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ MOUNT ๋จ๊ณ์กฐ์ฐจ ์งํํ ์ ์์ต๋๋ค. ์ฃผ๋ก DBA๊ฐ STARTUP ๋ช
๋ น์ ์คํํ์ ๋ NOMOUNT ๋จ๊ณ์์ MOUNT ๋จ๊ณ๋ก ๋์ด๊ฐ์ง ๋ชปํ๊ณ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉฐ, ์ ์ํ๊ณ ์ ํํ ๋์์ด ํ์ํ ์ํฉ์
๋๋ค.
์ฃผ์ ๋ฐ์ ์์ธ
1. ์ปจํธ๋กค ํ์ผ์ ๋ฌผ๋ฆฌ์ ์์ค ๋๋ ์ญ์
์ด์์ฒด์ ๋ ๋ฒจ์์ ์ปจํธ๋กค ํ์ผ์ด ์ค์๋ก ์ญ์ ๋์๊ฑฐ๋, ๋์คํฌ ์ฅ์ ๋ก ์ธํด ํ์ผ์ด ์์๋ ๊ฒฝ์ฐ์
๋๋ค. Oracle์ SPFILE ๋๋ PFILE์ CONTROL_FILES ํ๋ผ๋ฏธํฐ์ ๋ช
์๋ ๊ฒฝ๋ก์์ ์ปจํธ๋กค ํ์ผ์ ์ฐพ๋๋ฐ, ํด๋น ๊ฒฝ๋ก์ ํ์ผ์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์ฆ์ ORA-00205๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ๋ ๊ฐ์ฅ ์ฌ๊ฐํ ์์ธ์ผ๋ก, ๋ฐฑ์
๋ณธ ์์ด๋ ๋ณต๊ตฌ๊ฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค.
2. CONTROL_FILES ํ๋ผ๋ฏธํฐ ๊ฒฝ๋ก ๋ถ์ผ์น
SPFILE ๋๋ PFILE์ ์ค์ ๋ CONTROL_FILES ํ๋ผ๋ฏธํฐ์ ๊ฒฝ๋ก๊ฐ ์ค์ ์ปจํธ๋กค ํ์ผ์ด ์กด์ฌํ๋ ๊ฒฝ๋ก์ ๋ค๋ฅธ ๊ฒฝ์ฐ์
๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ด์ (migration), ํ์ผ์์คํ
์ฌ๊ตฌ์ฑ, ๋๋ ์ค์๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ์๋ชป ์์ ํ์ ๋ ์ฃผ๋ก ๋ฐ์ํฉ๋๋ค. ํ์ผ ์์ฒด๋ ๋ฉ์ฉกํ ์กด์ฌํ์ง๋ง Oracle์ด ์๋ฑํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก ๋น๊ต์ ํด๊ฒฐ์ด ๊ฐ๋จํฉ๋๋ค.
3. ํ์ผ ๊ถํ(Permission) ๋๋ ์์ ๊ถ(Ownership) ๋ฌธ์
์ปจํธ๋กค ํ์ผ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์กด์ฌํ์ง๋ง, Oracle ํ๋ก์ธ์ค(oracle OS ์ ์ )๊ฐ ํด๋น ํ์ผ์ ์ฝ์ ์ ์๋ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ์
๋๋ค. OS ํจ์น, ๋ณด์ ์ ์ฑ
์ ์ฉ, ๋๋ ๊ด๋ฆฌ์์ ์ค์๋ก ํ์ผ ๊ถํ์ด ๋ณ๊ฒฝ๋๋ฉด Oracle์ด ํ์ผ์ ์ธ์ํ์ง ๋ชปํ๊ณ ORA-00205๋ฅผ ๋ฐ์์ํต๋๋ค. ls -al ๋ช
๋ น์ผ๋ก ํ์ผ ๊ถํ์ ํ์ธํ๊ณ , oracle:dba ์์ ๊ถ๊ณผ 640 ์ด์์ ๊ถํ ์ฌ๋ถ๋ฅผ ๋ฐ๋์ ์ ๊ฒํด์ผ ํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์์ธ 1: ์ปจํธ๋กค ํ์ผ ๋ฌผ๋ฆฌ์ ์์ค โ ๋ฉํฐํ๋ ์ฑ๋ ๋ณต์ฌ๋ณธ์ผ๋ก ๋ณต๊ตฌ
Oracle์ ์ผ๋ฐ์ ์ผ๋ก ์ปจํธ๋กค ํ์ผ์ ์ฌ๋ฌ ๊ฒฝ๋ก์ ๋ค์คํ(Multiplexing)ํ์ฌ ๋ณด๊ดํฉ๋๋ค. ํ๋์ ์ปจํธ๋กค ํ์ผ์ด ์์๋์๋๋ผ๋ ๋ค๋ฅธ ์ ์ ๋ณต์ฌ๋ณธ์ด ์๋ค๋ฉด ๊ฐ๋จํ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
-- Step 1: ํ์ฌ CONTROL_FILES ํ๋ผ๋ฏธํฐ ํ์ธ (NOMOUNT ์ํ์์ ๊ฐ๋ฅ)
STARTUP NOMOUNT;
SHOW PARAMETER control_files;
-- ๋๋
SELECT value FROM v$parameter WHERE name = 'control_files';
-- Step 2: ์ ์์ ์ธ ์ปจํธ๋กค ํ์ผ์ ์์๋ ๊ฒฝ๋ก๋ก OS ๋ ๋ฒจ์์ ๋ณต์ฌ
-- (SQL*Plus ์ธ๋ถ์์ OS ๋ช
๋ น ์คํ)
-- $ cp /u01/oradata/ORCL/control02.ctl /u01/oradata/ORCL/control01.ctl
-- Step 3: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ๊ธฐ๋
SHUTDOWN ABORT;
STARTUP;
-- Step 4: ์ ์ OPEN ์ฌ๋ถ ํ์ธ
SELECT STATUS FROM V$INSTANCE;
SELECT NAME, STATUS FROM V$CONTROLFILE;
์์ธ 1: RMAN ๋ฐฑ์ ์ผ๋ก ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
๋ฉํฐํ๋ ์ฑ๋ ์ปจํธ๋กค ํ์ผ์ด ๋ชจ๋ ์์ค๋ ๊ฒฝ์ฐ, RMAN ๋ฐฑ์
์ ํ์ฉํฉ๋๋ค.
-- RMAN์ผ๋ก ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
RMAN TARGET /
-- ์ปจํธ๋กค ํ์ผ์ ๊ธฐ๋ณธ ์์น๋ก ๋ณต์
RESTORE CONTROLFILE FROM AUTOBACKUP;
-- ๋๋ ํน์ ๋ฐฑ์
์ธํธ์์ ๋ณต์
RESTORE CONTROLFILE FROM '/backup/rman/ctl_backup_20240101.bkp';
-- ๋ณต์ ํ MOUNT ์ํ๋ก ์ ํ
ALTER DATABASE MOUNT;
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ (๋ฏธ๋์ด ๋ณต๊ตฌ ํ์ ์)
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
-- RESETLOGS ์ต์
์ผ๋ก ์คํ
ALTER DATABASE OPEN RESETLOGS;
์์ธ 2: CONTROL_FILES ํ๋ผ๋ฏธํฐ ๊ฒฝ๋ก ๋ถ์ผ์น ํด๊ฒฐ
์ปจํธ๋กค ํ์ผ์ด ์ค์ ๋ก๋ ์กด์ฌํ์ง๋ง ํ๋ผ๋ฏธํฐ์ ์ง์ ๋ ๊ฒฝ๋ก๊ฐ ํ๋ฆฐ ๊ฒฝ์ฐ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์
๋๋ค.
-- Step 1: NOMOUNT ์ํ๋ก ๊ธฐ๋ (PFILE ์ฌ์ฉ)
STARTUP NOMOUNT PFILE='/tmp/init_temp.ora';
-- Step 2: ์ค์ ์ปจํธ๋กค ํ์ผ ์์น ํ์ธ (OS ๋ ๋ฒจ)
-- $ find / -name "*.ctl" 2>/dev/null
-- $ find /u01 -name "control*" -type f
-- Step 3-A: SPFILE์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ๋ผ๋ฏธํฐ ์์
-- ๋จผ์ ํ์ฌ SPFILE์์ PFILE ์์ฑ
CREATE PFILE='/tmp/initORCL_fix.ora' FROM SPFILE;
-- PFILE์ ํ
์คํธ ํธ์ง๊ธฐ๋ก ์์ ํ SPFILE ์ฌ์์ฑ
-- vi /tmp/initORCL_fix.ora
-- *.control_files='/u01/oradata/ORCL/control01.ctl','/u02/oradata/ORCL/control02.ctl'
CREATE SPFILE FROM PFILE='/tmp/initORCL_fix.ora';
-- Step 3-B: SPFILE์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ง์ ์์ (NOMOUNT์์ ๊ฐ๋ฅ)
ALTER SYSTEM SET control_files=
'/u01/oradata/ORCL/control01.ctl',
'/u02/oradata/ORCL/control02.ctl'
SCOPE=SPFILE;
-- Step 4: ์ฌ๊ธฐ๋ํ์ฌ ํ์ธ
SHUTDOWN ABORT;
STARTUP;
SELECT NAME, STATUS FROM V$CONTROLFILE;
์์ธ 3: ํ์ผ ๊ถํ ๋ฐ ์์ ๊ถ ๋ฌธ์ ํด๊ฒฐ
-- SQL*Plus์์ ํ์ฌ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ํ์ธ
STARTUP NOMOUNT;
SHOW PARAMETER control_files;
-- OS ๋ ๋ฒจ์์ ๊ถํ ํ์ธ ๋ฐ ์์ (root ๋๋ OS ๊ด๋ฆฌ์ ์ํ)
-- $ ls -al /u01/oradata/ORCL/control01.ctl
-- -rw-r----- 1 oracle dba 10485760 Jan 1 00:00 control01.ctl
-- ์์ ๊ถ ๋ณ๊ฒฝ (ํ์ ์)
-- $ chown oracle:dba /u01/oradata/ORCL/control01.ctl
-- ๊ถํ ๋ณ๊ฒฝ
-- $ chmod 640 /u01/oradata/ORCL/control01.ctl
-- ์์ ํ Oracle ์ฌ๊ธฐ๋
SHUTDOWN ABORT;
STARTUP;
-- ์ปจํธ๋กค ํ์ผ ์ํ ์ต์ข
ํ์ธ
SELECT NAME, STATUS, IS_RECOVERY_DEST_FILE
FROM V$CONTROLFILE;
-- ํ์ฌ ์ปจํธ๋กค ํ์ผ ๋ธ๋ก ํฌ๊ธฐ ๋ฐ ์ ๋ณด ํ์ธ
SELECT * FROM V$CONTROLFILE_RECORD_SECTION
WHERE TYPE = 'DATABASE';
์๋ฐฉ ๋ฐฉ๋ฒ
1. ์ปจํธ๋กค ํ์ผ ๋ฉํฐํ๋ ์ฑ ๋ฐ RMAN ์๋ ๋ฐฑ์ ์ค์
์ปจํธ๋กค ํ์ผ์ ๋ฐ๋์ 3๊ฐ ์ด์, ์๋ก ๋ค๋ฅธ ๋์คํฌ ๋๋ ์คํ ๋ฆฌ์ง ๊ฒฝ๋ก์ ๋ค์คํํ์ฌ ์ด์ํด์ผ ํฉ๋๋ค. ๋ํ RMAN์ AUTOBACKUP ๊ธฐ๋ฅ์ ํ์ฑํํ๋ฉด BACKUP DATABASE ๋๋ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์๋ง๋ค ์ปจํธ๋กค ํ์ผ์ด ์๋์ผ๋ก ๋ฐฑ์
๋๋ฏ๋ก, ์ฌํด ๋ฐ์ ์ ๋น ๋ฅธ ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ๋ฉํฐํ๋ ์ฑ ํ์ธ
SELECT NAME FROM V$CONTROLFILE;
-- RMAN ์ปจํธ๋กค ํ์ผ ์๋ ๋ฐฑ์
์ค์
RMAN TARGET /
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT
FOR DEVICE TYPE DISK TO '/backup/rman/cf_%F';
-- ์ค์ ํ์ธ
SHOW ALL;
-- ์ฃผ๊ธฐ์ ์ธ ์ปจํธ๋กค ํ์ผ ํ
์คํธ ํธ๋ ์ด์ค ๋คํ (๋ด์ฉ ๊ธฐ๋ก ์ฉ๋)
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS '/backup/trace/controlfile_backup.sql' REUSE NORESETLOGS;
2. ๋ชจ๋ํฐ๋ง ์คํฌ๋ฆฝํธ์ ์ ๊ธฐ ์ ๊ฒ ํ๋ก์ธ์ค ์๋ฆฝ
์ปจํธ๋กค ํ์ผ์ ์กด์ฌ ์ฌ๋ถ์ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๊ฒํ๋ ์ ์คํฌ๋ฆฝํธ ๋๋ Oracle Enterprise Manager ์๋์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ์๋์ ๊ฐ์ด ์ํ ์ ๊ฒ ์ฟผ๋ฆฌ๋ฅผ Cron Job์ผ๋ก ๋ฑ๋กํ๊ฑฐ๋ ๋ชจ๋ํฐ๋ง ํด์ ์ฐ๋ํ๋ฉด ์ฅ์ ๋ฅผ ์ฌ์ ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ์ํ ์ ๊ธฐ ์ ๊ฒ ์ฟผ๋ฆฌ
SELECT
CF.NAME AS controlfile_path,
CF.STATUS AS status,
ROUND(CF.BLOCK_SIZE * CF.FILE_SIZE_BLKS / 1024 / 1024, 2) AS size_mb,
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS check_time
FROM V$CONTROLFILE CF;
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด ํ์ผ ๊ฑด์ ์ฑ ํ์ธ
SELECT
FILE# ,
STATUS,
FUZZY,
CHECKPOINT_CHANGE#,
TO_CHAR(CHECKPOINT_TIME, 'YYYY-MM-DD HH24:MI:SS') AS checkpoint_time
FROM V$DATAFILE_HEADER
ORDER BY FILE#;
๊ด๋ จ ์๋ฌ
| ์๋ฌ ์ฝ๋ | ์ค๋ช |
|---|---|
| ORA-00202 |
controlfile: '%s' โ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ์์ฒด๋ฅผ ๋ช
์ํ๋ฉฐ ORA-00205์ ํจ๊ป ์ถ๋ ฅ๋๋ ๋ณด์กฐ ์๋ฌ๋ก, ์ค์ ๋ฌธ์ ๊ฐ ๋ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์๋ ค์ค๋๋ค. |
| ORA-00210 | ์ง์ ํ ์ปจํธ๋กค ํ์ผ์ ์ด ์ ์์. ํ์ผ ์ ๊ธ(lock) ๋๋ ์ ๊ทผ ๋ถ๊ฐ ์ํ์์ ๋ฐ์ํฉ๋๋ค. |
| ORA-00211 | ์ปจํธ๋กค ํ์ผ์ด ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ์ง ์์. ๋ค๋ฅธ DB์ ์ปจํธ๋กค ํ์ผ์ ์๋ชป ์ง์ ํ์ ๋ ๋ํ๋ฉ๋๋ค. |
| ORA-00214 | ์ปจํธ๋กค ํ์ผ ๊ฐ ๋ฒ์ ๋ถ์ผ์น. ๋ฉํฐํ๋ ์ฑ๋ ์ปจํธ๋กค ํ์ผ ์ค ํ๋๊ฐ ์ค๋๋ ๋ฒ์ ์ผ ๋ ๋ฐ์ํ๋ฉฐ, ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ ํ์ผ๋ก ๋๋จธ์ง๋ฅผ ๋ฎ์ด์จ์ ํด๊ฒฐํฉ๋๋ค. |
| ORA-01503 |
CREATE CONTROLFILE ์คํจ. ์ปจํธ๋กค ํ์ผ์ ์ฌ์์ฑํ ๋ ๊ตฌ๋ฌธ ์ค๋ฅ๋ ํ์ผ ๊ฒฝ๋ก ๋ฌธ์ ๋ก ๋ฐ์ํฉ๋๋ค. |
| ORA-00600 | ๋ด๋ถ ์ค๋ฅ๋ก ์ปจํธ๋กค ํ์ผ ๋ธ๋ก ์์ ์ ๋๋ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ, Oracle Support ์ผ์ด์ค ๋ฑ๋ก์ด ํ์ํฉ๋๋ค. |
์ค๋ฌด ํ: ORA-00205 ๋ฐ์ ์ Alert Log(
$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/alert_<SID>.log)๋ฅผ ๊ฐ์ฅ ๋จผ์ ํ์ธํ์ธ์. ORA-00202์ ํจ๊ป ์ ํํ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก๊ฐ ๊ธฐ๋ก๋์ด ์์ด ์์ธ ํ์ ์๊ฐ์ ํฌ๊ฒ ๋จ์ถํ ์ ์์ต๋๋ค.












