суббота, 25 февраля 2017 г.

Upgrade 10gR2 RAC to 11gR2

Upgrade Clusterware

raclinux1
raclinux2

10g
/u01/app/oracle/product/10.2.0/crs
/u01/app/oracle/product/10.2.0/asm
/u01/app/oracle/product/10.2.0/db_1

11g
/u01/app/11.2.0/grid
/u01/app/oracle/product/11.2.0/db_1

Устанавливаем параметры ядра
Устанавливаем packages required on Linux

/stage/grid/.runcluvfy.sh stage -pre crsinst -n raclinux1,raclinux2 -fixup -fixupdir -verbose

Шаги Upgrade

crsctl query crs activeversion
crsctl query crs softwareversion

./crs_stat.sh

clusterware up и running на каждой ноде

Запускаем

из архива grid software 11gR2 на первом узле (node1)

./runInstaller.sh

Yes
Выбираем обе (или все ноды)  Next

Вводим

Имя SCAN   : rac_cluster
SCAN port  : 1621

Вводим пароль ASMSNMP
Next Next Next

Из под root выполним на каждой ноде

/u01/app/11.2.0/grid/rootupgrade.sh

и проверим версии

crsctl query crs activeversion
crsctl query crs softwareversion

Проверим статус стека

crsctl check crs

./crs_stat.sh


Если вы не выбирали опцию ASM upgrade во время Clusterware Upgrade, то:

export ASMCA_ROLLING_UPGRADE=true

из GRID_HOME/bin
./asmca

После upgrade ASM

upgrade database используя DBUA или manual


DOWNGRADING Oracle Clusterware

из под root

/u01/app/11.2.0/grid/crs/install/rootcrs.pl -downgrade [-force]

или так

/u01/app/11.2.0/grid/crs/install/rootcrs.pl -downgrade -lastnode
-oldcrshome /u01/app/oracle/product/11.1.0/crs -version 11.1.0.6.0 [-force]

и выполнить скрипт

root.sh





RAC upgrade 11202 -> 12101

root@rac1# su - grid

grid@rac1$ which crsctl

grid@rac1$ env | grep -i ora

grid@rac1$ crsctl status res -t

grid@rac1$ ocrcheck

grid@rac1$ su - oracle

oracle@rac1$ env | grep -i ora

oracle@rac1$ crsctl status database -d orcl

oracle@rac1$ su -

root@rac1# cd /u01/app/11.2.0/grid/bin/

root@rac1# ocrcheck

root@rac1# crsctl query css votedisk

root@rac1# crsctl query crs activeversion

root@rac1# crsctl query crs softwareversion

root@rac1# su - grid

grid@rac1$ cd /mnt/software/db12101/grid

grid@rac1$ ./runcluvfy.sh stage -pre crsinst -upgrade -n rac1,rac2,rac3 -rolling
-src_crshome /u01/app/11.2.0/grid  -dest_crshome /u01/app/12.1.0/grid
-dest_version 12.1.0.1.0  -fixup -verbose


На всех нодах выполнить из под root скрипт
runfixup.sh

root@rac1# /tmp/CVU_12.1.0.1.0_grid/runfixup.sh
root@rac2# /tmp/CVU_12.1.0.1.0_grid/runfixup.sh
root@rac3# /tmp/CVU_12.1.0.1.0_grid/runfixup.sh

На всех нодах подготовим структуру каталогов

root@rac1# mkdir -p /u01/app/12.1.0/grid
root@rac1# chown -R grid:oinstall /u01/app/12.1.0/grid
root@rac1# chown -R 775 /u01/app/12.1.0
root@rac1# chown -R grid:oinstall /u01/app/12.1.0/

root@rac2# mkdir -p /u01/app/12.1.0/grid
root@rac2# chown -R grid:oinstall /u01/app/12.1.0/grid
root@rac2# chown -R 775 /u01/app/12.1.0
root@rac2# chown -R grid:oinstall /u01/app/12.1.0/

root@rac3# mkdir -p /u01/app/12.1.0/grid
root@rac3# chown -R grid:oinstall /u01/app/12.1.0/grid
root@rac3# chown -R 775 /u01/app/12.1.0
root@rac3# chown -R grid:oinstall /u01/app/12.1.0/



Cluster Upgrade Compatibility Matrix
Oracle 10gR1 (10.1.0.5) Direct upgrade possible
Oracle 10gR2 (10.2.0.3) Direct upgrade possible
Oracle 11gR1 (11.1.0.6) Direct upgrade possible
Oracle 11gR2 (11.2.0.2) Direct upgrade possible: patch set 11.2.0.2.3 (PSU 3)



Под пользователем grid и графике запускаем инсталляцию новой версии gridinfrastructure

grid@rac1$ unset ORACLE_HOME ORA_CRS_HOME TNS_ADMIN ORA_NLS10 ORACLE_HOME

grid@rac1$ cd  /stage/db1210/grid
grid@rac1$ ./runInstaller

* Skip software updates
* Upgrade Oracle Grid Infra or Oracle ASM
next

Select preferred language
Select all nodes

Configure Grid Infrastructure Management Repository
* Yes

Set Groups Operating System


Specify installation Location:

Oracle base:  /u01/app/oracle
Software Location: /u01/app/12.1.0/grid_1

Далее есть возможность выбрать автоматическое выполнение скрипта от root на всех нодах
Можно это и не выбирать и потом вручную выполнить скрипты

Automaticaly run configuration scripts

Также можно ноды разбить на batch-и по три ноды наодин batch и выполнить скрипт последовательно
для каждого отдельного batch

next

Далее установщик выполняет предварительные проверки
Исправляем недостатки и переходим к следующим шагам
Next


Увидим сообщение:
To execute the configuration script.

Проверяем версию Clusterware

grid@rac1$ ./crsctl query crsactiveversion
Oracle Clusterware active version on the cluster is [11.2.0.3.0]

grid@rac1$ ./crsctl query crssoftwareversion
Oracle Clusterware version on node [rac1] is [12.1.0.0.2]


Выполним скрипты от root на всех нодах:
root@rac1# /u01/app/12.1.0/grid_1/rootupgrade.sh
root@rac2# /u01/app/12.1.0/grid_1/rootupgrade.sh
root@rac3# /u01/app/12.1.0/grid_1/rootupgrade.sh


Снова проверяем версию Clusterware

$ ./crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [12.1.0.0.2]
$ ./crsctl query crs softwareversion
Oracle Clusterware version on node [rac1] is [12.1.0.0.2]


Post-Upgrade Tasks

Проверяем:

oracle@rac1$ ps -ef | grep d.bin

grid@rac1$ ./crsctl stat res -t -init




Initiating Downgrade Procedure

Для отката на предыдущую версию выполнить:

grid@rac1$ $GRID_HOME/crs/install/rootcrs.pl –downgrade

Или так:

grid@rac1$ $GRID_HOME/crs/install/rootcrs.pl –downgrade -force


И на всех нодах выполнить :

grid@rac1$ $GRID_HOME/crs/install/rootcrs.pl –downgrade -lastnode
grid@rac1$ cd $GRID_HOME/oui/bin
grid@rac1$ ./runInstaller -nowait -waitforcompletion -ignoreSysPrereqs -updateNodeList -silent CRS=false ORACLE_HOME=/u01/app/12.1.0/grid
grid@rac1$ ./runInstaller -nowait -waitforcompletion -ignoreSysPrereqs -updateNodeList -silent CRS=false ORACLE_HOME=/u01/app/11.2.0/grid

grid@rac2$ $GRID_HOME/crs/install/rootcrs.pl –downgrade -lastnode
grid@rac2$ cd $GRID_HOME/oui/bin
grid@rac2$ ./runInstaller -nowait -waitforcompletion -ignoreSysPrereqs -updateNodeList -silent CRS=false ORACLE_HOME=/u01/app/12.1.0/grid
grid@rac2$ ./runInstaller -nowait -waitforcompletion -ignoreSysPrereqs -updateNodeList -silent CRS=false ORACLE_HOME=/u01/app/11.2.0/grid

grid@rac3$ $GRID_HOME/crs/install/rootcrs.pl –downgrade -lastnode
grid@rac3$ cd $GRID_HOME/oui/bin
grid@rac3$ ./runInstaller -nowait -waitforcompletion -ignoreSysPrereqs -updateNodeList -silent CRS=false ORACLE_HOME=/u01/app/12.1.0/grid
grid@rac3$ ./runInstaller -nowait -waitforcompletion -ignoreSysPrereqs -updateNodeList -silent CRS=false ORACLE_HOME=/u01/app/11.2.0/grid


Если откатываемся на версию более раннюю чем 11gR2
то необходимо на каждой ноде выполнить от root скрипт root.sh




Forcing Upgrade—When Some Nodes Are Inaccessible

Если некоторые узлы при апгрейде недоступны то используйте:

/u01/app/12.1.0/grid/rootupgrade –force

Узел, недоступный в период принудительного апгрейда, в дальнейшем можно будет присоединить к кластеру так:

$/u01/app/12.1.0/grid/crs/install/rootcrs.pl –join –existingNode rac1 upgrade_node rac2




Installing Oracle 12c RDBMS Software
* Install database software only


Database Upgrade Compatibility Matrix
Direct Database Upgrade         Indirect Database Upgrade
10.2.0.5                                    9.2.0.8 or earlier       
11.1.0.7                                    10.1.0.5                 
11.2.0.2 or later                       10.2.0.2,10.0.2.3,10.0.2.4
                                                11.1.0.6                 
                                                11.2.0.1                 


Deploying Manual Database Upgrade
export ORACLE_SID=PRDDB1
SQL> sqlplus / as sysdba
SQL> @/u01/app/oracle/product/12.0.1/rdbms/admin/preupgrd.sql


Смотрим логи и fixup-скрипты тут:

$ORACLE_BASE/cfgtoolslogs/PRDDB/preupgrade

Если не задана  $ORACLE_BASE то тут:

$ORACLE_HOME/cfgtoolslogs/PRDDB/preupgrade


$cp /u01/app/oracle/product/11.2.0/db_1/dbs/orapwPRDDB1 /u01/app/oracle/product/12.1.0/db_1/dbs

При необходимости выполните скрипт  preupgrade_fixups.sql
Для ускорения можно перевести базу в режим  NOARCHIVELOG;

srvctl stop database –d PRDDB
export ORACLE_SID=PRDDB1
sqplus / as sysdba
SQL> STARTUP MOUNT
SQL> ALTER DATABASE NOARCHIVELOG;
SQL> ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE;


Установим новые переменные окружения:

export ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
cd $ORACLE_HOME

И запустим Upgrade:

SQL> CONNECT / AS SYSDBA
SQL> STARTUP UPGRADE
SQL> exit

И запускаем upgrade в параллельном режиме:

$/u01/app/oracle/product/12.0.1/db_1/perl/bin/perl catctl.pl –n 2 –l /tmp catupgrd.sql

А можно и по старинке выполнить upgrade в последовательном режиме:
SQL>@?/rdbms/admin/catupgrd.sql parallel=no

После выполнения предыдущей команды БД будет остановлена в состоянии shutdown.

Дальнейшие шаги такие:

SQL> STARTUP MOUNT
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE;
SQL> ALTER SYSTEM SET COMPATIBLE=12.1.0 scope=spfile;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTU

SQL> execute dbms_stats.gather_fixed_objects_stats;
SQL> @/u01/app/oracle/prdoduct/12.1.0/rdbms/admin/utlrp.sql
SQL> @/u01/app/oracle/product/12.1.0/rdbms/admin/utlobj.sql
SQL> @/u01/app/oracle/product/12.1.0/rdbms/admin/utlu121s.sql
SQL> SHUTDOWN IMMEDIATE;
SQL> EXIT

utlrp.sql recomiples all invalid objects on the database
ultobj.sql verfies the validity of all packages/classes on the database
utlu121s.sql displays database upgrade summary


Обновим сведения в OCR:

srvctl upgrade database –d PRODB –o /u01/app/oracle/product/12.1.0/db_1


Запускаем базу:

srvctl start database –d PRODB


Post-Database Upgrade Steps:

Run the postupgrade_fixups.sql

Back up the database

Also migrate the source database listener to Oracle 12 by dropping and re-creating the existing listener

Adjust any RMAN backups, cron tab or other scripts, environment, profile variables, etc.,
to reflect the new Oracle Home settings

Ensure that the database points to the new Oracle Home in the oratab file

Adjust the ATTRIBUTE 'compatible.asm'='12.1' to the ASM diskgroups to make use of new
ASM features

Verify database configuration details with the following:
$ ./srvctl config database –d PRODB



Обновление данных с временной зоной

Если версии файлов временных зон новой базы новее версии в исходной базе, то после обновления базы данных
на версию Oracle Database 12c Release 1 потребуется обновить данные с типами данных, содержащих временную зону.
Если версии файлов временных зон новой базы старее версии в исходной базе, то перед проведением обновления
следует установить обновления для временных зон базы данных.

Для обновления данных после установки обновления рекомендуется использовать скрипт
 DBMS_DST_SCRIPTSV1.9.zip.

Данный скрипт доступен на сайте поддержки
My Oracle Support статья «Scripts to automatically update the RDBMS DST (timezone) version in an 11gR2 or 12cR1 database.
(Doc ID 1585343.1)».

Получить версию файлов временной зоны можно обратившись к представлению V$TIMEZONE_FILE.

Пример:

SQL> select * from v$timezone_file ;
FILENAME VERSION
-------------------- ---------
timezlrg_14.dat      14

Рекомендуется придерживаться следующей последовательности при обновлении данных:
Скопируйте архив DBMS_DST_SCRIPTSV1.9.zip на сервер базы данных и разархивируйте его в подкаталоге.

Архив содержит следующие файлы:

countstarTSTZ.sql
countstatsTSTZ.sql
upg_tzv_apply.sql
upg_tzv_check.sql

Выполните скрипт для подсчёта количества обновляемых данных:

SQL> spool countstatsTSTZ.log
SQL> @countstatsTSTZ.sql
SQL> spool off

Следующий скрипт определяет предыдущую временную зону и подготавливает данные для обновления данных временной зоны:

SQL> spool upg_tzv_check.log
SQL> @upg_tzv_check.sql
SQL> spool off

Выполните скрипт для обновления данных:

SQL> spool upg_tzv_apply.log
SQL> @upg_tzv_apply.sql
SQL> spool off

При выполнении обновления дважды производится рестарт базы данных.


Database Downgrade

Perform the current database full backup.

Disable the database vault, if it exists.

Ensure that the database COMPATIBLE initialization parameter is set to the Database version that supports a
direct upgrade.

Drop the sysman user if OEM is configured. You will have to reconfigure the OEM after you finish the downgrade
process.

Disable the CLUSTER_DATABASE initialization parameter, and stop the database as follows:

export ORACLE_SID=PRDDB1

SQL> sqlplus / as sysdba
SQL> alter system set cluster_database=false scope=spfile;
srvctl stop database –d PRDDB


Enable the CLUSTER_DATABASE parameter, and shut down and start up the database.

SQL> ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP

Recompile all invalid objects running the utlrp.sql script.

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

Downgrade the database version in the OCR using the srvctl downgrade command from the Oracle 12c database home.
srvctl downgrade database –d PRDDB –o /u01/app/oracle/product/11.2.0/db_1 –to_version 11.2.0.3.0