본문 바로가기
스터디북

[11/18] DB Downgrade

by 파이어볼러 2015. 11. 18.

DB Downgrade 11.2.0.4 -> 10.2.0.5

 

오라클 데이터베이스를 다운그레이드 할 경우 만약 10.1.0.5에서 11.2로 업그레이드를 했다면 이후에 10.2로 다운그레이드 할 수 없고 오직 10.1.0.5로만 다운그레이드 할 수 있다

다운그레이드를 할 때 생각해야 하는 것은 호환성(compatible)의 문제다

 

Compatible 파라미터라는 것이 있는데 오라클 데이터베이스를 만약 10g로 업그레이드 한 후에 오라클 데이터베이스 10g에서 동작할 수 있는 조건을 만족했다면 compatible 파라미터를 10.0으로 설정할 수 있는데 단 한번 compatible 파라미터를 10.0으로 설정했다면 그 값을 이전으로 되돌릴 수 없다 즉 이 점이 이전 오라클 버전(9i)과의 차이점이다

 

이전 릴리즈(ex> Oracle 8, Oracle8i or Oracle 9iR1)에서 Oracle Database 10g로 업그레이드 하는 사용자는 Oracle 9iR2를 먼저 설치하지 않으면 Oracle9iR2로 다운그레이드 할 수 없다 10g로 업그레이드 하면 데이터베이스는 기본적으로 Oracle9iR2 파일 형식 호환 기능을 유지하므로 Oracle Database 10g가 기록하는 디스크상 구조는 Oracle9iR2 구조와 호환되어 Oracle9iR2로 다운그레이드 할 수 있게 된다 만약 위에서도 언급했지만 COMPATIBLE=10.x를 사용하여 파일 형식 호환 기능을 명시적으로 10로 설정한 후에는 다운그레이드가 불가하다

 

Oracle compatible parameter는 오라클 데이터베이스가 운영되는 mode를 결정하게 되는데 예를 들어 9.2.0.4를 사용하는데 만약 9i의 기능을 쓰지 않고 8i의 기능을 사용하고자 한다면 compatible8.1.6.0.0 이렇게 주면 이전의 version 기능대로 수행한다 일반적으로는 S/W version과 동일하게 지정하게 되고 특히 upgrade 후에 과거의 version기능대로 수행 시 사용하지만 현업에서는 거의 변경하지 않는 parameter

10g부터는 COMPATIBLE initparameterirreversible(역행 불가능)하다 즉 COMPATIBLE는 현 값보다 적게 거꾸로 가는 것이 불가능하다는 것이다

COMPATIBLE=9.2.0 -> COMPATIBLE=10.0.0(OK)

COMPATIBLE=10.0.0 -> COMPATIBLE=9.2.0(startuperror)

이전 버전 사용 시점으로 point time recovery하는 것 이외에는 역행이 불가능하므로 10g부터는

Alter database reset compatibility 명령도 잘 쓰이지 않는다

 

Compatible을 확인해보면 여전히 10.2.0.1인걸 알 수 있다

 

SQL> show parameter compatible

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

compatible                           string      10.2.0.1.0

 

Compatbile을 변경 및 DB 재시작

 

SQL> alter system set compatible = '11.2.0.4.0' scope=spfile;

System altered.

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

SQL> startup

 

ORACLE instance started.

Total System Global Area 1219260416 bytes

Fixed Size                  2252744 bytes

Variable Size             385876024 bytes

Database Buffers          822083584 bytes

Redo Buffers                9048064 bytes

Database mounted.

Database opened.

 

 

SQL> show parameter compatible

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

compatible                           string      11.2.0.4.0

 

 

버전이 변경된걸 알 수 있다 다만 이렇게 compatible을 업그레이드 하여 11g의 기능을 사용할 경우 downgradeerror가 발생한다

 

Compatible 파라미터를 변경하지 않고 downgrade 실행

 

 

SQL> startup downgrade

ORACLE instance started.

 

Total System Global Area 1219260416 bytes

Fixed Size                  2252744 bytes

Variable Size             385876024 bytes

Database Buffers          822083584 bytes

Redo Buffers                9048064 bytes

Database mounted.

Database opened.

 

EM관련 최고의 권한을 가진 sysman계정을 downgrade 스크립트를 실행하기 전 drop

 

SQL> DROP USER sysman CASCADE;

User dropped.

 

 

스크립트 실행 전 log파일 설정

 

SQL> SPOOL downgrade.log

 

스크립트 실행

 

SQL> @?/rdbms/admin/catdwgrd.sql

~중략~

TIMESTAMP

-----------------------------------------------------------

COMP_TIMESTAMP DWGRD_END 2015-11-18 00:47:51 2457345 02871

 

1 row selected.

 

SQL>

SQL> Rem ***********************************************************************

SQL> Rem END catdwgrd.sql

SQL> Rem ***********************************************************************

SQL>

 

Log 해제

SQL> SPOOL off

 

DB shutdown

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

 

 

10g 관련 실행을 위한 bash_profile 재설정 및 적용

 

[oracle@lnx04 ~]$ vi .bash_profile

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/dbhome_1

#export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/dbhome_1

[oracle@lnx04 ~]$ . .bash_profile

 

10g DB에 접속 후 startup upgrade 실행

 

SQL> startup upgrade;

ORACLE instance started.

 

Total System Global Area 1224736768 bytes

Fixed Size                  2095896 bytes

Variable Size             318768360 bytes

Database Buffers          889192448 bytes

Redo Buffers               14680064 bytes

Database mounted.

Database opened.

 

스크립트 실행 전 log파일 설정

 

SQL> SPOOL reload.log

 

스크립트 실행

 

SQL> @?/rdbms/admin/catrelod.sql

 

~중략~

COMP_NAME                           STATUS

----------------------------------- --------------------------------------------

VERSION

----------------------------------------

Oracle Database Packages and Types  VALID

10.2.0.5.0

 

Oracle Database Catalog Views       VALID

10.2.0.5.0

 

JServer JAVA Virtual Machine        VALID

10.2.0.5.0

 

Oracle XDK                          VALID

10.2.0.5.0

 

Oracle Database Java Packages       VALID

10.2.0.5.0

 

Oracle Text                         VALID

10.2.0.5.0

 

Oracle XML Database                 VALID

10.2.0.5.0

 

Oracle Workspace Manager            VALID

10.2.0.5.0

 

Oracle Data Mining                  VALID

10.2.0.5.0

 

OLAP Analytic Workspace             VALID

10.2.0.5.0

 

OLAP Catalog                        VALID

10.2.0.5.0

 

Oracle OLAP API                     VALID

10.2.0.5.0

 

Oracle interMedia                   VALID

10.2.0.5.0

 

Spatial                             INVALID

10.2.0.5.0

 

Oracle Expression Filter            INVALID

10.2.0.5.0

 

Oracle Rule Manager                 INVALID

10.2.0.5.0

 

16 rows selected.

 

실행 후 compatible 확인 ( 초기 버전 10.2.0.1 설치 후 올린적이 없기 때문에 그대로다 )

 

SQL> show parameter compatible

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

compatible                           string      10.2.0.1.0

 

DB shutdown

 

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

 

 

 

 

다시 DB open

 

SQL> startup

 

ORACLE instance started.

 

Total System Global Area 1224736768 bytes

Fixed Size                  2095896 bytes

Variable Size             369100008 bytes

Database Buffers          838860800 bytes

Redo Buffers               14680064 bytes

Database mounted.

Database opened.

 

모든 PL/SQL modulesINVALID state에 대한 recompiles을 위한 스크립트 실행

 

SQL> @?/rdbms/admin/utlrp.sql

 

~중략~

ERRORS DURING RECOMPILATION

---------------------------

                        115

1 row selected.

PL/SQL procedure successfully completed.


'스터디북' 카테고리의 다른 글

<11/20> Blind Love  (0) 2015.11.20
<11/19> 서른즈음에  (0) 2015.11.19
<11/18> Luv  (0) 2015.11.18
<11/17> Remember  (0) 2015.11.17
<11/16> Love Is Over  (0) 2015.11.16