Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

การอัปเกรด Oracle 11.2 เป็น 19c บน Windows แบบราบรื่น – ส่วนที่ 2

บทนำ

Oracle® 19c Database เป็นรุ่นล่าสุดของฐานข้อมูลอัตโนมัติที่แพร่หลายในตลาดและองค์กร ความเสถียรเป็นองค์ประกอบสำคัญของ Oracle Database 19c ซึ่งเป็นส่วนหนึ่งของครอบครัวผลิตภัณฑ์ Oracle Database 12c (Release 12.2) ในชุดบทความ 2 ส่วนนี้ จะครอบคลุมการติดตั้งและอัปเกรดรุ่น 19c

บทนำ

ส่วนนี้ของชุดบทความ 2 ส่วน เน้นการอัปเกรด Oracle Database จาก 11.2.0.4 เป็น 19c ใน Windows® วิธีการด้วยตนเองนี้ไม่ใช้ Database Upgrade Assistant (DBUA)

สำหรับขั้นตอนการติดตั้ง โปรดดูจาก ส่วนที่หนึ่ง ของชุดบทความนี้ ผมได้ติดตั้งไบนารีไว้ที่ Oracle home directory คือ ORACLE_HOME=d:\app\product\19.0.0\dbhome_1

ใช้ขั้นตอนต่อไปนี้เพื่ออัปเกรด Oracle Database เป็น 19c:

หมายเหตุ: ควรมีการสำรองข้อมูลที่ถูกต้องก่อนอัปเกรด เพื่อป้องกันกรณีที่เกิดปัญหาในระหว่างกระบวนการอัปเกรด

ขั้นตอนที่ 1: จัดเตรียมไฟล์ติดตั้ง

จัดเตรียมไฟล์ติดตั้ง Relational Database Management System (RDBMS) รุ่น 19.3 เพื่อให้สามารถดำเนินการอัปเกรดต่อได้

ขั้นตอนที่ 2: ขั้นตอนก่อนอัปเกรด

รันขั้นตอนต่อไปนี้เพื่อดำเนินการก่อนอัปเกรดให้เสร็จสมบูรณ์:

ขั้นตอนที่ 2.0: การเตรียมการ

  1. ดาวน์โหลด Oracle Database Pre-Upgrade Utility โดยใช้ Metalink Note 884522.1 เพื่อรันเครื่องมือ pre-upgrade ใช้คำสั่งต่อไปนี้:

    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 ทบทวนไฟล์ log pre-upgrade และแก้ไขข้อผิดพลาดใดๆ

  3. สามารถรันสคริปト pre-upgrade fixups สำหรับทุกส่วนที่มี AUTOFIXUP ใน log ตัวอย่างเช่น เพื่อรัน d:\app\cfgtoollogs\ABC\preupgrade\preupgrade_fixups.sql ให้รันคำสั่ง:

    cd d:
    cd d:\app\cfgtoollogs\ABC\preupgrade
    sqlplus sys/ 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: ลบออบเจ็กต์ที่ไม่ถูกต้อง

รันสคริปต์ utlrp.sql จาก SQL Plus เพื่อคอมไพล์ออบเจ็กต์ที่ไม่ถูกต้อง ตรวจสอบให้แน่ใจว่าไม่มีออบเจ็กต์ที่ไม่ถูกต้องเหลืออยู่ใน sys/system schema บันทึกออบเจ็กต์ที่ไม่ถูกต้องอื่นๆ ไว้ในตารางแยก เพื่อเปรียบเทียบในขั้นตอนหลังอัปเกรดภายหลัง

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

ขั้นตอนที่ 2.3: ลบ EM repository

ลบ EM repository โดยใช้ขั้นตอนต่อไปนี้:

คัดลอกสคริปต์ emremove.sql จาก 19c home ไปยัง 11g home:

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 catalog

ลบ OLAP catalog โดยใช้ขั้นตอนต่อไปนี้:

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: รวบรวมสถิติ Dictionary

รวบรวมสถิติ Dictionary โดยใช้คำสั่งต่อไปนี้:

EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

รันเครื่องมือ pre-upgrade อีกครั้งเพื่อยืนยันว่าทุกอย่างพร้อมแล้ว

ขั้นตอนที่ 3.0: ขั้นตอนอัปเกรด

รันขั้นตอนอัปเกรดต่อไปนี้เพื่อดำเนินการอัปเกรด:

ขั้นตอนที่ 3.1: ดำเนินการอัปเกรด

รันขั้นตอนต่อไปนี้เพื่ออัปเกรด:

  1. ปิด Oracle 11g Database

  2. หลังจากปิด Oracle Database แล้ว เปิด CMD ด้วยสิทธิ์แอดมิน และลบ Windows services ทั้งหมดของ Oracle 11g โดยรันขั้นตอนต่อไปนี้จาก command prompt:

    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 service โดยรันคำสั่งต่อไปนี้:

    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 services แล้ว ให้เริ่มต้น services

ขั้นตอนที่ 3.2: เริ่มต้น Oracle Database

เริ่มต้น Oracle Database จากสภาพแวดล้อม 19C ในโหมดอัปเกรด

หลังจาก Oracle Database เริ่มต้นในโหมดอัปเกรดแล้ว ให้ดำเนินขั้นตอนต่อไปนี้:

  1. รันคำสั่งต่อไปนี้:

    cd d:\app\product\19.0.0\dbhome_1\bin
  2. รันยูทิลิตี้ dbupgrade จาก Windows command prompt

  3. หลังจากอัปเกรดเสร็จสิ้น ให้เริ่มต้นฐานข้อมูลและรันคำสั่งต่อไปนี้:

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

ขั้นตอนที่ 4.0: ขั้นตอนหลังอัปเกรด

หากอัปเกรดสำเร็จ ให้รันสคริปต์ post-upgrade fixup:

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

ขั้นตอนที่ 4.1: อัปเกรด Time Zone

หลังจากรันสคริปต์ post-upgrade fixup แล้ว ให้รันคำสั่งต่อไปนี้เพื่ออัปเกรด time zone:

sqlplus / as sysdba <<EOF
-- Check current settings.
SELECT * FROM v$timezone_file;
SHUTDOWN IMMEDIATE;
STARTUP UPGRADE;
-- Begin upgrade to the latest version.
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;
-- Do the upgrade.
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;
/
-- Validate time zone.
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 object โดยรันคำสั่งต่อไปนี้:

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

ขั้นตอนที่ 4.3: รวบรวมสถิติ Dictionary

รวบรวมสถิติ dictionary หลังอัปเกรดโดยรันคำสั่งต่อไปนี้:

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 home directory ไปยัง Oracle 19c Oracle home directory และเปลี่ยนพารามิเตอร์ oracle_home ให้เหมาะสม

  2. วางไฟล์ทั้งหมดไว้ที่ d:\app\product\19.0.0\dbhome_1\network\admin

หมายเหตุ: รักษา compatible=11.2.0.4 ไว้ เพื่อกรณีที่ต้องดาวน์เกรด Oracle Database กลับเป็น 11g

สรุป

ขั้นตอนที่กล่าวมาข้างต้นจะช่วยให้คุณอัปเกรด Oracle Database ใน Windows รุ่น 11.2.0.4 เป็น 19c ได้อย่างง่ายดาย

เรียนรู้เพิ่มเติมเกี่ยวกับบริการฐานข้อมูลของเรา

ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถเริ่มสนทนากับเราได้