ORA-00201λ?
ORA-00201 μλ¬λ "control file version incompatible with ORACLE version", μ¦ μ»¨νΈλ‘€ νμΌμ λ²μ μ΄ νμ¬ Oracle λ°μ΄ν°λ² μ΄μ€ μννΈμ¨μ΄ λ²μ κ³Ό νΈνλμ§ μμ λ λ°μνλ μλ¬μ λλ€. μ£Όλ‘ Oracle μννΈμ¨μ΄λ₯Ό μ κ·Έλ μ΄λνκ±°λ λ€μ΄κ·Έλ μ΄λν μ΄ν, λλ λ€λ₯Έ λ²μ μ Oracle νκ²½μμ μμ±λ 컨νΈλ‘€ νμΌμ κ·Έλλ‘ μ¬μ©νλ € ν λ λ°μν©λλ€. μ΄ μλ¬κ° λ°μνλ©΄ λ°μ΄ν°λ² μ΄μ€ μΈμ€ν΄μ€κ° MOUNT λ¨κ³μ‘°μ°¨ ν΅κ³Όνμ§ λͺ»νκ³ κΈ°λμ μ€ν¨νκΈ° λλ¬Έμ, μ μνκ³ μ νν λμμ΄ νμν μ¬κ°λ λμ μ€λ₯μ λλ€.
μ£Όμ λ°μ μμΈ
1. Oracle μννΈμ¨μ΄ μ κ·Έλ μ΄λ/λ€μ΄κ·Έλ μ΄λ ν 컨νΈλ‘€ νμΌ λ―Έκ°±μ
κ°μ₯ νν μμΈμ λλ€. Oracle λ°μ΄λ리(μννΈμ¨μ΄)λ₯Ό μ λ²μ μΌλ‘ μ κ·Έλ μ΄λνκ±°λ ꡬλ²μ μΌλ‘ λ€μ΄κ·Έλ μ΄λνμ λ, κΈ°μ‘΄ 컨νΈλ‘€ νμΌμ λ΄λΆ λ²μ ν€λ μ λ³΄κ° μ Oracle μμ§μ΄ μꡬνλ λ²μ κ³Ό λ§μ§ μκ² λ©λλ€. μλ₯Ό λ€μ΄ Oracle 19cλ‘ μ κ·Έλ μ΄λνλλ°, κΈ°μ‘΄ 12c μμ μ μμ±λ 컨νΈλ‘€ νμΌμ κ·Έλλ‘ μ¬μ©νλ©΄ μ΄ μλ¬κ° λ°λμ λ°μν©λλ€.
2. λ€λ₯Έ Oracle νκ²½(λ²μ )μμ 컨νΈλ‘€ νμΌμ 볡μ¬νμ¬ μ¬μ©
ν μ€νΈ νκ²½ ꡬμ±, DR(μ¬ν΄λ³΅κ΅¬) ꡬμ±, λλ ν΄λ‘ (Clone) DB κ΅¬μ± μ μ΄μ μλ²μ λ²μ μ΄ λ€λ₯Έ νκ²½μΌλ‘ 컨νΈλ‘€ νμΌμ κ·Έλλ‘ λ³΅μ¬νλ κ²½μ° μ΄ μλ¬κ° λ°μν©λλ€. 컨νΈλ‘€ νμΌ λ΄λΆμλ Oracle λ²μ μ λ³΄κ° λ°μ΄λ리 ννλ‘ κΈ°λ‘λμ΄ μμ΄, μννΈμ¨μ΄ λ²μ μ΄ λ€λ₯΄λ©΄ μ λ 곡μ ν μ μμ΅λλ€.
3. ORACLE_HOME νκ²½ λ³μ μ€μ€μ μΌλ‘ μΈν λ²μ λΆμΌμΉ
μλ²μ μ¬λ¬ λ²μ μ Oracle μννΈμ¨μ΄κ° μ€μΉλ κ²½μ°(μ: 11g, 19c λμ μ€μΉ), ORACLE_HOME λλ PATH νκ²½λ³μκ° μλͺ» μ€μ λμ΄ μλ±ν λ²μ μ Oracle λ°μ΄λλ¦¬λ‘ λ°μ΄ν°λ² μ΄μ€λ₯Ό κΈ°λνλ € νλ©΄ μ΄ μλ¬κ° λ°μν©λλ€. μ΄λ μ΄μμμ μ€μλ‘ λ°μνλ κ²½μ°κ° λ§μΌλ©°, μλ¬ λ©μμ§λ§ λ³΄κ³ λ μμΈ νμ
μ΄ μ΄λ €μΈ μ μμ΄ μ£Όμκ° νμν©λλ€.
ν΄κ²° λ°©λ²
μμΈ 1 ν΄κ²°: μ κ·Έλ μ΄λ ν 컨νΈλ‘€ νμΌ μ¬μμ±
Oracle μ κ·Έλ μ΄λ/λ€μ΄κ·Έλ μ΄λ μ§νλΌλ©΄, κΈ°μ‘΄ 컨νΈλ‘€ νμΌμ μ¬μμ±νλ κ²μ΄ κ°μ₯ μμ ν λ°©λ²μ λλ€. μλ μ μ°¨λ₯Ό λ°λ¦ λλ€.
Step 1. νμ¬ μ»¨νΈλ‘€ νμΌ λ°±μ
μ€ν¬λ¦½νΈ μΆμΆ (μ
κ·Έλ μ΄λ μ λ°λμ μν)
-- μ
κ·Έλ μ΄λ μ΄μ νκ²½μμ 컨νΈλ‘€ νμΌ μ¬μμ± μ€ν¬λ¦½νΈλ₯Ό 미리 μΆμΆν΄ λμ΄μΌ ν©λλ€.
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS '/home/oracle/cf_backup.sql' REUSE RESETLOGS;
Step 2. μΆμΆλ μ€ν¬λ¦½νΈ λ΄μ© νμΈ λ° μμ
-- /home/oracle/cf_backup.sql νμΌμ μ΄λ©΄ μλμ κ°μ ννμ μ€ν¬λ¦½νΈκ° μμ±λ©λλ€.
-- NORESETLOGS λλ RESETLOGS μ΅μ
μ μν©μ λ§κ² μ νν©λλ€.
STARTUP NOMOUNT;
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
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;
Step 3. 컨νΈλ‘€ νμΌ μ¬μμ± ν DB μ€ν
-- 컨νΈλ‘€ νμΌ μμ± μ€ν¬λ¦½νΈ μ€ν ν λμ
λ리 볡ꡬ λ° DB μ€ν
RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
-- SCNμ΄ λ§λ€λ©΄ CANCEL μ
λ ₯ ν μ§ν
ALTER DATABASE OPEN RESETLOGS;
-- μ μ μ€ν νμΈ
SELECT STATUS FROM V$INSTANCE;
SELECT NAME, OPEN_MODE FROM V$DATABASE;
μμΈ 2 ν΄κ²°: ν΄λ‘ /λ³΅μ¬ νκ²½μμ 컨νΈλ‘€ νμΌ μ κ· μμ±
λ€λ₯Έ νκ²½μμ 컨νΈλ‘€ νμΌμ 볡μ¬ν΄μ¨ κ²½μ°, ν΄λΉ 컨νΈλ‘€ νμΌμ μ¬μ©νμ§ λ§κ³ νμ¬ λ²μ μ λ§λ 컨νΈλ‘€ νμΌμ μλ‘ μμ±ν΄μΌ ν©λλ€.
-- Step 1. NOMOUNT μνλ‘ μΈμ€ν΄μ€λ§ κΈ°λ
STARTUP NOMOUNT;
-- Step 2. νμ¬ μννΈμ¨μ΄ λ²μ νμΈ
SELECT * FROM V$VERSION;
-- Step 3. λ°μ΄ν°νμΌ, 리λλ‘κ·Έ κ²½λ‘λ₯Ό μ€μ νκ²½μ λ§κ² μμ νμ¬ μ»¨νΈλ‘€ νμΌ μ¬μμ±
CREATE CONTROLFILE SET DATABASE "CLONEDB" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 200
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/CLONEDB/redo01.log' SIZE 100M,
GROUP 2 '/oradata/CLONEDB/redo02.log' SIZE 100M
DATAFILE
'/oradata/CLONEDB/system01.dbf',
'/oradata/CLONEDB/sysaux01.dbf',
'/oradata/CLONEDB/undotbs01.dbf',
'/oradata/CLONEDB/users01.dbf'
CHARACTER SET AL32UTF8;
-- Step 4. μμ ν
μ΄λΈμ€νμ΄μ€ μΆκ° λ° DB μ€ν
ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/CLONEDB/temp01.dbf' SIZE 500M REUSE;
μμΈ 3 ν΄κ²°: ORACLE_HOME νκ²½λ³μ νμΈ λ° μμ
# νμ¬ μ€μ λ νκ²½λ³μ νμΈ
echo $ORACLE_HOME
echo $ORACLE_SID
which sqlplus
sqlplus -version
# oratab νμΌμ νμΈνμ¬ μ¬λ°λ₯Έ ORACLE_HOME κ²½λ‘ νμ
cat /etc/oratab
# μμ μΆλ ₯: ORCL:/u01/app/oracle/product/19.0.0/dbhome_1:Y
# νκ²½λ³μ μ¬μ€μ (19c κΈ°μ€ μμ)
export ORACLE_SID=ORCL
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
νκ²½λ³μ μμ ν μλ SQLλ‘ λ²μ μ μ¬νμΈν©λλ€.
-- μννΈμ¨μ΄ λ²μ κ³Ό 컨νΈλ‘€ νμΌ λ²μ μΌμΉ μ¬λΆ νμΈ
STARTUP NOMOUNT;
-- alert log νμΈ λͺ
λ Ή (OS λ 벨)
-- tail -100f $ORACLE_BASE/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log
-- 컨νΈλ‘€ νμΌ λ²μ μ 보 μ‘°ν (MOUNT μ±κ³΅ μ)
SELECT CF_VERSION FROM BOOTSTRAP$;
-- λλ v$controlfile_record_sectionμΌλ‘ μ 보 νμΈ
SELECT TYPE, RECORD_SIZE, RECORDS_TOTAL, RECORDS_USED
FROM V$CONTROLFILE_RECORD_SECTION
WHERE TYPE = 'DATABASE';
μλ°© λ°©λ²
1. μ κ·Έλ μ΄λ μ 컨νΈλ‘€ νμΌ μ¬μμ± μ€ν¬λ¦½νΈ λ° RMAN λ°±μ νμν
Oracle λ²μ μ
κ·Έλ μ΄λ μμ
μ μ λ°λμ ALTER DATABASE BACKUP CONTROLFILE TO TRACEλ‘ μ¬μμ± μ€ν¬λ¦½νΈλ₯Ό μΆμΆνκ³ , RMANμΌλ‘ μ 체 λ°±μ
μ μννλ κ²μ λ³κ²½ κ΄λ¦¬ νμ€ μ μ°¨μ λͺ
μν΄μΌ ν©λλ€. μλν μ€ν¬λ¦½νΈλ Runbookμ μ΄ λ¨κ³λ₯Ό νμ 체ν¬λ¦¬μ€νΈλ‘ ν¬ν¨μμΌ μ
κ·Έλ μ΄λ λ΄λΉμκ° μ λ λΉ λ¨λ¦¬μ§ μλλ‘ κ°μ νν©λλ€.
-- μ
κ·Έλ μ΄λ μ 컨νΈλ‘€ νμΌ μ 보 κΈ°λ‘ (λ²μ μ 보 ν¬ν¨)
SELECT NAME, DB_UNIQUE_NAME, LOG_MODE, OPEN_MODE, VERSION_TIME
FROM V$DATABASE;
-- RMAN μ 체 λ°±μ
(μ
κ·Έλ μ΄λ μ νμ)
-- RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
-- RMAN> BACKUP CURRENT CONTROLFILE FORMAT '/backup/cf_%d_%T.ctl';
2. λ€μ€ Oracle Home νκ²½μμ νκ²½λ³μ κ΄λ¦¬ μλν
μλ²μ μ¬λ¬ λ²μ μ Oracleμ΄ μ€μΉλ κ²½μ°, .bash_profile λλ νκ²½ κ΄λ¦¬ μ€ν¬λ¦½νΈλ₯Ό ν΅ν΄ ORACLE_SIDλ³λ‘ μ¬λ°λ₯Έ ORACLE_HOMEμ΄ μλ μ€μ λλλ‘ κ΅¬μ±ν΄μΌ ν©λλ€. oraenv μ νΈλ¦¬ν°λ₯Ό νμ©νκ±°λ, μλμ κ°μ΄ SID κΈ°λ° νκ²½λ³μ μ€μ ν¨μλ₯Ό ν νμ€μΌλ‘ μ μ©νλ©΄ ν΄λ¨Ό μλ¬λ₯Ό ν¬κ² μ€μΌ μ μμ΅λλ€.
# .bash_profileμ μλ ν¨μ λ±λ‘νμ¬ DBA μ€μ λ°©μ§
function setora() {
export ORACLE_SID=$1
ORACLE_HOME=$(grep "^${ORACLE_SID}:" /etc/oratab | cut -d: -f2)
if [ -z "$ORACLE_HOME" ]; then
echo "ERROR: SID '$1' not found in /etc/oratab"
return 1
fi
export ORACLE_HOME
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
echo "ORACLE_SID=$ORACLE_SID"
echo "ORACLE_HOME=$ORACLE_HOME"
}
# μ¬μ©λ²: setora ORCL
κ΄λ ¨ μλ¬
| μλ¬ μ½λ | μ€λͺ |
|---|---|
| ORA-00202 |
control file: '/κ²½λ‘/νμΌλͺ
' β 컨νΈλ‘€ νμΌ κ²½λ‘λ₯Ό λͺ
μνλ μλ¬λ‘, ORA-00201κ³Ό ν¨κ» μΆλ ₯λμ΄ μ΄λ€ 컨νΈλ‘€ νμΌμμ λ¬Έμ κ° λ°μνλμ§ μλ €μ€λλ€. |
| ORA-00203 |
using the wrong control files β μλͺ»λ 컨νΈλ‘€ νμΌμ μ¬μ©νκ³ μμμ μ리며, ORA-00201κ³Ό ν¨κ» λ°μνλ κ²½μ°κ° λ§μ΅λλ€. |
| ORA-00205 |
error in identifying controlfile β 컨νΈλ‘€ νμΌ μ체λ₯Ό μλ³νμ§ λͺ»νλ μλ¬λ‘, νμΌ μμ λλ κ²½λ‘ μ€λ₯ μ λ°μν©λλ€. |
| ORA-00214 |
control file '...' version ... inconsistent with file '...' version ... β λ€μ€ 컨νΈλ‘€ νμΌ κ° λ²μ μ΄ λΆμΌμΉν λ λ°μνλ©°, 컨νΈλ‘€ νμΌ λ©ν°νλ μ± νκ²½μμ μ£Όμκ° νμν©λλ€. |
| ORA-01503 |
CREATE CONTROLFILE failed β 컨νΈλ‘€ νμΌ μ¬μμ± μλ μ€ μ€ν¨ν λ λ°μνλ©°, ν΄κ²° κ³Όμ μμ λ§λ μ μλ μ°κ΄ μλ¬μ
λλ€. |
μ€λ¬΄ ν: ORA-00201 μλ¬λ λ¨λ μΌλ‘ λ°μνκΈ°λ³΄λ€ ORA-00202μ ν¨κ» μμΌλ‘ μΆλ ₯λλ κ²½μ°κ° λλΆλΆμ λλ€. alert log(
$ORACLE_BASE/diag/rdbms/<db_name>/<sid>/trace/alert_<SID>.log)λ₯Ό λ°λμ νμΈνμ¬ μ 체 μλ¬ μ€












