Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

Windows에서 Oracle Database 11g를 19c로 업그레이드하는 방법 - 2부

Oracle® 19c Database는 시장과 기업 환경에서 널리 사용되는 자동화 데이터베이스의 최신 릴리스입니다. Oracle Database 19c는 Oracle Database 12c(릴리스 12.2) 제품군에 속하며, 안정성은 이 제품군의 핵심 요소입니다. 이 두 부분으로 구성된 블로그 시리즈에서는 19c 버전의 설치 및 업그레이드 과정을 다룹니다.

소개

시리즈의 두 번째 파트인 이 글에서는 Windows® 환경에서 Oracle Database를 11.2.0.4에서 19c로 업그레이드하는 방법을 설명합니다. 여기서 소개하는 수동 방식은 데이터베이스 업그레이드 어시스턴트(DBUA)를 사용하지 않습니다.

설치 단계는 이 시리즈의 1부를 참고하세요. 필자는 19c Oracle 홈 디렉터리에 바이너리를 설치했습니다.

ORACLE_HOME=d:\app\product\19.0.0\dbhome_1

다음 단계에 따라 Oracle Database를 19c로 업그레이드할 수 있습니다.

참고: 업그레이드 과정에서 문제가 발생할 경우에 대비하여 업그레이드 전 반드시 유효한 백업을 확보해 두어야 합니다.

1단계: 설치 파일 준비(Staging)

업그레이드를 진행할 수 있도록 19.3 RDBMS(Relational Database Management System) 설치 파일을 미리 준비합니다.

2단계: 사전 업그레이드 작업

사전 업그레이드 프로세스를 완료하려면 다음 단계를 실행합니다.

2.0단계: 준비 작업

  1. Metalink 노트 884522.1을 통해 Oracle Database Pre-Upgrade Utility를 다운로드합니다. 사전 업그레이드 도구를 실행하려면 다음 코드를 실행합니다.

    set ORACLE_HOME=d:\app\product\11.2.0.4\dbhome_1
    set ORACLE_BASE=d:\app
    set ORACLE_SID=ABC
    set PATH=%ORACLE_HOME%\bin;%PATH%
    %ORACLE_HOME%\jdk\bin\java -jar <top_dir>\preupgrade.jar TERMINAL TEXT -u sys -p <sys_password>

  2. d:\app\cfgtoollogs\ABC\preupgrade\preupgrade.txt 파일의 출력 결과를 확인하고, 사전 업그레이드 로그 파일을 검토하여 오류가 있으면 수정합니다.

  3. 로그에서 AUTOFIXUP으로 표시된 항목들은 사전 업그레이드 fixup 스크립트를 실행해 자동으로 처리할 수 있습니다. 예를 들어 d:\app\cfgtoollogs\ABC\preupgrade\preupgrade_fixups.sql을 실행하려면 다음 코드를 실행합니다.

    cd d:
    cd d:\app\cfgtoollogs\ABC\preupgrade
    sqlplus sys/<password> as sysdba @preupgrade_fixups.sql

  4. preupgrade_fixups.sql의 출력 결과를 검토하고, 남아 있는 수동 작업을 모두 수행합니다.

2.1단계: pfile 백업

다음 명령어를 실행하여 pfile을 백업합니다.

SQL> create pfile='d:\app\init_ABC.ora' from spfile;

2.2단계: 무효 객체 제거

SQL*Plus에서 utlrp.sql 스크립트를 실행하여 무효 객체(invalid objects)를 컴파일합니다. SYS/SYSTEM 스키마에 무효 객체가 남아 있지 않은지 확인합니다. 그 외의 무효 객체는 별도 테이블에 저장해 두었다가, 나중에 사후 업그레이드 단계에서 비교하는 데 활용합니다.

SQL>@?/rdbms/admin/utlrp.sql
SQL> create table system.invalids_before_upgrade as select * From dba_invalid_objects;

2.3단계: EM 리포지토리 제거

다음 단계에 따라 EM(Enterprise Manager) 리포지토리를 제거합니다.

emremove.sql 스크립트를 19c 홈에서 11g 홈으로 복사합니다.

copy d:\app\product\19.0.0\dbhome_1\rdbms\admin\emremove.sql d:\app\product\11.2.0.4\dbhome_1\rdbms\admin
cd d:\app\product\11.2.0.4\dbhome_1\rdbms\admin
sqlplus sys/<password> as sysdba
SET ECHO ON;
SET SERVEROUTPUT ON;
@emremove.sql

2.4단계: OLAP 카탈로그 제거

다음 단계에 따라 OLAP 카탈로그를 제거합니다.

cd d:\app\product\11.2.0.4\dbhome_1\olap\admin\
sqlplus sys/<password> as sysdba @catnoamd.sql

2.5단계: APEX 제거

Application Express(APEX)를 사용하지 않는다면 다음 명령어를 실행하여 제거할 수 있습니다.

cd d:\app\product\11.2.0.4\dbhome_1\apex
sqlplus sys/<password> as sysdba @apxremov.sql
drop package htmldb_system;
drop public synonym htmldb_system;

2.6단계: RECYCLEBIN 비우기

다음 명령어로 DBA RECYCLEBIN을 비웁니다.

PURGE DBA_RECYCLEBIN;

2.7단계: 딕셔너리 통계 수집

다음 명령어로 딕셔너리 통계를 수집합니다.

EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

모든 준비가 완료되었는지 확인하기 위해 사전 업그레이드 도구를 다시 한번 실행합니다.

3단계: 업그레이드 작업

다음 업그레이드 단계를 실행하여 업그레이드를 수행합니다.

3.1단계: 업그레이드 수행

  1. Oracle 11g 데이터베이스를 종료합니다.

  2. 데이터베이스 종료 후 관리자 권한으로 CMD를 열고, 명령 프롬프트에서 다음 명령어를 실행하여 Oracle 11g Windows 서비스를 모두 제거합니다.

    set ORACLE_HOME=d:\app\product\19.0.0\dbhome_1
    set PATH=%ORACLE_HOME%\bin;%PATH%
    set ORACLE_SID=ABC
    sc delete OracleJobSchedulerABC
    sc delete OracleMTSRecoveryService
    sc delete OracleServiceABC
    sc delete OracleVssWriterABC

  3. 다음 명령어를 실행하여 Oracle 19c Windows 서비스를 생성합니다.

    d:\app\product\19.0.0\dbhome_1\bin\ORADIM -NEW -SID ABC -SYSPWD ********* -STARTMODE AUTO -PFILE D:\app\product\19.0.0\dbhome_1\database\INITABC.ORA

  4. Oracle 19c Windows 서비스 생성이 완료되면 해당 서비스를 시작합니다.

3.2단계: Oracle 데이터베이스 시작

19c 환경에서 Oracle Database를 업그레이드 모드(upgrade mode)로 시작합니다.

데이터베이스가 업그레이드 모드로 시작되면 다음 단계를 수행합니다.

  1. 다음 명령어를 실행합니다.

    cd d:\app\product\19.0.0\dbhome_1\bin

  2. Windows 명령 프롬프트에서 dbupgrade 유틸리티를 실행합니다.

  3. 업그레이드가 완료되면 데이터베이스를 시작하고 다음 명령어를 실행합니다.

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

4단계: 사후 업그레이드 작업

업그레이드가 성공적으로 완료되면 사후 업그레이드 fixup 스크립트를 실행합니다.

d:\ cd d:\app\cfgtoollogs\ABC\preupgrade
sqlplus sys/<password> as sysdba @postupgrade_fixups.sql

4.1단계: 타임존(Time Zone) 업그레이드

사후 업그레이드 fixup 스크립트를 실행한 후, 다음 명령어를 실행하여 타임존을 업그레이드합니다.

sqlplus / as sysdba <<EOF
-- 현재 설정 확인.
SELECT * FROM v$timezone_file;
SHUTDOWN IMMEDIATE;
STARTUP UPGRADE;
-- 최신 버전으로 업그레이드 시작.
SET SERVEROUTPUT ON
DECLARE
l_tz_version PLS_INTEGER;
BEGIN
l_tz_version := DBMS_DST.get_latest_timezone_version;
DBMS_OUTPUT.put_line('l_tz_version=' || l_tz_version);
DBMS_DST.begin_upgrade(l_tz_version);
END;
/
SHUTDOWN IMMEDIATE;
STARTUP;
-- 업그레이드 수행.
SET SERVEROUTPUT ON
DECLARE
l_failures
PLS_INTEGER;
BEGIN
DBMS_DST.upgrade_database(l_failures);
DBMS_OUTPUT.put_line('DBMS_DST.upgrade_database : l_failures=' || l_failures);
DBMS_DST.end_upgrade(l_failures);
DBMS_OUTPUT.put_line('DBMS_DST.end_upgrade : l_failures=' || l_failures);
END;
/
-- 타임존 검증.
SELECT * FROM v$timezone_file;

COLUMN property_name FORMAT A30
COLUMN property_value FORMAT A20

SELECT property_name, property_value
FROM database_properties
WHERE property_name LIKE 'DST_%'
ORDER BY property_name;
exit;
SQL> select TZ_VERSION from registry$database;

TZ_VERSION이 이전 버전으로 표시되면 다음 명령어를 실행합니다.

SQL>update registry$database set TZ_VERSION = (select version FROM v$timezone_file);
SQL>commit;
SQL>select TZ_VERSION from registry$database;
TZ_VERSION
----------
32

4.2단계: 객체 통계 수집

다음 명령어를 실행하여 고정 객체(fixed objects) 통계를 수집합니다.

sqlplus / as sysdba <<EOF
EXECUTE DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
exit;

4.3단계: 딕셔너리 통계 수집

업그레이드 후 다음 문장을 실행하여 딕셔너리 통계를 수집합니다.

EXECUTE DBMS_STATS.GATHER_DICTIONARY_STATS;

4.4단계: 해결된 이슈 검증

utlusts.sql을 실행하여 남아 있는 이슈가 없는지 확인합니다.

d:\app\product\19.0.0\dbhome_1\rdbms\admin\utlusts.sql TEXT

4.5단계: 무효 객체 비교

모든 무효 객체를 2.2단계에서 저장해 둔 목록과 비교하여 일치하는지 확인합니다.

4.6단계: 정리 작업

업그레이드를 완료하려면 다음 단계를 수행합니다.

  1. listener.ora, tnsnames.ora, sqlnet.ora 파일을 Oracle 11g 홈 디렉터리에서 Oracle 19c 홈 디렉터리로 복사하고, oracle_home 파라미터를 그에 맞게 변경합니다.

  2. 이 파일들을 모두 d:\app\product\19.0.0\dbhome_1\network\admin 경로에 배치합니다.

참고: 추후 Oracle Database를 11g로 다운그레이드해야 할 가능성에 대비하려면 compatible=11.2.0.4 설정을 유지하는 것이 좋습니다.

결론

위에서 소개한 단계들을 따르면 Windows 환경에서 Oracle Database 11.2.0.4를 19c로 손쉽게 업그레이드할 수 있습니다.

데이터베이스 서비스에 대해 더 자세히 알아보세요.

피드백 탭을 통해 의견을 남기거나 질문을 보내실 수 있습니다. 언제든지 대화를 시작해 주세요.