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
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
Шаги 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