ORACLE RAC 11.2.0.4 (GIRD, DATABASE)–> 19c UPGRADE

Genel olarak yapılacak adımların listesini aşağıda maddeler halinde çıkarıyorum sonrasında adım adım ilerleyerek örnek bir 11.2.0.4 RAC Database GRID ve DB 19c ye upgrade işlemini gerçekleştireceğiz..

GRID UPGRADE

  1. Tüm Grid Servislerinin düzgün çalıştığını kontrol ediyoruz.
  2. OCR, Voting Disk ve Database Backuplarını alıyoruz
  3. 19c için yeni dizinleri oluşturuyoruz.
  4. “runcluvfy.sh” scritini çalıştırıp failed adımları kontrol ediyoruz.
  5. GRID yazılımını install ve upgrade adımlarına geçiyoruz 11g –> 19c
  6. Upgrade işlemini verify yapıyoruz.

DATABASE UPGRADE

  1. Upgrade işlemine başlamadan önce Backup alıyoruz.
  2. Database Upgrade Pre-check adımlarını gerçekleştiriyoruz.
    • 19c için dizinleri oluşturuyoruz
    • Pre-upgrade durumunu kontrol edip yapılması gereken adım varsa onları gerçekleştiriyoruz.
  3. Database için Install Software Only seçeneğini seçerek kurulum yapıyoruz.
  4. 19c database içerisindeki Preupgrade.jar scrtiptini çalıştırıyoruz.
  5. DBUA komutunu ile upgrade işlemini ara yüz üzerinden gerçekleştiriyoruz.
  6. Database durumunu versiyonunu kontrol ediyoruz.

11g GRID UPGRADE 19c

GRID yazılımının kontrollerini gerçekleştirelim


$ crsctl query crs activeversion

Oracle Clusterware active version on the cluster is [11.2.0.4.0]

$ crsctl check cluster -all

**************************************************************
oggtdb1:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************
oggtdb2:
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
**************************************************************


$ crsctl stat res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       oggtdb1
               ONLINE  ONLINE       oggtdb2
ora.LISTENER.lsnr
               ONLINE  ONLINE       oggtdb1
               ONLINE  ONLINE       oggtdb2
ora.RECO.dg
               ONLINE  ONLINE       oggtdb1
               ONLINE  ONLINE       oggtdb2
ora.asm
               ONLINE  ONLINE       oggtdb1                  Started
               ONLINE  ONLINE       oggtdb2                  Started
ora.gsd
               OFFLINE OFFLINE      oggtdb1
               OFFLINE OFFLINE      oggtdb2
ora.net1.network
               ONLINE  ONLINE       oggtdb1
               ONLINE  ONLINE       oggtdb2
ora.ons
               ONLINE  ONLINE       oggtdb1
               ONLINE  ONLINE       oggtdb2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oggtdb2
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       oggtdb2
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       oggtdb2
ora.cvu
      1        ONLINE  ONLINE       oggtdb2
ora.oc4j
      1        ONLINE  ONLINE       oggtdb2
ora.oggtdb.db
      1        ONLINE  ONLINE       oggtdb1                  Open
      2        ONLINE  ONLINE       oggtdb2                  Open
ora.oggtdb1.vip
      1        ONLINE  ONLINE       oggtdb1
ora.oggtdb2.vip
      1        ONLINE  ONLINE       oggtdb2
ora.scan1.vip
      1        ONLINE  ONLINE       oggtdb2
ora.scan2.vip
      1        ONLINE  ONLINE       oggtdb2
ora.scan3.vip
      1        ONLINE  ONLINE       oggtdb2
xag.gg_orders.goldengate
      1        ONLINE  UNKNOWN      oggtdb1

Database durumunu kontrol edelim

$ srvctl status database -d oggtdb

Instance OGGTDB1 is running on node oggtdb1
Instance OGGTDB2 is running on node oggtdb2

$ srvctl config database -d oggtdb

Database unique name: OGGTDB
Database name: OGGTDB
Oracle home: /u01/app/oracle/product/11.2.0/db
Oracle user: oracle
Spfile: +DATA/OGGTDB/spfileOGGTDB.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: OGGTDB
Database instances: OGGTDB1,OGGTDB2
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Database is administrator managed

OCR Backup alalım

# mkdir -p /u01/ocrbkp
# chown -R oracle:oinstall /u01/ocrbkp/
# cd /u01/app/11.2.0/grid/bin/
# ./ocrconfig -export /u01/ocrbkp/ocrfile

19c GRID yazılımı için bütün nodlarda dizinlerimizi oluşturupğ ilgili sahiplik ve yetkileri verelim sonrasında tek bir noda GRID yazılımı indirerek ederek zipten çıkaralım.

# mkdir -p /u01/app/19.0.0/grid
# chown grid:oinstall -R /u01/app/19.0.0/grid
# chmod 775 -R /u01/app/19.0.0/grid

--Diğer Node içinde yapılır

$ unzip V982068_grid-01.zip

19c GRID yazılımı olan dizin içerisinde

$ ./runcluvfy.sh stage -pre crsinst -upgrade -rolling -src_crshome /u01/app/11.2.0/grid -dest_crshome /u01/app/19.0.0/grid -dest_version 19.0.0.0 -verbose

--Çıktı içerisindeki FAILED durumları giderilmeden upgrade işlemine devam etmiyoruz, adım adım FAILED olan kısımlar halledildi.

Buradaki kontrollerde genel olarak PSU (Patch Set Update) yapılmamışsa bunlar hataya neden olacaktır o yüzden en güncel patchler GRID ve DATABASE için mutlaka yapılmalıdır. Benim Durumunda yapılan PSU patchler ile ilgili yazı aşağıdaki linktedir.

Database durumunu kontrol edelim ve çalışıyor ise Databse duruduralım.

$ srvctl status database -d oggtdb

Instance OGGTDB1 is running on node oggtdb1
Instance OGGTDB2 is running on node oggtdb2

$ srvctl stop database -d oggtdb

$ srvctl status database -d oggtdb

Instance OGGTDB1 is not running on node oggtdb1
Instance OGGTDB2 is not running on node oggtdb2

Şimdi GRID yazılım upgrade işlemine başlayabiliriz.

$ cd /u01/app/19.0.0/grid/
$ ./gridSetup.sh

Burada Disk grupları ile ilgili compatibility miniumum versiyonunun 11.2.0.2.0olması gerektiği ile ilgili bir uyarı alıyoruz.

[[email protected] ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.4.0 Production on Thu May 20 19:29:06 2021

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options


SQL> ALTER DISKGROUP DATA SET ATTRIBUTE 'compatible.asm' = '11.2.0.2.0';

Diskgroup altered.

SQL> ALTER DISKGROUP RECO SET ATTRIBUTE 'compatible.asm' = '11.2.0.2.0';

Diskgroup altered.

Tekrar Check dediğimizde

Disk Group ları ile ilgili hatanın gittiğini görüyoruz diğer hataları ise ignore diyerek devam ediyoruz.

Yukarıda verilen sıra ile nodlarda ilgili scriptleri çalıştırıyoruza. Bir nodda script tamamlanmadan diğer nodda çalıştırmıyoruz.

[[email protected] ~]# /u01/app/19.0.0/grid/rootupgrade.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u01/app/19.0.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The file "dbhome" already exists in /usr/local/bin.  Overwrite it? (y/n)
[n]: y
   Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)
[n]: y
   Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)
[n]: y
…


Successfully taken the backup of node specific configuration in OCR.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.

2021/05/20 20:05:32 CLSRSC-343: Successfully started Oracle Clusterware stack
2021/05/20 20:05:38 CLSRSC-595: Executing upgrade step 17 of 18: 'UpgradeNode'.
2021/05/20 20:05:41 CLSRSC-474: Initiating upgrade of resource types
2021/05/20 20:06:40 CLSRSC-475: Upgrade of resource types successfully initiated.
2021/05/20 20:06:49 CLSRSC-595: Executing upgrade step 18 of 18: 'PostUpgrade'.
2021/05/20 20:06:59 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Grid Versiyonunu kontrol edelim;

[email protected] bin]# pwd

/u01/app/19.0.0/grid/bin
[[email protected] bin]# ./crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [19.0.0.0.0]

DATABASE UPGRADE (11.2.0.4 –> 19.3.0.0)

Bütün nodlarda ilgili dizinleri oluşturalım.

# mkdir -p /u01/app/oracle/product/19.0.0.0/db
# chown oracle:oinstall -R /u01/app/oracle/product/19.0.0.0/db
# chmod 775 -R  /u01/app/oracle/product/19.0.0.0/db

Oluşturduğumuz dizine database yazılımını indirerek, zipten çıkaralım , sonrasından GRID dizininde aşağıdaki scripti çalıştıralım.

[[email protected] ~]$ cd $GRID_HOME
[[email protected] grid]$ pwd

/u01/app/19.0.0/grid
[[email protected] grid]$ ./runcluvfy.sh stage -pre dbinst -upgrade -src_dbhome /u01/app/oracle/product/11.2.0/db -dest_dbhome /u01/app/oracle/product/19.0.0.0/db -dest_version 19.3.0.0 

--Çıktıdaki bazı sorunları aşağıda verdim 
Failures were encountered during execution of CVU verification request "stage -pre dbinst".

Verifying Group Membership: dba ...FAILED
oggtdb2: PRVG-10460 : User "grid" does not belong to group "dba" selected for
         privileges "OSDBA" on node "oggtdb2".

oggtdb1: PRVG-10460 : User "grid" does not belong to group "dba" selected for
         privileges "OSDBA" on node "oggtdb1".

Yukarıdaki scripte çıkan sorunları gideriyoruz. Benim durumumda grid OS kullanıcısını dba grubuna eklemek sorunu çözecektir.

[[email protected] ~]# usermod -a -G dba grid
[[email protected] ~]# id grid
uid=1000(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54527(asmoper),54528(asmdba),54529(asmadmin),54530(racoper)


[[email protected] app]# usermod -a -G dba grid
[[email protected] app]# id grid
uid=1000(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54527(asmoper),54528(asmdba),54529(asmadmin),54530(racoper)

Yeni veritabanı için ortam değişkenlerini bash_profile dosyasında değiştiriuyorum, eski db için ise 11gsrc adında ortam değişkeni set etmek için bir dosya oluşturuyorum. Yeni bash_profile dosyası aşağıdaki gibidir.

# .bash_profile

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=oggtdb1.ttnet.com; export ORACLE_HOSTNAME
ORACLE_UNQNAME=OGGTDB; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
GRID_HOME=/u01/app/19.0.0/grid; export GRID_HOME
DB_HOME=$ORACLE_BASE/product/19.0.0.0/db; export DB_HOME
ORACLE_HOME=$DB_HOME; export ORACLE_HOME
ORACLE_SID=OGGTDB1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
BASE_PATH=/usr/sbin:$PATH; export BASE_PATH
PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/OPatch:$BASE_PATH; export PATH
export OGG_HOME=/u01/ogg/oggdir
export PATH=$ORACLE_HOME/bin:$OGG_HOME:$BASE_PATH
export TNS_ADMIN=/u01/app/oracle/product/11.2.0.4/db/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LD_LIBRARY_PATH=${OGG_HOME}lib:${LD_LIBRARY_PATH}
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

Şimdi yeni değişkenleri set ederek Yeni veritabanı yazılımızı software install seçeneği ile kurulumunu gerçekleştiriyoruz.

[[email protected] ~]$ . .bash_profile
[[email protected] db]$ ./runInstaller

Kurulum tamamlandıktan sonra 11g ortam değişkenlerini sen edelim sonrasında database çalışıyor mu? kontrol edelim. Eski database ortam değişkenleri ile yeni database lokasyonunda Preupgrade.jar scriptini çalıştıralım.

[[email protected] ~]$ cd /u01/app/oracle/product/19.0.0.0/db/rdbms/admin/

[[email protected] admin]$ java -jar preupgrade.jar
==================
PREUPGRADE SUMMARY
==================
  /u01/app/oracle/cfgtoollogs/OGGTDB/preupgrade/preupgrade.log
  /u01/app/oracle/cfgtoollogs/OGGTDB/preupgrade/preupgrade_fixups.sql
  /u01/app/oracle/cfgtoollogs/OGGTDB/preupgrade/postupgrade_fixups.sql

Execute fixup scripts as indicated below:

Before upgrade:

Log into the database and execute the preupgrade fixups
@/u01/app/oracle/cfgtoollogs/OGGTDB/preupgrade/preupgrade_fixups.sql

After the upgrade:

Log into the database and execute the postupgrade fixups
@/u01/app/oracle/cfgtoollogs/OGGTDB/preupgrade/postupgrade_fixups.sql

Preupgrade complete: 2021-05-21T12:46:13

[[email protected] admin]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri May 21 12:46:43 2021

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> @/u01/app/oracle/cfgtoollogs/OGGTDB/preupgrade/preupgrade_fixups.sql

Executing Oracle PRE-Upgrade Fixup Script

Auto-Generated by:       Oracle Preupgrade Script
                         Version: 19.0.0.0.0 Build: 1
Generated on:            2021-05-21 12:46:09

For Source Database:     OGGTDB
Source Database Version: 11.2.0.4.0
For Upgrade to Version:  19.0.0.0.0

Preup                             Preupgrade
Action                            Issue Is
Number  Preupgrade Check Name     Remedied    Further DBA Action
------  ------------------------  ----------  --------------------------------
    1.  parameter_min_val         NO          Manual fixup recommended.
    2.  em_present                NO          Manual fixup recommended.
    3.  invalid_objects_exist     NO          Manual fixup recommended.
    4.  amd_exists                NO          Manual fixup recommended.
    5.  jvm_mitigation_patch      YES         None.
    6.  apex_manual_upgrade       NO          Manual fixup recommended.
    7.  mv_refresh                NO          Informational only.
                                              Further action is optional.
    8.  hidden_params             NO          Informational only.
                                              Further action is optional.
    9.  dictionary_stats          YES         None.
   10.  trgowner_no_admndbtrg     YES         None.
   11.  mv_refresh                NO          Informational only.
                                              Further action is optional.
   12.  pre_fixed_objects         YES         None.
   13.  tablespaces_info          NO          Informational only.
                                              Further action is optional.
   14.  exf_rul_exists            NO          Informational only.
                                              Further action is optional.
   15.  min_archive_dest_size     NO          Informational only.
                                              Further action is optional.
   16.  rman_recovery_version     NO          Informational only.
                                              Further action is optional.

The fixup scripts have been run and resolved what they can. However,
there are still issues originally identified by the preupgrade that
have not been remedied and are still present in the database.
Depending on the severity of the specific issue, and the nature of
the issue itself, that could mean that your database is not ready
for upgrade.  To resolve the outstanding issues, start by reviewing
the preupgrade_fixups.sql and searching it for the name of
the failed CHECK NAME or Preupgrade Action Number listed above.
There you will find the original corresponding diagnostic message
from the preupgrade which explains in more detail what still needs
to be done.

PL/SQL procedure successfully completed.

DBUA ile Database Upgrade işlemine başlayalım

[[email protected] ~]$ . .bash_profile
[[email protected] ~]$ dbua

Kontrollerimizi yapalım

[[email protected] ~]$ . .bash_profile
[[email protected] ~]$ srvctl config database -d oggtdb
Database unique name: OGGTDB
Database name: OGGTDB
Oracle home: /u01/app/oracle/product/19.0.0.0/db
Oracle user: oracle
Spfile: +DATA/oggtdb/spfileoggtdb.ora
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: oper
OSOPER group: oper
Database instances: OGGTDB1,OGGTDB2
Configured nodes: oggtdb1,oggtdb2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed

[[email protected] ~]$ srvctl status database -d oggtdb
Instance OGGTDB1 is running on node oggtdb1
Instance OGGTDB2 is running on node oggtdb2

Upgrade işlemimiz başarılı bir şekilde tamamlandı. Burada invalid objeleri recompile ederken hata aldık bunu el yordamı ile yapmamız gerekecek, bunula ilgili yazımızda bu işlem anlatılmaktadır. https://www.farukcevik.com.tr/invalid-objelerin-derlenmesi-invalid-objects-recompile/