ORA-00227๋?
ORA-00227์ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ปจํธ๋กค ํ์ผ(Control File)์ ์ฝ๋ ๊ณผ์ ์์ ๋ธ๋ก ์์(Corruption)์ ๊ฐ์งํ์ ๋ ๋ฐ์ํ๋ ์๋ฌ์ ๋๋ค. ์ปจํธ๋กค ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ ์ ๋ณด(๋ฐ์ดํฐํ์ผ ์์น, ๋ฆฌ๋ ๋ก๊ทธ ํ์ผ ์์น, ์ฒดํฌํฌ์ธํธ ์ ๋ณด ๋ฑ)๋ฅผ ๋ด๊ณ ์๋ ํต์ฌ ํ์ผ๋ก, ์ด ํ์ผ์ด ์์๋๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํด์ง ์ ์์ต๋๋ค. ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋(STARTUP) ์์ ๋๋ ์์นด์ด๋ธ ๋ก๊ทธ ์์ ์ค์ ํด๋น ์๋ฌ๊ฐ ํ๋ฉดํ๋๋ฉฐ, ์ฆ๊ฐ์ ์ธ ์กฐ์น ์์ด๋ ์๋น์ค ์ค๋จ์ผ๋ก ์ด์ด์ง ์ ์๋ ์ฌ๊ฐํ ์๋ฌ์ ๋๋ค.
์ฃผ์ ๋ฐ์ ์์ธ
1. ์ปจํธ๋กค ํ์ผ์ด ์์นํ ์คํ ๋ฆฌ์ง/ํ์ผ์์คํ ์ ๋ฌผ๋ฆฌ์ ์ค๋ฅ
๊ฐ์ฅ ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ ์์ธ์ผ๋ก, ๋์คํฌ ๋ฐฐ๋ ์นํฐ, SAN/NAS ์คํ ๋ฆฌ์ง ์ฅ์ , ํ์ผ์์คํ
์์ ๋ฑ ํ๋์จ์ด ๋ ๋ฒจ์ ๋ฌธ์ ๊ฐ ์ปจํธ๋กค ํ์ผ ๋ธ๋ก์ ์ค์ผ์ํต๋๋ค. ์ด์์ฒด์ ๋ ๋ฒจ์์ dmesg ๋๋ ์ด๋ฒคํธ ๋ก๊ทธ๋ฅผ ํ์ธํ๋ฉด I/O ์๋ฌ ๋ฉ์์ง๊ฐ ์ ํํ์ฌ ๊ธฐ๋ก๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก, ์๋ฌ ๋ฐ์ ์ ์ฆ์ OS ๋ก๊ทธ๋ฅผ ํจ๊ป ํ์ธํ๋ ๊ฒ์ด ํ์์
๋๋ค.
2. ๋น์ ์์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข ๋ฃ(๋น์ ์ ์ ง๋ค์ด)
์ด์์ฒด์ ํฌ๋์, ์ ์ ์ฅ์ , kill -9๋ฅผ ํตํ Oracle ํ๋ก์ธ์ค ๊ฐ์ ์ข
๋ฃ ๋ฑ ๋น์ ์์ ์ธ ์ข
๋ฃ ์ํฉ์์ ์ปจํธ๋กค ํ์ผ์ ๊ธฐ๋ก ์ค์ด๋ ๋ธ๋ก์ด ๋ถ์์ ํ ์ํ๋ก ๋จ์ ์์์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ํนํ ์ปจํธ๋กค ํ์ผ์ ์ฒดํฌํฌ์ธํธ๋ง๋ค ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ๋๊ธฐ ๋๋ฌธ์, ์ฐ๊ธฐ ๋์ค ์์คํ
์ด ์ค๋จ๋๋ฉด ํด๋น ๋ธ๋ก์ CRC ์ฒดํฌ์ฌ์ด ๋ง์ง ์์ ORA-00227์ด ๋ฐ์ํฉ๋๋ค.
3. ์ปจํธ๋กค ํ์ผ ๋ค์คํ(Multiplexing) ๋ฏธ๊ตฌ์ฑ
Oracle์ ์ปจํธ๋กค ํ์ผ์ ์ฌ๋ฌ ์์น์ ๋์ผํ๊ฒ ๋ณต์ฌํ์ฌ ๊ด๋ฆฌํ๋ ๋ค์คํ๋ฅผ ์ง์ํ๋๋ฐ, ์ด๋ฅผ ๊ตฌ์ฑํ์ง ์์ ํ๊ฒฝ์์๋ ๋จ์ผ ์ปจํธ๋กค ํ์ผ์ด ์์๋๋ฉด ๋ณต๊ตฌ ์๋จ์ด ์์ด์ง๋๋ค. ๋ค์คํ๊ฐ ๋์ด ์๋๋ผ๋ ๋ชจ๋ ๋ณต์ฌ๋ณธ์ด ๋์ผํ ๋ฌผ๋ฆฌ์ ๋์คํฌ์ ์์นํด ์๋ค๋ฉด ์ค์ง์ ์ธ ์ด์คํ ํจ๊ณผ๊ฐ ์์ผ๋ฏ๋ก, ์๋ก ๋ค๋ฅธ ๋์คํฌ ๊ทธ๋ฃน ๋๋ ๋ง์ดํธ ํฌ์ธํธ์ ๋ถ์ฐ ๋ฐฐ์นํด์ผ ํฉ๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ฐฉ๋ฒ 1: ์ ์ ์ปจํธ๋กค ํ์ผ ๋ณต์ฌ๋ณธ์ผ๋ก ๊ต์ฒด (๋ค์คํ ๊ตฌ์ฑ ํ๊ฒฝ)
์ปจํธ๋กค ํ์ผ์ด ๋ค์คํ๋์ด ์๋ ๊ฒฝ์ฐ, ์์๋์ง ์์ ๋ณต์ฌ๋ณธ์ ํ์ธํ ํ ์์๋ ํ์ผ์ ๋ฎ์ด์๋๋ค.
-- 1๋จ๊ณ: ํ์ฌ ์ปจํธ๋กค ํ์ผ ์์น ํ์ธ (NOMOUNT ์ํ์์)
STARTUP NOMOUNT;
SHOW PARAMETER control_files;
-- ๋๋ spfile/pfile ์ง์ ํ์ธ
SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files';
-- 2๋จ๊ณ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข
๋ฃ ํ OS ๋ ๋ฒจ์์ ๋ณต์ฌ
SHUTDOWN ABORT;
# OS ๋ ๋ฒจ์์ ์ ์ ๋ณต์ฌ๋ณธ์ ์์๋ ํ์ผ ์์น๋ก ๋ณต์ฌ
# ์์: /u01/oradata/orcl/control01.ctl ์ด ์์๋ ๊ฒฝ์ฐ
cp /u02/oradata/orcl/control02.ctl /u01/oradata/orcl/control01.ctl
cp /u03/oradata/orcl/control03.ctl /u01/oradata/orcl/control01.ctl
-- 3๋จ๊ณ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ๊ธฐ๋
STARTUP;
-- ๊ธฐ๋ ํ ์ปจํธ๋กค ํ์ผ ์ํ ํ์ธ
SELECT STATUS FROM V$CONTROLFILE;
SELECT NAME, STATUS FROM V$CONTROLFILE;
๋ฐฉ๋ฒ 2: RMAN ๋ฐฑ์ ์ผ๋ก๋ถํฐ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
์ ์ ๋ณต์ฌ๋ณธ์ด ์๊ฑฐ๋ ์ ์ฒด ์ปจํธ๋กค ํ์ผ์ด ์์๋ ๊ฒฝ์ฐ RMAN ๋ฐฑ์
์ ํตํด ๋ณต๊ตฌํฉ๋๋ค.
# RMAN ์ ์
rman target /
-- RMAN์ ํตํ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
RMAN> STARTUP NOMOUNT;
-- ๊ฐ์ฅ ์ต๊ทผ ๋ฐฑ์
์ผ๋ก๋ถํฐ ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
-- ํน์ ๋ฐฑ์
ํผ์ค๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ
RMAN> RESTORE CONTROLFILE FROM '/backup/rman/ctl_backup_20240101.bkp';
-- ์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ ํ ๋ง์ดํธ
RMAN> ALTER DATABASE MOUNT;
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ (์ปจํธ๋กค ํ์ผ ๋ณต๊ตฌ ํ ๋ฐ๋์ ์ํ)
RMAN> RECOVER DATABASE;
-- RESETLOGS ์ต์
์ผ๋ก ์คํ (์ปจํธ๋กค ํ์ผ ๋ณต์ ํ ํ์)
RMAN> ALTER DATABASE OPEN RESETLOGS;
๋ฐฉ๋ฒ 3: ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ (์ตํ์ ์๋จ)
๋ฐฑ์
๋ ์๊ณ ๋ณต์ฌ๋ณธ๋ ์๋ ์ต์
์ ์ํฉ์์๋ ์ปจํธ๋กค ํ์ผ์ ์ฌ์์ฑํด์ผ ํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ ์์ค ์ํ์ด ์์ผ๋ฏ๋ก ์ ์คํ๊ฒ ์ํํด์ผ ํฉ๋๋ค.
-- 1๋จ๊ณ: NOMOUNT ์ํ๋ก ๊ธฐ๋
STARTUP NOMOUNT;
-- 2๋จ๊ณ: ์ปจํธ๋กค ํ์ผ ์ฌ์์ฑ ์คํฌ๋ฆฝํธ ์คํ
-- (์๋ ์ ๋ณด๋ ํ๊ฒฝ์ ๋ง๊ฒ ์์ ํ์)
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 50M,
GROUP 2 '/u01/oradata/orcl/redo02.log' SIZE 50M,
GROUP 3 '/u01/oradata/orcl/redo03.log' SIZE 50M
DATAFILE
'/u01/oradata/orcl/system01.dbf',
'/u01/oradata/orcl/sysaux01.dbf',
'/u01/oradata/orcl/undotbs01.dbf',
'/u01/oradata/orcl/users01.dbf'
CHARACTER SET AL32UTF8;
-- 3๋จ๊ณ: ๋ณต๊ตฌ ์ํ
RECOVER DATABASE;
-- 4๋จ๊ณ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํ
ALTER DATABASE OPEN;
-- 5๋จ๊ณ: TEMPFILE ์ฌ์ถ๊ฐ (์ฌ์์ฑ ํ TEMP ํ์ผ์ ์๋ ์ถ๊ฐ ํ์)
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/oradata/orcl/temp01.dbf'
SIZE 512M REUSE AUTOEXTEND ON NEXT 64M MAXSIZE UNLIMITED;
-- ์ฌ์์ฑ ํ ์ปจํธ๋กค ํ์ผ ๋ฐฑ์
์ฆ์ ์ํ
ALTER DATABASE BACKUP CONTROLFILE TO
'/backup/manual/control_backup_after_recreate.ctl';
-- ๋๋ ํธ๋ ์ด์ค ํ์ผ๋ก ๋ฐฑ์
(์ฌ์์ฑ ์คํฌ๋ฆฝํธ ๋ณด์กด ๋ชฉ์ )
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS '/backup/manual/create_controlfile.sql';
๋ฐฉ๋ฒ 4: ์ปจํธ๋กค ํ์ผ ๋ค์คํ ์ฌ๊ตฌ์ฑ (์๋ฐฉ ๋ฐ ๋ณต๊ตฌ ํ ์กฐ์น)
-- ํ์ฌ ์ปจํธ๋กค ํ์ผ ์์น ํ์ธ
SELECT NAME FROM V$CONTROLFILE;
-- SPFILE ์ฌ์ฉ ํ๊ฒฝ์์ ์ถ๊ฐ ์ปจํธ๋กค ํ์ผ ๊ฒฝ๋ก ์ค์
ALTER SYSTEM SET CONTROL_FILES =
'/u01/oradata/orcl/control01.ctl',
'/u02/oradata/orcl/control02.ctl',
'/u03/oradata/orcl/control03.ctl'
SCOPE=SPFILE;
-- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข
๋ฃ ํ OS์์ ํ์ผ ๋ณต์ฌ, ์ฌ๊ธฐ๋
SHUTDOWN IMMEDIATE;
# OS ๋ ๋ฒจ: ๊ธฐ์กด ์ปจํธ๋กค ํ์ผ์ ์ ๊ฒฝ๋ก์ ๋ณต์ฌ
cp /u01/oradata/orcl/control01.ctl /u02/oradata/orcl/control02.ctl
cp /u01/oradata/orcl/control01.ctl /u03/oradata/orcl/control03.ctl
-- ์ฌ๊ธฐ๋ ํ ํ์ธ
STARTUP;
SELECT NAME, STATUS FROM V$CONTROLFILE;
์๋ฐฉ ๋ฐฉ๋ฒ
1. ์ปจํธ๋กค ํ์ผ ๋ค์คํ ๋ฐ ์ ๊ธฐ์ ์ธ RMAN ๋ฐฑ์ ์๋ํ
์ปจํธ๋กค ํ์ผ์ ๋ฐ๋์ ์๋ก ๋ค๋ฅธ ๋ฌผ๋ฆฌ์ ๋์คํฌ(๋๋ ASM ๋์คํฌ ๊ทธ๋ฃน)์ ์ต์ 3๊ฐ ์ด์ ๋ค์คํํ์ฌ ์ด์ํด์ผ ํฉ๋๋ค. ๋ํ RMAN์ CONFIGURE CONTROLFILE AUTOBACKUP ON ์ค์ ์ ํ์ฑํํ๋ฉด ๋ฐฑ์
์ํ ์ ๋ฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ(๋ฐ์ดํฐํ์ผ ์ถ๊ฐ/์ญ์ ๋ฑ) ์ ์๋์ผ๋ก ์ปจํธ๋กค ํ์ผ ๋ฐฑ์
์ด ์์ฑ๋๋ฏ๋ก, ์ฅ์ ์ ์ ์ํ ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
-- RMAN ์ปจํธ๋กค ํ์ผ ์๋ ๋ฐฑ์
ํ์ฑํ
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT
FOR DEVICE TYPE DISK TO '/backup/rman/cf_%F';
-- ์ค์ ํ์ธ
RMAN> SHOW CONTROLFILE AUTOBACKUP;
2. ์ ๊ธฐ์ ์ธ ์ปจํธ๋กค ํ์ผ ๋ฌด๊ฒฐ์ฑ ๋ชจ๋ํฐ๋ง ๋ฐ ์๋ฆผ ์ฒด๊ณ ๊ตฌ์ถ
์ฃผ๊ธฐ์ ์ผ๋ก V$CONTROLFILE_RECORD_SECTION ๋ทฐ๋ฅผ ์กฐํํ๊ฑฐ๋, Oracle Enterprise Manager์ ์ปจํธ๋กค ํ์ผ ์ํ ๋ชจ๋ํฐ๋ง์ ํ์ฉํ์ฌ ์ด์ ์งํ๋ฅผ ์ฌ์ ์ ํ์งํ๋ ์ฒด๊ณ๋ฅผ ๊ฐ์ถฐ์ผ ํฉ๋๋ค. ์์ธ๋ฌ OS ๋ ๋ฒจ์ ๋์คํฌ ์ํ ๋ชจ๋ํฐ๋ง(SMART ๋ฐ์ดํฐ, ์คํ ๋ฆฌ์ง ๋ฒค๋ ๋ชจ๋ํฐ๋ง ํด)์ ๋ณํํ๋ฉด ํ๋์จ์ด ์ฅ์ ๋ก ์ธํ ์ปจํธ๋กค ํ์ผ ์์์ ์ฌ์ ์ ์๋ฐฉํ ์ ์์ต๋๋ค.
-- ์ปจํธ๋กค ํ์ผ ์น์
๋ณ ์ํ ์กฐํ
SELECT TYPE, RECORD_SIZE, RECORDS_TOTAL, RECORDS_USED
FROM V$CONTROLFILE_RECORD_SECTION
ORDER BY TYPE;
-- ์ ๊ธฐ ๋ฐฑ์
์คํฌ๋ฆฝํธ ์์ (cron ๋ฑ๋ก์ฉ)
-- ๋งค์ผ ์์ ์ปจํธ๋กค ํ์ผ ํธ๋ ์ด์ค ๋ฐฑ์
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS '/backup/trace/ctlfile_backup_$(date +%Y%m%d).sql' REUSE;
๊ด๋ จ ์๋ฌ
-
ORA-00205: ์ปจํธ๋กค ํ์ผ์ ์๋ณํ๋ ์ค ์ค๋ฅ ๋ฐ์.
CONTROL_FILESํ๋ผ๋ฏธํฐ์ ์ง์ ๋ ๊ฒฝ๋ก์ ํ์ผ์ด ์๊ฑฐ๋ ์ ๊ทผ ๋ถ๊ฐ ์ ๋ฐ์ํ๋ฉฐ ORA-00227๊ณผ ํจ๊ป ๋ํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. - ORA-00202: ์ปจํธ๋กค ํ์ผ ์์ฒด๋ฅผ ์ด ์ ์์ ๋ ๋ฐ์ํ๋ฉฐ, ORA-00227์ ์ ์กฐ ์ฆ์์ผ๋ก ๋ํ๋๊ธฐ๋ ํฉ๋๋ค.
- ORA-00210: ์ง์ ๋ ์ปจํธ๋กค ํ์ผ์ ์ด ์ ์๋ ๊ฒฝ์ฐ๋ก, ํ์ผ ๊ถํ ๋ฌธ์ ๋ ํ์ผ ์ญ์ ์ ๋ฐ์ํฉ๋๋ค.
- ORA-00214: ์ปจํธ๋กค ํ์ผ์ ๋ฒ์ ์ด ์๋ก ๋ถ์ผ์นํ ๋ ๋ฐ์ํ๋ฉฐ, ๋ค์คํ๋ ์ปจํธ๋กค ํ์ผ ์ค ํ๋๋ง ์ ๋ฐ์ดํธ๋ ์ํฉ์์ ๋ํ๋ฉ๋๋ค.
- ORA-00600: ๋ด๋ถ ์๋ฌ๋ก, ์ปจํธ๋กค ํ์ผ ์์์ด Oracle ์ปค๋ ๋ ๋ฒจ๊น์ง ์ํฅ์ ๋ฏธ์น ๊ฒฝ์ฐ ORA-00227๊ณผ ๋๋ฐํ์ฌ ๋ฐ์ํ ์ ์์ผ๋ฉฐ, Oracle Support์ SR์ ํตํด ๋ถ์์ด ํ์ํฉ๋๋ค.












