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
- Tüm Grid Servislerinin düzgün çalıştığını kontrol ediyoruz.
- OCR, Voting Disk ve Database Backuplarını alıyoruz
- 19c için yeni dizinleri oluşturuyoruz.
- “runcluvfy.sh” scritini çalıştırıp failed adımları kontrol ediyoruz.
- GRID yazılımını install ve upgrade adımlarına geçiyoruz 11g –> 19c
- Upgrade işlemini verify yapıyoruz.
DATABASE UPGRADE
- Upgrade işlemine başlamadan önce Backup alıyoruz.
- 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.
- Database için Install Software Only seçeneğini seçerek kurulum yapıyoruz.
- 19c database içerisindeki Preupgrade.jar scrtiptini çalıştırıyoruz.
- DBUA komutunu ile upgrade işlemini ara yüz üzerinden gerçekleştiriyoruz.
- 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.
[grid@oggtdb1 ~]$ 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.
[root@oggtdb1 ~]# /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;
root@oggtdb2 bin]# pwd
/u01/app/19.0.0/grid/bin
[root@oggtdb2 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.
[grid@oggtdb1 ~]$ cd $GRID_HOME
[grid@oggtdb1 grid]$ pwd
/u01/app/19.0.0/grid
[grid@oggtdb1 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.
[root@oggtdb1 ~]# usermod -a -G dba grid
[root@oggtdb1 ~]# id grid
uid=1000(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54527(asmoper),54528(asmdba),54529(asmadmin),54530(racoper)
[root@oggtdb2 app]# usermod -a -G dba grid
[root@oggtdb2 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.
[oracle@oggtdb1 ~]$ . .bash_profile
[oracle@oggtdb1 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.
[oracle@oggtdb1 ~]$ cd /u01/app/oracle/product/19.0.0.0/db/rdbms/admin/
[oracle@oggtdb1 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
[oracle@oggtdb1 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;
[oracle@oggtdb1 ~]$ . .bash_profile
[oracle@oggtdb1 ~]$ dbua
Eğer dbua komutu çalıştığında upgrade edeceğiniz veritabanı listede görünmüyorsa /etc/oratab
ta vertabanı ekli değildir, buraya veritabanını ekledikten sonra veritabanı dbua
komut arayüzünde görünecektir.
Kontrollerimizi yapalım
[oracle@oggtdb1 ~]$ . .bash_profile
[oracle@oggtdb1 ~]$ 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
[oracle@oggtdb1 ~]$ 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/
Comments (2)
Pramod Sajwansays:
Temmuz 2, 2022 at 4:46 pmhello do you have document to for steps required to separate 2 node RAC dbs and actions required from dba end when linux 6 is upgraded to linux 7 and our db version is 11.2.0.4 as we are preparing for 19c upgrade.
Faruk Çeviksays:
Temmuz 19, 2022 at 2:15 pmUnfortunately, I don’t have a ready-made document to share on this subject, but if you contact me, I can support you in this matter.
y.farukcevik@gmail.com