Показаны сообщения с ярлыком Patch. Показать все сообщения
Показаны сообщения с ярлыком Patch. Показать все сообщения

воскресенье, 5 марта 2017 г.

Утилита OPatch

Утилита OPatch

Установим переменную окружения
# export PATH=$PATH:/OPatch

Установка патча в GI home и все  Oracle RAC database homes одинаковой версии:
# opatchauto apply /stage/PSUpatch/22899531 -ocmrf < ocm response file >

Установить патч только для GI home:
# opatchauto apply /stage/PSUpatch/22899531 -oh < GI_HOME > -ocmrf < ocm response file >

Установка патча в одну или несколько Oracle RAC database homes:
# opatchauto apply /stage/PSUpatch/22899531 -oh < oracle_home1_path >, < oracle_home2_path > -ocmrf < ocm response file >

Откат патча из GI home and и каждого Oracle RAC database home:
# opatchauto rollback /stage/PSUpatch/22899531

Откат патча только для GI home:
# opatchauto rollback /stage/PSUpatch/22899531 -oh < GI_HOME >

Откат патча из одного или нескольких Oracle RAC database home:
# opatchauto rollback /stage/PSUpatch/22899531 -oh < oracle_home1_path >, < oracle_home2_path >


При использовании OPatch 12.2.0.1.5 или выше опцию -ocmrf < ocm response file > больше не нужно использовать и < ocm response file > не нужно создавать


# export PATH=$PATH:< GI_HOME >/OPatch

Чтобы пропатчить GI home и все Oracle RAC database homes Oracle RAC той же версии:
# opatchauto apply < UNZIPPED_PATCH_LOCATION >/27010930

Для патча только GI home:
# opatchauto apply < UNZIPPED_PATCH_LOCATION >/27010930 -oh < GI_HOME >

Для патча одного или нескольких Oracle RAC database homes:
# opatchauto apply < UNZIPPED_PATCH_LOCATION >/27010930 -oh < oracle_home1_path >, < oracle_home2_path >

Откат патча из GI home и каждого Oracle RAC database home:
# opatchauto rollback < UNZIPPED_PATCH_LOCATION >/27010930

Откат патча из GI home:
# opatchauto rollback < UNZIPPED_PATCH_LOCATION >/27010930 -oh < path to GI home > 

Откат патча из Oracle RAC database home:
# opatchauto rollback < UNZIPPED_PATCH_LOCATION >/27010930 -oh < oracle_home1_path >,< oracle_home2_path >

Для получения дополнительной информации о opatchauto см. Руководство пользователя Oracle® OPatch.


Перед установкой PSU нужно проапдейтить OPATCH utility во всех HOME

$ unzip p6880880_121010_LINUX.zip -d /u01/app/oracle/product/12.1.0/db_1
$ /u01/app/oracle/product/12.1.0/db_1/OPatch/opatch version

$ unzip p6880880_121010_LINUX.zip -d /u01/app/oracle/12.1.0.2/grid
$ /u01/app/oracle/12.1.0.2/grid/OPatch/opatch version


Если при установке PSU хотим использовать opatchauto, то необходимо создать ocm.rsp  файл:

$ export ORACLE_HOME=/u01/app/oracle/12.1.0.2/grid
$ $ORACLE_HOME/OPatch/ocm/bin/emocmrsp -no_banner -output /stage/ocm.rsp

Ответы: ENTER
        Y

И проверить валидность Oracle Inventory:

$ /u01/app/oracle/product/12.1.0/db_1/OPatch/opatch lsinventory -detail -oh /u01/app/oracle/product/12.1.0/db_1

$ /u01/app/oracle/12.1.0.2/grid/OPatch/opatch lsinventory -detail -oh /u01/app/oracle/12.1.0.2/grid



Хотим установить PSU /stage/PSUpatch/22899531
Распаковываем его:


$ mkdir /stage/PSUpatch
$ cp /stage/p22899531_121020_Linux-x86-64.zip /stage/PSUpatch
$ cd /stage/PSUpatch
$ unzip p22899531_121020_.zip


С какими патчами он будет конфликтовать ?

Из под root запускаем:

/u01/app/oracle/12.1.0.2/grid/OPatch/opatchauto apply /stage/PSUpatch/22899531 -analyze -ocmrf /stage/ocm.rsp

И если уже есть установленные патчи, то нам будет предложено их откатить.

Откатить конкретный патч из конкретного HOME можно так:


opatch rollback -id 2143694 -local -oh /u01/app/oracle/12.1.0.2/grid

Перед откатом некоротых патчей необходимо завершить работу has

Из под root запускаем:


/u01/app/oracle/12.1.0.2/grid/bin/crsctl stop has -f


Если анализ конфликтов завершается fail,  то

Из под root запускаем:


$ORA_GI_HOME/crs/install/roothas.pl –postpatch

И повторяем попытку:
/u01/app/oracle/12.1.0.2/grid/OPatch/opatchauto apply /stage/PSUpatch/22899531 -analyze -ocmrf /stage/ocm.rsp


Проверить достаточно ли свободного дискового пространства, для установки PSU можно так:
/u01/app/oracle/12.1.0.2/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /stage/PSUpatch/22899531/22899531/22806133
/u01/app/oracle/12.1.0.2/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /stage/PSUpatch/22899531/22899531/23006522


Следующая команда установит PSU 22899531 в GRID_HOME  и во все RDBMS_HOME информацию о доступных HOME берется из Oracle Inventory

# /u01/app/oracle/12.1.0.2/grid/OPatch/opatchauto apply /stage/PSUpatch/22899531 -ocmrf /stage/ocm.rsp


Проверим Oracle Inventory:
$ /u01/app/oracle/product/12.1.0/db_1/OPatch/opatch lsinventory -detail -oh /u01/app/oracle/product/12.1.0/db_1

$ /u01/app/oracle/12.1.0.2/grid/OPatch/opatch lsinventory -detail -oh /u01/app/oracle/12.1.0.2/grid


После установки PSU:
Loading Modified SQL Files into the Database:


$ sqlplus /nolog
SQL> Connect / as sysdba
SQL> startup
SQL> quit

$ cd $ORACLE_HOME/OPatch
$ ./datapatch -verbose


Check for the list of patches applied to the database.

SQL> select action_time, patch_id, patch_uid, version, status, bundle_series, description
     from dba_registry_sqlpatch;



Пример установки PSU для  Grid Home и  DB Home (Oracle Restart Configure)


Patch 22191577 - Oracle Grid Infrastructure Patch Set Update 11.2.0.4.160119 (Jan2016) (Includes Database PSU 11.2.0.4.160119)
21948347 DB_PSU 11.2.0.4.160119 (INCLUDES CPUJAN2016) Both DB Homes and Grid Home
21948348 OCW_PSU 11.2.0.4.160119 Both DB Homes and Grid Home
21948355 ACFS_PSU 11.2.0.4.160119 Only Grid Home


Установить последнюю версию утилиты OPatch (патч 6880880) во все $ORACLE_HOME.


GRID_HOME
su - root
chown oracle:oinstall /u01/app/grid/product/11.2.0.4
su – oracle
$ . oraenv
cd /u01/distrib/11.2.0.4/PSU/160119
cp p6880880_112000_Linux-x86-64.Opatch_11.2.0.3.12.zip $ORACLE_HOME
cd $ORACLE_HOME
mv OPatch OPatch.old
unzip p6880880_112000_Linux-x86-64.Opatch_11.2.0.3.12.zip
$ORACLE_HOME/OPatch/opatch version

DB_HOME
su – oracle
$ . oraenv
cd /u01/distrib/11.2.0.4/PSU/160119
cp p6880880_112000_Linux-x86-64.Opatch_11.2.0.3.12.zip $ORACLE_HOME
cd $ORACLE_HOME
mv OPatch OPatch.old
unzip p6880880_112000_Linux-x86-64.Opatch_11.2.0.3.12.zip
$ORACLE_HOME/OPatch/opatch version

Создать файл unconfig.rsp во всех $ORACLE_HOME

GRID_HOME
su – oracle
$ . oraenv
$ORACLE_HOME/OPatch/ocm/bin/emocmrsp -no_banner -output $ORACLE_HOME/OPatch/ocm/unconfig.rsp

DB_HOME
su – oracle
$ . oraenv
$ORACLE_HOME/OPatch/ocm/bin/emocmrsp -no_banner -output $ORACLE_HOME/OPatch/ocm/unconfig.rsp

Подготовка перед установкой PSU патчей
Рекомендуется остановить работающий экземпляр СУБД 
GI – должна продолжать работать

su – oracle
. oraenv

$/bin/srvctl stop database –d  < db-unique-name >

Установка последней версии PSU патча (для GI+DB ) в АВТО режиме.


Директория, где лежит распакованный патч не должна ничего содержать кроме этого патча. Убедиться, что в /u01 свободно минимум 24 GB.
Скопировать патч в директорию /u01/distrib/11.2.0.4/PSU/160119

su – oracle

cd /u01/distrib/11.2.0.4/PSU/160119

unzip p22191577_112040_Linux-x86-64.GI.zip

установка производится из-под пользователя root

su - root
unset TMOUT
export PATH=$PATH:/usr/ccs/bin:/u01/app/grid/product/11.2.0.4/OPatch

# opatch auto /u01/distrib/11.2.0.4/PSU/160119/22191577 -ocmrf /u01/app/grid/product/11.2.0.4/OPatch/ocm/unconfig.rsp


Проверка наличия установленных патчей для GRID_HOME + DB_HOME

GRID_HOME
su - oracle
. oraenv
ORACLE_SID = [TEST] ? +ASM

$ORACLE_HOME/OPatch/opatch lspatches
21948355;ACFS Patch Set Update : 11.2.0.4.160119 (21948355)
21948348;OCW Patch Set Update : 11.2.0.4.160119 (21948348)
21948347;Database Patch Set Update : 11.2.0.4.160119 (21948347)
OPatch succeeded.

DB_HOME
su - oracle
. oraenv
ORACLE_SID = [+ASM] ? TEST

$ORACLE_HOME/OPatch/opatch lspatches
21948348;OCW Patch Set Update : 11.2.0.4.160119 (21948348)
21948347;Database Patch Set Update : 11.2.0.4.160119 (21948347)
OPatch succeeded.




Пример установки и отката PSU для конфигурации:

Oracle RAC
GI Home не shared
Database Home shared
ACFS используется.


Patch 27010930 - Database Proactive Bundle Patch 12.1.0.2.180116

26925263 DB_BP 12.1.0.2.180116 Only DB Home for non-Oracle RAC setup. Both DB Homes and Grid Home for Oracle RAC setup.
26925218 OCW_PSU 12.1.0.2.180116 Both DB Homes and Grid Home
26910974 ACFS_PSU 12.1.0.2.180116Foot2 Only Grid Home
26983807 DBWLM_PSU 12.1.0.2.180116Footref2 Only Grid Home
Footnote2 For ACFS and DBWLM these subpatches are not applicable to the HP-UX Itanium and Linux on IBM System z platforms.

Установка патча:

На первом узле:

$ $< ORACLE_HOME >/bin/srvctl stop database –d < db-unique-name >
Размонтируйте файловые системы ACFS. (1494652.1)
# < GI_HOME >/OPatch/opatchauto apply < UNZIPPED_PATCH_LOCATION >/27010930 -oh < GI_HOME >
A system reboot is recommended before using ACFS
Перемонтируйте файловые системы ACFS. (1494652.1)
# < GI_HOME >/OPatch/opatchauto apply < UNZIPPED_PATCH_LOCATION >/27010930 -oh < ORACLE_HOME >
$ < ORACLE_HOME >/bin/srvctl start instance –d < db-unique-name > -n < nodename >

На следующем узле:
Размонтируйте файловые системы ACFS. (1494652.1)
# < GI_HOME >/OPatch/opatchauto apply < UNZIPPED_PATCH_LOCATION >/27010930 -oh < GI_HOME >
A system reboot is recommended before using ACFS
Перемонтируйте файловые системы ACFS. (1494652.1)
$ < ORACLE_HOME >/bin/srvctl start instance –d < db-unique-name > -n < nodename >

На следующем узле:
Размонтируйте файловые системы ACFS. (1494652.1)
# < GI_HOME >/OPatch/opatchauto apply < UNZIPPED_PATCH_LOCATION >/27010930 -oh < GI_HOME >
A system reboot is recommended before using ACFS
Перемонтируйте файловые системы ACFS. (1494652.1)
$ < ORACLE_HOME >/bin/srvctl start instance –d < db-unique-name > -n < nodename >

и т.д.

Откат патча:

На первом узле:

$ $< ORACLE_HOME >/bin/srvctl stop database –d < db-unique-name >
Размонтируйте файловые системы ACFS. (1494652.1)
# < GI_HOME >/OPatch/opatchauto rollback < UNZIPPED_PATCH_LOCATION >/27010930 -oh < GI_HOME >
A system reboot is recommended before using ACFS
Перемонтируйте файловые системы ACFS. (1494652.1)
# < GI_HOME >/OPatch/opatchauto rollback < UNZIPPED_PATCH_LOCATION >/27010930 -oh < ORACLE_HOME >
$ < ORACLE_HOME >/bin/srvctl start instance –d < db-unique-name > -n < nodename >

На следующем узле:
Размонтируйте файловые системы ACFS. (1494652.1)
# < GI_HOME >/OPatch/opatchauto rollback < UNZIPPED_PATCH_LOCATION >/27010930 -oh < GI_HOME >
A system reboot is recommended before using ACFS
Перемонтируйте файловые системы ACFS. (1494652.1)
$ < ORACLE_HOME >/bin/srvctl start instance –d < db-unique-name > -n < nodename >

На следующем узле:

Размонтируйте файловые системы ACFS. (1494652.1)
# < GI_HOME >/OPatch/opatchauto rollback < UNZIPPED_PATCH_LOCATION >/27010930 -oh < GI_HOME >
A system reboot is recommended before using ACFS
Перемонтируйте файловые системы ACFS. (1494652.1)
$ < ORACLE_HOME >/bin/srvctl start instance –d < db-unique-name > -n < nodename >

и т.д.


Patch Post-Installation/Post-DeInstallation Instructions



Applying Conflict Resolution Patches

Loading Modified SQL Files into the Database

Standalone DB

% sqlplus /nolog
SQL> Connect / as sysdba
SQL> startup
SQL> quit
% cd $ORACLE_HOME/OPatch
% ./datapatch -verbose

Single/Multitenant (CDB/PDB) DB
% sqlplus /nolog
SQL> Connect / as sysdba
SQL> startup
alter pluggable database all open;
SQL> quit
% cd $ORACLE_HOME/OPatch
% ./datapatch -verbose

Проверка логов:


Check the following log files in $ORACLE_BASE/cfgtoollogs/sqlpatch/26925263/< unique patch ID > for errors:
26925263_apply_< database SID >_< CDB name >_< timestamp >.log

Check the following log files in $ORACLE_HOME/sqlpatch/26925263/ for errors:
26925263_rollback_< database SID >_< CDB name >_< timestamp >.log


Инвалидные объекты:

Run utlrp.sql to revalidate these objects.

cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql

Каталог rman:


Upgrade Oracle Recovery Manager Catalog

$ rman catalog username/password@alias
RMAN> UPGRADE CATALOG;
RMAN> UPGRADE CATALOG;




Дополнительную информацию об утилите OPatch можно получить из следующих документов:

(Doc ID 293369.1)


OPatch User Guides

General

Note 1561792.1 Patching Assistant: Oracle Database/Client
Note 1451669.1 FAQ : Understanding OPatch Tool And Patching
Note 224346.1 OPatch - Where Can I Find the Latest Version of OPatch?
Note 453495.1 FAQs on OPatch Version : 11.1
Note.334108.1 OPatch version 10.2 - FAQ

Note 433218.1 Why Should You Install 32-Bit JDK/JRE When You Have 64-Bit Oracle and Operating System ?
Note 1475077.1 Can the $ORACLE_HOME/jdk and $ORACLE_HOME/jdk/jre Directories Be Removed?
Note 1449674.1 Is It Supported to Update /Upgrade the Default JDK/JRE in Oracle Home?

Note 1446582.1 Frequently Asked Questions (FAQ): Patching Oracle Database Server
Note 865255.1 Best approach for Oracle database patching sequence to latest/required patchset along with CPU/PSU/any-other-one-off patch
Note 1526322.1 11g : Can Examples CD Be Installed After Interim Patches Are Applied On The Base Version?

Note 1530108.1 Oracle Database 12.1 : FAQ on Queryable Patch Inventory
Note 1376691.1 Composite Patches for Oracle Products [Video]
Note 761111.1 RDBMS Online Patching Aka Hot Patching
Note 1463390.1 Limits Of Online Patching

Note 563656.1 Different types of Patch Conflicts - Superset/Subset/Duplicate/Bug/File
Note 1321267.1 Database Patch conflict resolution
Note 1299688.1 Patch conflict resolution
Note 1061295.1 Patch Set Updates - One-off Patch Conflict Resolution

Note 418537.1 Significance of oraInst.loc When Installing Oracle Products and Applying Patches
Note 812874.1 Understanding and Diagnosing MISSING_COMPONENT and/or SKIPPING_COMPONENT messages during opatch apply
Note 551222.1 Why Does OPatch Backup The Same Library Multiple Times?
Note 283367.1 OPatch for Oracle Application Server 10g (10.1.2, 10.1.3, 10.1.4)
Note 403212.1 Location Of Logs For OPatch And OUI
Note 403218.1 Can You Delete $ORACLE_HOME/.patch_storage Directory?

Note 861152.1 Does  PSU Released For Oracle 10gR2 (10.2.0.4) ,11g R1 (11.1.0.7) and 11g R2( 11.2.0.1) Change The Database Version/Fifth Digit?

Note 1520299.1 Master Note For Oracle Database 12c Release 1 (12.1) Database/Client Installation/Upgrade/Migration Standalone Environment (Non-RAC)
Note 2232156.1 OPatch: Behavior Changes starting in OPatch 12.2.0.1.9 and 11.2.0.3.15 releases

How To

Note 274526.1 How To Download And Install The Latest OPatch Version
Note 298906.1 How To Repair A Corrupted Inventory For RDBMS
Note 556834.1 Steps To Recreate Central Inventory(oraInventory) In RDBMS Homes
Note 406037.1 Using opatch -report option, how to check for potential conflicts during patch apply without Database / Listener shutdown
Note 458485.1 How to find whether the one-off Patches will conflict or not?
Note 550522.1 How To Avoid Disk Full Issues Because OPatch Backups Take Big Amount Of Disk Space.
Note 749787.1 How to run opatch in silent mode?
Note 821263.1 How to confirm that a Critical Patch Update (CPU) has been installed in Linux / UNIX
Note 750350.1 How To Find The Description/Details Of The Bugs Fixed By A Patch Using OPatch?
Note 729384.1 How To Find If a Specific Patch Has Been Applied On Oracle 8i or 9.0.1 (or 9i R1)?
Note 470225.1 How To Use Truss With OPatch?
Note 312767.1 How to Rollback a Failed Interim Patch Installation
Note 966023.1 How to create a ocm response file for opatch silent installation.
Note 459360.1 How To Do The Prerequisite/Conflicts Checks Using OUI(Oracle Universal Installer) And OPatch Before Applying/Rolling Back A Patch
Note.739963.1 Using AIX commands genld, genkld and slibclean to avoid library file locking errors (libjox)
Note 1394537.1 How To Rollback An Online Patch If The Database Is Down Or Removed
Note 453399.1 How To Check if inventory.xml/comps.xml Or Any Oracle XML File Is Correct?
Note 1474666.1 How to apply OC4J patch (13705478) on RDBMS home
Note 1543697.1 How To Use MOS Patch Planner Via Enterprise Manager 12c To Check for and Resolve Patch Conflicts

Diagnostic Tools For OPatch

Note 1430571.1 Script To Collect OPatch Diagnostic Information For Unix Platform (opatchdiag.sh)
Note 1441309.1 Oneoffsdiag.sh:Script To Verify The Existance Of $ORACLE_HOME/inventory/oneoffs/PATCH_ID and also actions.xml and actions.xml inventory.xml in $ORACLE_HOME/inventory/oneoffs/PATCH_ID/etc/config

Known Issues

With Inventory

Note 229773.1 ALERT Applying Multiple Interim Patches Using OPatch Can Cause Inventory Corruption
Note 401454.1 opatch lsinventory Raises An OPatchException While Accessing O2O
Note 413829.1 OPatch Fails With 'Can not get details for given Oracle Home'
Note 417275.1 opatch lsinventory Reports `Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/transform/Source` When Executed Against 9.2.0.x
Note 417694.1 "OUI-67124:Inventory check failed: Patch ID is not registered in Oracle Home Inventory" while applying one-off patches using opatch
Note 431783.1 opatch lsinventory Result Shows: * Warning: no filemap entries available.
Note 795452.1 OPatch reports Error when using multiple oracle users
Note 864117.1 OPatch error: "Inventory load failed... OPatch cannot load inventory for the given Oracle Home."
Note 821550.1 opatch lsinventory Error: " Unable To Parse The Xml File"
Note 861677.1 OPatch error : "Unable to lock Central Inventory"
Note 864803.1 OPatch error: "Apply Session failed: ApplySession failed to prepare the system. No detail available."
Note 437026.1 ERROR :"OPatch cannot find a valid oraInst.loc file to locate Central Inventory.OPatch failed with error code 104"
Note 728417.1 OPatch Fails With "LsInventorySession failed:OracleHomeInventory gets null oracleHomeInfo"
Note 1086853.1 opatch lsinventory Reports "OUI-67076 : OracleHomeInventory was not able to create a lock file"
Note 876343.1 Patch conflict Error OUI-67301 on 11.1.0.7.0 due to one off in inventory
Note 1185246.1 OPatch Fails With "OUI-67028:Inventory load failed"
Note 1308866.1 OPatch Cannot Load Inventory For The Given Oracle Home
Note 1475147.1 OPatch - Failed to load the patch object. Possible causes are: OPatch failed with error code = 73 LsInventorySession failed:
Note 1456247.1 The opatch apply failing with OPatch failed with error code 39 :This patch requires some components to be installed in the home. Either the Oracle Home doesn't have the components or this patch is not suitable for this Oracle Home.

With Java

Note 332698.1 OPatch was not able to locate executable jar
Note 417372.1 OPatch Error " java.lang.UnsatisfiedLinkError: ... liboraInstaller.so: ... "
Note 808368.1 OPatch: cannot open shared object file.  Possible cause: architecture word width mismatch
Note 974371.1 After Installing The 11.2.0.1 32-bit Client Software On SPARC Solaris, OPatch and OUI Fail With ELFCLASS32 Errors For liboraInstaller.so
Note 417177.1 ERROR : "Java could not be located. OPatch cannot proceed!.OPatch failed with error code = 1"
Note 1474852.1 UTE011: Active tracepoint array length for JVM is 7559; should be 7577 Could not create JVM.
Note 1475894.1 OPatch commands error: JVMJ9VM019E Fatal error: Unable to find and initialize required class java/lang/ClassCircularityError

With Pre-Patching

Note 943436.1 opatch prereq checkapplicable Error: "Unable to create Patch Object. Check if the given patch location is correct"
Note 780858.1 OPatch Fails With `Prerequisite check "CheckActiveFilesAndExecutables" failed` And `Following executables are active : $ORACLE_HOME/lib/libnmemso.so`
Note 882932.1 Prerequisite check "CheckPatchApplicableOnCurrentPlatform" failed When Applied Generic Patch 8282506
Note 861507.1 PSU OPatch conflict check fails with "OPatch failed with error code 73"
Note 292946.1 OPatch Detecting Wrong Platform Id For Install Of Patch
Note 404473.1 OPatch Reports Error "OPatch detects your platform as... this patch...supports platforms: 0 (Generic Platform)"
Note 602334.1 OPatch Not Working, Reporting That It Is Obsolete
Note 729218.1 ERROR: "The Oracle Home does not meet OUI version requirement.OPatch failed with error code 73"
Note 257800.1 OPatch: Interim Patch  is holding the lock from this patch
Note 312926.1 opatch apply Gives: Can't Locate English.Pm In @Inc
Note 1050819.1 OPatch Reports Missing Component and Prerequisite Check "CheckApplicable" Failed
Note 869945.1 Zop-40: The Patch(es) Has Conflicts/Supersets With Other Patches
Note 1231223.1 OPatch Fails With Error Code 255
Note 747049.1 OPatch apply/rollback error: Prerequisite check "CheckActiveFilesAndExecutables" failed
Note 1475206.1 Patch requires OPatch version
Note 1629444.1 Opatch Fails Updating Archives with " No space left on device " Error
Note 2039927.1 Source file / does not exists or is not readable

With Linking

Note 417319.1 Getting Warnings While Applying Patches on Linux x86-64
Note 457126.1 OPatch Aborted After Relink Fails On Target Ioracle.
Note 789053.1 Cannot find or open library file: -l pls10 when applying a patch with 10.2
Note 402945.1 While installing one-off Patch on AIX systems, getting several WARNING messages: OUI-67215 - TOC overflow and/or xlC: not found / xlC: Execute permission denied
Note 1446945.1 "ld: warning: symbol `_start' has differing types:" While Installing Or Patching 11gR2 On Oracle Solaris Platform
Note 1474762.1 WARNING:OUI-67200:Make failed to invoke "/usr/ccs/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME="....'ld: fatal: file //lib/prod/lib/v9/crti.o: open failed: Permission denied
Note 1467060.1 Relinking Oracle Home FAQ ( Frequently Asked Questions)
Note 1525333.1 Relink error on target iKfed while patching Oracle 11.2.0.3 Client with 11.2.0.3.5 PSU
Note 1534583.1 OPatch fails to Rollback Patch due to relink errors.
Note 1539887.1 Undefined first referenced symbol ld: fatal: symbol referencing errors.

With Post-Patching

Note 353150.1 OPatch Failing Validation Phase When Archiving Really Did Not Fail
Note 791187.1 OPatch Failing Validation Phase - OPatch versions 10.2.0.4.6 and 11.1.0.6.6
Note 1361802.1 opatch auto doesn't patch the RDBMS Home if no database exists

With SQLPatching (datapatch)

Note 1599479.1 Datapatch errors at "SYS.DBMS_QOPATCH"
Note 1632818.1 Datapatch may fail while patching a RAC+PDB environment

Miscellaneous

Note 799883.1 OPatch error: OUI-67160 Unexpected end of ZLIB input stream
Note 739815.1 OUI-67294 Warning During opatch apply
Note 553244.1 WARNING MESSAGE "OUI-67078" and "OUI-67620" from OPatch when applying 10.2.X patches
Note 751107.1 ERROR: "Copy Action: Source file does not exist.'oracle.rdbms, Cannot copy file'"
Note 553263.1 OPatch Reports 'libclntsh.so.10.1 not removed. Text file busy'
Note 563356.1 OPatch error 'file not found' message on 11.1.0.6 32-bit
Note 1136432.1 OPatch fails with JVMXM008
Note 1066937.1 Apply Patch Fails with 'Patch ID is null' and Error Code 73
Note 1475147.1 OPatch - Failed to load the patch object. Possible causes are: OPatch failed with error code = 73 LsInventorySession failed:
Note 1108834.1 OUI-67073:ApplySession failed: Patch ID is null occurred when applying patch 9352179
Note 803097.1 OUI-67200:Make failed problem while applying a Patch
Note 730754.1 OPatch Gives Exception In Thread "Main" Unsatisfiedlinkerror: Haltimpl
Note 603465.1 OPatch Fails With "Jar not applied ... to $ORACLE_HOME/jdbc/lib/classes12.zip... 'invalid entry compressed size (expected x but got y bytes)'"
Note 1474874.1 opatch apply Fails - Jar Action: Source File "// '': Cannot update file '///' with '//'
Note.1085753.1 OPatch Failing With Error Code 74 While Applying PSU
Note 402945.1 While installing one-off Patch on AIX systems, getting several WARNING messages: OUI-67215 - TOC overflow and/or xlC: not found / xlC: Execute permission denied
Note 1055397.1 opatch napply Hanging
Note 1244414.1 OPatch throws: Archive Action: Source file "$ORACLE_HOME/.patch_storage/........." does not exist.
Note 1269454.1 OPatch Failed With Error Code 73 Because Session Is Not Able to Create a Directory
Note 1355040.1 Online patching errors: use "OPatch util enableOnlinePatch" to add the SID(s)
Note 1462303.1 OPatch Fails With Error "No such file or directory"
Note 1331900.1 Prerequisite Check "CheckRollbackable" On Auto-rollback Patches Failed
Note 1474805.1 OPatch Log Shows - INFO:Skip patch patch number from list of patches to apply: This patch is not needed.
Note 1476964.1 OPatch Logging "Generic Conflict" Between Sub-Patches Of A Composite Patch
Note 1468097.1 Argument (s) Error ... Illegal File Format For Composite Patch. There Is No Composite.xml File.
Note 1435438.1 Multiple OUI Messages In OPatch Log : OUI-67161, OUI-67085, OUI-67047, OUI-67049, OUI-67048, OUI-67085 and OUI-6705
Rolling Patch - OPatch Support for RAC

Windows Specific

Note 390761.1 Using OPatch On Windows When ORACLE_HOME Contains Space Characters
Note 416318.1 HOW TO Use Process Explorer to obtain a list of DLLs loaded by a Windows process
Note 418479.1 Files in Use errors, when running OPatch to apply patches on Windows
Note 791005.1 OPatch permissions problem on 64-bit windows 2008 and Oracle 10.2.0.3 and 10.2.0.4
Note 1446273.1 OPatch 11.2.0.3.0 LOCKS SRVM.JAR WHEN APPLYING ANY 11.2.0.3 BUNDLE PATCH ON WINDOWS X64
Note 1530132.1 Applied Bundle patch 16 (16167942/16167941) but opatch lsinventory incorrectly showing as Bundle patch 15.
Note 1568694.1 OPatch throwing "Unable to lock Central Inventory" on Windows 7

Using My Oracle Support Effectively

Note 732697.1 What Information Oracle Support Need To Work On OPatch Service Requests?
Note 735257.1 What information Oracle Support needs to work on Critical Patch Update (CPU) Installation Service Requests
Note 868955.1 My Oracle Support Health Checks Catalog
Note 166650.1 Working Effectively With Global Customer Support
Note 1194734.1 Where do I find that on My Oracle Support (MOS) [Video]

Generic Links

Note 1454618.1 Quick Reference To Patch Numbers For Database PSU, CPU And Bundle Patches
Note 1119703.1 Database PSU-CPU Cross-Reference List
Note 854428.1 Patch Set Updates for Oracle Products
Note 268895.1 Oracle Database Server Patchset Information, Versions: 8.1. 7 to 11.2.0
Note 161549.1 Oracle Database Server and Networking Patches for Microsoft Platforms
Note 161818.1 Oracle Database (RDBMS) Releases Support Status Summary

Fusion Middle Ware

Note 1587524.1 Using OPatch 13.1 for Oracle Fusion Middleware 12c (12.1.2+)
Note 1591487.1 Using OPatch 11.1 for Oracle Fusion Middleware 11g (11.1.1/11.1.2)
Note 283367.1 OPatch for Oracle Application Server 10g (10.1.2, 10.1.3, 10.1.4)

Information on Security Patch Updates (SPU's)








суббота, 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










четверг, 1 мая 2014 г.

Установка PSU 11.2.0.3.10

 GRID INFRASTRUCTURE PATCH SET UPDATE 11.2.0.3.10 (INCLUDES DB PSU 11.2.0.3.10) (Patch)


Patch  18139678

Устанавливать так:

1. Stop the CRS managed resources running from DB homes.

# su - oraagent

$ emctl stop agent

# su - oradb

$ /u01/app/oradb/product/11.2.0.3/dbhome_1/bin/srvctl stop home -o /u01/app/oradb/product/11.2.0.3/dbhome_1 -s /export/home/oradb/state_file.oradb


2. Run the pre root script.

$su -

# /u01/app/11.2.0.3/grid/crs/install/roothas.pl -unlock


3. Unzipping

# su - oragrid

$cd /tmp

$unzip p18139678_112030_Linux-x86-64.zip


$ls -l
total 552336
drwxrwxr-x 4 oragrid oinstall 307 Jul 18 09:21 17592127
drwxr-xr-x 5 oragrid oinstall 302 Jul 18 09:21 18031683


4. Apply the CRS patch using.

Требования к OPatch version : 11.2.0.3.5


$ /u01/app/11.2.0.3/grid/OPatch/opatch napply -oh /u01/app/11.2.0.3/grid -local /tmp/17592127

$ /u01/app/11.2.0.3/grid/OPatch/opatch apply -oh /u01/app/11.2.0.3/grid -local /tmp/18031683



5. Run the pre script for DB component of the patch.

# su - oradb

$ /tmp/17592127/custom/server/17592127/custom/scripts/prepatch.sh -dbhome /u01/app/oradb/product/11.2.0.3/dbhome_1



6. Apply the DB patch.


$ /u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch napply -oh /u01/app/oradb/product/11.2.0.3/dbhome_1 -local /tmp/17592127/custom/server/17592127
$ /u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch apply -oh /u01/app/oradb/product/11.2.0.3/dbhome_1 -local /tmp/18031683



7. Run the post script for DB component of the patch.


$ /tmp/17592127/custom/server/17592127/custom/scripts/postpatch.sh -dbhome /u01/app/oradb/product/11.2.0.3/dbhome_1


8. Run the post script.

$su -

Run the post script.

# /u01/app/11.2.0.3/grid/rdbms/install/rootadd_rdbms.sh
# /u01/app/11.2.0.3/grid/crs/install/roothas.pl -patch


9. Start the CRS managed resources that were earlier running from DB homes.

# su - oradb

$ /u01/app/oradb/product/11.2.0.3/dbhome_1/bin/srvctl start home -o /u01/app/oradb/product/11.2.0.3/dbhome_1 -s /export/home/oradb/state_file.oradb


10. Проверяем:

$/u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch lsinventory

$su - oragrid

$/u01/app/11.2.0.3/grid/OPatch/opatch lsinventory


среда, 22 мая 2013 г.

Установка PSU 11.2.0.3.6

Ставим  PSU 11.2.0.3.6

Patch 16083653 - 11.2.0.3.6 GI Patch Set Update (Includes Database PSU 11.2.0.3.6)

Устанавливать так:

1. Stop the CRS managed resources running from DB homes.

# su - oraagent

$ emctl stop agent

# su - oradb

$ /u01/app/oradb/product/11.2.0.3/dbhome_1/bin/srvctl stop home -o /u01/app/oradb/product/11.2.0.3/dbhome_1 -s /export/home/oradb/state_file.oradb


2. Run the pre root script.

$su -

# /u01/app/11.2.0.3/grid/crs/install/roothas.pl -unlock



3. Unzipping

# su - oragrid

$cd /tmp

$unzip  p16083653_112030_SOLARIS64.zip


$ls -l
total 552336
drwxrwxr-x 4 oragrid oinstall 307 Jul 18 09:21 16315641
drwxr-xr-x 5 oragrid oinstall 302 Jul 18 09:21 16056266


4. Apply the CRS patch using.

Требования к OPatch version    : 11.2.0.3.4


$ /u01/app/11.2.0.3/grid/OPatch/opatch napply -oh /u01/app/11.2.0.3/grid -local /tmp/16315641

$ /u01/app/11.2.0.3/grid/OPatch/opatch apply -oh /u01/app/11.2.0.3/grid -local /tmp/16056266



5. Run the pre script for DB component of the patch.

# su - oradb

$ /tmp/16315641/custom/server/16315641/custom/scripts/prepatch.sh -dbhome /u01/app/oradb/product/11.2.0.3/dbhome_1



6. Apply the DB patch.


$ /u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch napply -oh /u01/app/oradb/product/11.2.0.3/dbhome_1 -local /tmp/16315641/custom/server/16315641
$ /u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch apply  -oh /u01/app/oradb/product/11.2.0.3/dbhome_1 -local /tmp/16056266



7. Run the post script for DB component of the patch.


$ /tmp/16315641/custom/server/16315641/custom/scripts/postpatch.sh -dbhome /u01/app/oradb/product/11.2.0.3/dbhome_1


8. Run the post script.

$su -

Run the post script.

# /u01/app/11.2.0.3/grid/rdbms/install/rootadd_rdbms.sh
# /u01/app/11.2.0.3/grid/crs/install/roothas.pl -patch


9. Start the CRS managed resources that were earlier running from DB homes.

# su - oradb

$ /u01/app/oradb/product/11.2.0.3/dbhome_1/bin/srvctl start home -o /u01/app/oradb/product/11.2.0.3/dbhome_1 -s /export/home/oradb/state_file.oradb


10. Проверяем:

$/u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch lsinventory

$su - oragrid

$/u01/app/11.2.0.3/grid/OPatch/opatch lsinventory


среда, 27 марта 2013 г.

Rollback PSU 11.2.0.3.5

Patch  14727347 - 11.2.0.3.5 GI Patch Set Update (Includes Database PSU 11.2.0.3.5)


1. Stop the CRS managed resources running from DB homes.

# su - oraagent

$ emctl stop agent

# su - oradb

$ /u01/app/oradb/product/11.2.0.3/dbhome_1/bin/srvctl stop home -o /u01/app/oradb/product/11.2.0.3/dbhome_1 -s /export/home/oradb/state_file.oradb



2. Run the pre root script.

$su -

# /u01/app/11.2.0.3/grid/crs/install/roothas.pl -unlock



3. Unzipping

# su - oragrid

$cd /tmp

$unzip  p14727347_112030_SOLARIS64.zip

$ls -l
total 552336
drwxrwxr-x 4 oragrid oinstall 307 Jul 18 09:21 15876003
drwxr-xr-x 5 oragrid oinstall 302 Jul 18 09:21 14727310



4. Rollback the CRS patch using.


    $ /u01/app/11.2.0.3/grid/OPatch/opatch rollback -local -id 15876003 -oh /u01/app/11.2.0.3/grid
    $ /u01/app/11.2.0.3/grid/OPatch/opatch rollback -local -id 14727310 -oh /u01/app/11.2.0.3/grid




5. Run the pre script for DB component of the patch.

# su - oradb

    $ /tmp/15876003/custom/server/15876003/custom/scripts/prepatch.sh -dbhome /u01/app/oradb/product/11.2.0.3/dbhome_1



6. Rollback the DB patch.


    $ /u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch rollback -local -id 15876003 -oh /u01/app/oradb/product/11.2.0.3/dbhome_1
    $ /u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch rollback -local -id 14727310 -oh /u01/app/oradb/product/11.2.0.3/dbhome_1



7. Run the post script for DB component of the patch.

    $ /tmp/15876003/custom/server/15876003/custom/scripts/postpatch.sh -dbhome /u01/app/oradb/product/11.2.0.3/dbhome_1


8. Run the post script.

$su -

Run the post script.

# /u01/app/11.2.0.3/grid/rdbms/install/rootadd_rdbms.sh
# /u01/app/11.2.0.3/grid/crs/install/roothas.pl -patch


9. Start the CRS managed resources that were earlier running from DB homes.

# su - oradb

$ /u01/app/oradb/product/11.2.0.3/dbhome_1/bin/srvctl start home -o /u01/app/oradb/product/11.2.0.3/dbhome_1 -s /export/home/oradb/state_file.oradb


Проверяем:

$/u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch lsinventory

$su - oragrid

$/u01/app/11.2.0.3/grid/OPatch/opatch lsinventory


четверг, 21 февраля 2013 г.

Установка DST 19

#su - oradb
$cd /tmp
$ls -l
total 588496
-rw-r--r--   1 oradb    oinstall  314120 Jan 16 10:48 p15897859_112030_SOLARIS64.zip

$unzip p15897859_112030_SOLARIS64.zip

Archive:  p15897859_112030_SOLARIS64.zip
   creating: 15897859/
  inflating: 15897859/README.txt
  inflating: 15897859/README.html
   creating: 15897859/files/
   creating: 15897859/files/oracore/
   creating: 15897859/files/oracore/zoneinfo/
  inflating: 15897859/files/oracore/zoneinfo/readme_19.txt
   creating: 15897859/files/oracore/zoneinfo/little/
  inflating: 15897859/files/oracore/zoneinfo/little/timezlrg_19.dat
  inflating: 15897859/files/oracore/zoneinfo/little/timezone_19.dat
  inflating: 15897859/files/oracore/zoneinfo/timezlrg_19.dat
  inflating: 15897859/files/oracore/zoneinfo/timezone_19.dat
   creating: 15897859/files/oracore/zoneinfo/big/
  inflating: 15897859/files/oracore/zoneinfo/big/timezlrg_19.dat
  inflating: 15897859/files/oracore/zoneinfo/big/timezone_19.dat
   creating: 15897859/etc/
   creating: 15897859/etc/config/
  inflating: 15897859/etc/config/inventory.xml
  inflating: 15897859/etc/config/actions.xml
  inflating: 15897859/etc/config/deploy.xml
   creating: 15897859/etc/xml/
  inflating: 15897859/etc/xml/GenericActions.xml
  inflating: 15897859/etc/xml/ShiphomeDirectoryStructure.xml

$ls -l
drwxr-xr-x   4 oradb    oinstall     374 Dec 31 12:31 15897859
-rw-r--r--   1 oradb    oinstall  314120 Jan 16 10:48 p15897859_112030_SOLARIS64.zip

$cd 15897859

$/u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch apply

$
 


$export ORACLE_SID=testdb
$sqlplus "/as sysdba"


SQL*Plus: Release 11.2.0.3.0 Production on Fri Feb 22 09:55:57 2013

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


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

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 4.0899E+10 bytes
Fixed Size                  2168160 bytes
Variable Size            3892316832 bytes
Database Buffers         3.6910E+10 bytes
Redo Buffers               95125504 bytes
Database mounted.
SQL> SELECT * FROM v$timezone_file;

FILENAME                VERSION
-------------------- ----------
timezlrg_19.dat              19

SQL> alter database open;

Database altered.

SQL> SELECT * FROM v$timezone_file;

FILENAME                VERSION
-------------------- ----------
timezlrg_14.dat              14

SQL>
SQL> select u.name || '.' || o.name || '.' || c.name TSLTZcolumn
from sys.obj$ o, sys.col$ c, sys.user$ u
where c.type# = 231
and o.obj# = c.obj#
and u.user# = o.owner#; 
2    3    4    5

no rows selected

SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;
  2    3    4

PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE

SQL> select TZ_VERSION from sys.registry$database;

TZ_VERSION
----------
        14

SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;

  2    3    4
PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE

SQL>
SQL> SELECT version FROM v$timezone_file;
   VERSION
----------
        14

SQL> purge dba_recyclebin;

DBA Recyclebin purged.

SQL> alter session set "_with_subquery"=materialize;
Session altered.

SQL> alter session set "_simple_view_merging"=TRUE;

Session altered.

SQL> exec DBMS_DST.BEGIN_PREPARE(19);

PL/SQL procedure successfully completed.

SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;
  2    3    4

PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       19
DST_UPGRADE_STATE              PREPARE

SQL> TRUNCATE TABLE SYS.DST$TRIGGER_TABLE;

Table truncated.

SQL> TRUNCATE TABLE sys.dst$affected_tables;

Table truncated.

SQL> TRUNCATE TABLE sys.dst$error_table;

Table truncated.

SQL> set serveroutput on
SQL> BEGIN
DBMS_DST.FIND_AFFECTED_TABLES
(affected_tables => 'sys.dst$affected_tables',
log_errors => TRUE,
log_errors_table => 'sys.dst$error_table');
END;

/  2    3    4    5    6    7

PL/SQL procedure successfully completed.

SQL> SELECT * FROM sys.dst$affected_tables;
TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
 ROW_COUNT ERROR_COUNT
---------- -----------
SYS                            KET$_AUTOTASK_STATUS
MW_START_TIME
         1           0

SYS                            KET$_CLIENT_TASKS
CURR_WIN_START
         3           0

TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
 ROW_COUNT ERROR_COUNT
---------- -----------

SYS                            SCHEDULER$_JOB
LAST_END_DATE
         7           0

SYS                            SCHEDULER$_JOB
LAST_START_DATE

TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
 ROW_COUNT ERROR_COUNT
---------- -----------
         7           0

SYS                            SCHEDULER$_JOB
NEXT_RUN_DATE
         5           0

SYS                            SCHEDULER$_JOB

TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
 ROW_COUNT ERROR_COUNT
---------- -----------
LAST_ENABLED_TIME
         8           0

SYS                            SCHEDULER$_JOB
START_DATE
         5           0


TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
 ROW_COUNT ERROR_COUNT
---------- -----------
SYS                            SCHEDULER$_JOB_RUN_DETAILS
REQ_START_DATE
         9           0

SYS                            SCHEDULER$_JOB_RUN_DETAILS
START_DATE
        14           0

TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
 ROW_COUNT ERROR_COUNT
---------- -----------

SYS                            SCHEDULER$_WINDOW
ACTUAL_START_DATE
         1           0

SYS                            SCHEDULER$_WINDOW
LAST_START_DATE

TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
 ROW_COUNT ERROR_COUNT
---------- -----------
         7           0

SYS                            SCHEDULER$_WINDOW
NEXT_START_DATE
         9           0

SYS                            SCHEDULER$_WINDOW_DETAILS

TABLE_OWNER                    TABLE_NAME
------------------------------ ------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
 ROW_COUNT ERROR_COUNT
---------- -----------
REQ_START_DATE
         1           0

SYS                            SCHEDULER$_WINDOW_DETAILS
START_DATE
         1           0


14 rows selected.

SQL> SELECT * FROM sys.dst$error_table;

no rows selected

SQL> SELECT * FROM sys.dst$error_table where ERROR_NUMBER= '1883';

no rows selected

SQL> SELECT * FROM sys.dst$error_table where ERROR_NUMBER= '1878';
no rows selected

SQL> SELECT * FROM sys.dst$error_table where ERROR_NUMBER not in ('1878','1883');

no rows selected

SQL> EXEC DBMS_DST.END_PREPARE;
A prepare window has been successfully ended.

PL/SQL procedure successfully completed.

SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;
  2    3    4

PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE

SQL>
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup upgrade;
ORACLE instance started.

Total System Global Area 4.0899E+10 bytes
Fixed Size                  2168160 bytes
Variable Size            3892316832 bytes
Database Buffers         3.6910E+10 bytes
Redo Buffers               95125504 bytes
Database mounted.
Database opened.
SQL>
SQL> set serveroutput on
SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;
  2    3    4

PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         14
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE

SQL> purge dba_recyclebin;
DBA Recyclebin purged.

SQL> TRUNCATE TABLE SYS.DST$TRIGGER_TABLE;

Table truncated.

SQL> TRUNCATE TABLE sys.dst$affected_tables;

Table truncated.

SQL> TRUNCATE TABLE sys.dst$error_table;
Table truncated.

SQL> alter session set "_with_subquery"=materialize;

Session altered.

SQL> alter session set "_simple_view_merging"=TRUE;

Session altered.

SQL> EXEC DBMS_DST.BEGIN_UPGRADE(19);
An upgrade window has been successfully started.

PL/SQL procedure successfully completed.

SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;
  2    3    4

PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         19
DST_SECONDARY_TT_VERSION       14
DST_UPGRADE_STATE              UPGRADE

SQL> SELECT OWNER, TABLE_NAME, UPGRADE_IN_PROGRESS FROM ALL_TSTZ_TABLES where UPGRADE_IN_PROGRESS='YES';

OWNER                          TABLE_NAME                     UPG
------------------------------ ------------------------------ ---
SYSMAN                         AQ$_MGMT_LOADER_QTABLE_L       YES
SYSMAN                         AQ$_MGMT_LOADER_QTABLE_S       YES
SYSMAN                         AQ$_MGMT_NOTIFY_QTABLE_L       YES
SYSMAN                         AQ$_MGMT_NOTIFY_QTABLE_S       YES
SYSMAN                         MGMT_PROV_ASSIGNMENT           YES
SYSMAN                         MGMT_PROV_BOOTSERVER           YES
SYSMAN                         MGMT_PROV_CLUSTER_NODES        YES
SYSMAN                         MGMT_PROV_DEFAULT_IMAGE        YES
SYSMAN                         MGMT_PROV_IP_RANGE             YES
SYSMAN                         MGMT_PROV_NET_CONFIG           YES
SYSMAN                         MGMT_PROV_OPERATION            YES

OWNER                          TABLE_NAME                     UPG
------------------------------ ------------------------------ ---
SYSMAN                         MGMT_PROV_RPM_REP              YES
SYSMAN                         MGMT_PROV_STAGING_DIRS         YES
SYSMAN                         MGMT_PROV_SUITE_INST_MEMBERS   YES

14 rows selected.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.

Total System Global Area 4.0899E+10 bytes
Fixed Size                  2168160 bytes
Variable Size            3892316832 bytes
Database Buffers         3.6910E+10 bytes
Redo Buffers               95125504 bytes
Database mounted.
Database opened.
SQL> set serveroutput on
SQL> VAR numfail number
SQL> BEGIN
  2  DBMS_DST.UPGRADE_DATABASE(:numfail,
  3  parallel => TRUE,
  4  log_errors => TRUE,
  5  log_errors_table => 'SYS.DST$ERROR_TABLE',
  6  log_triggers_table => 'SYS.DST$TRIGGER_TABLE',
  7  error_on_overlap_time => FALSE,
  8  error_on_nonexisting_time => FALSE);
  9  DBMS_OUTPUT.PUT_LINE('Failures:'|| :numfail);
 10  END;

 11  /
Table list: "SYSMAN"."MGMT_PROV_SUITE_INST_MEMBERS"
Number of failures: 0
Table list: "SYSMAN"."MGMT_PROV_STAGING_DIRS"
Number of failures: 0
Table list: "SYSMAN"."MGMT_PROV_RPM_REP"
Number of failures: 0
Table list: "SYSMAN"."MGMT_PROV_OPERATION"
Number of failures: 0
Table list: "SYSMAN"."MGMT_PROV_NET_CONFIG"
Number of failures: 0
Table list: "SYSMAN"."MGMT_PROV_IP_RANGE"
Number of failures: 0
Table list: "SYSMAN"."MGMT_PROV_DEFAULT_IMAGE"
Number of failures: 0
Table list: "SYSMAN"."MGMT_PROV_CLUSTER_NODES"
Number of failures: 0
Table list: "SYSMAN"."MGMT_PROV_BOOTSERVER"
Number of failures: 0
Table list: "SYSMAN"."MGMT_PROV_ASSIGNMENT"
Number of failures: 0
Table list: "SYSMAN"."AQ$_MGMT_NOTIFY_QTABLE_S"
Number of failures: 0
Table list: "SYSMAN"."AQ$_MGMT_NOTIFY_QTABLE_L"
Number of failures: 0
Table list: "SYSMAN"."AQ$_MGMT_LOADER_QTABLE_S"
Number of failures: 0
Table list: "SYSMAN"."AQ$_MGMT_LOADER_QTABLE_L"
Number of failures: 0
Failures:0

PL/SQL procedure successfully completed.

SQL>
SQL> VAR fail number
BEGIN
DBMS_DST.END_UPGRADE(:fail);
DBMS_OUTPUT.PUT_LINE('Failures:'|| :fail);
END;

/SQL>   2    3    4    5
An upgrade window has been successfully ended.
Failures:0

PL/SQL procedure successfully completed.

SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME LIKE 'DST_%'
ORDER BY PROPERTY_NAME;
  2    3    4

PROPERTY_NAME                  VALUE
------------------------------ ------------------------------
DST_PRIMARY_TT_VERSION         19
DST_SECONDARY_TT_VERSION       0
DST_UPGRADE_STATE              NONE

SQL> SELECT * FROM v$timezone_file;

FILENAME                VERSION
-------------------- ----------
timezlrg_19.dat              19

SQL> SELECT VERSION FROM v$timezone_file;

   VERSION
----------
        19

SQL> select TZ_VERSION from registry$database;

TZ_VERSION
----------
        14

SQL> update registry$database set TZ_VERSION = (select version FROM v$timezone_file);

1 row updated.

SQL> commit;

Commit complete.

SQL> select TZ_VERSION from registry$database;

TZ_VERSION
----------
        19


SQL> create or replace and compile java source named "OffsetFromStandard" as
  2  import java.util.Calendar;
  3  import java.util.GregorianCalendar;
  4  import java.util.TimeZone;
  5
  6  public class OffsetFromStandard
  7  {
  8     public static int getDSTOffset(
  9       String timezone,
 10       int year,
 11       int month,
 12       int mday,
 13       int hour,
 14       int min,
 15       int sec)
 16     {
 17       int RetVal = -360000000;
 18       String[] TZs = TimeZone.getAvailableIDs();
 19       for (int i = 0; i < TZs.length; i++)
 20       {
 21         if (timezone.equals(TZs[i]))
 22         {
 23           TimeZone tz = TimeZone.getTimeZone(timezone);
 24           GregorianCalendar c = new GregorianCalendar(tz);
 25           c.set(year, month-1, mday, hour, min, sec);
 26           RetVal = c.get(Calendar.DST_OFFSET);
 27         };
 28       }
 29       return RetVal;
 30     }
 31  }
 32  /


Java created.

SQL> alter java class "OffsetFromStandard" resolve
/  2

Java altered.

SQL> CREATE OR REPLACE function get_dst_offset (timezone VARCHAR2,
  2                                                  year NUMBER,
  3                                                 month NUMBER,
  4                                                  mday NUMBER,
  5                                                  hour NUMBER,
  6                                                   min NUMBER,
  7                                                   sec NUMBER) RETURN NUMBER AS
  8  LANGUAGE JAVA NAME 'OffsetFromStandard.getDSTOffset (java.lang.String, int, int, int, int, int, int) return int';

  9  /

Function created.

SQL> CREATE OR REPLACE function test_dst(timezone VARCHAR2,
  2                                                   year NUMBER,
  3                                                  month NUMBER,
  4                                                   mday NUMBER,
  5                                                   hour NUMBER,
  6                                                    min NUMBER,
  7                                                    sec NUMBER) RETURN varchar2 as
  8     retval varchar2(40);
  9  begin
 10     select case get_dst_offset (timezone,year,month,mday,hour,min,sec)
 11       when 3600000 then 'Timestamp is *in* DST'
 12       when 0 then 'Timestamp is *not* in DST'
 13       when -360000000 then 'Time Zone not valid'
 14       else 'Error' end into retval from dual;
 15     return retval;
 16  end;

 17  /

Function created.

SQL> set serveroutput on
SQL> begin
  2     if test_dst('America/New_York', 2007, 3, 11, 11, 0, 0)= 'Timestamp is *in* DST' then
  3       dbms_output.put_line('V3 (or later) Time Zone Update is applied');
  4     else
  5       dbms_output.put_line('V3 (or later) Time Zone Update is not applied');
  6     end if;
  7     if test_dst('America/Edmonton', 2007, 3, 11, 11, 0, 0) = 'Timestamp is *in* DST' then
  8       dbms_output.put_line('V4 (or later) Time Zone Update is applied');
  9     else
 10       dbms_output.put_line('V4 (or later) Time Zone Update is not applied');
 11     end if;
 12     if test_dst('Pacific/Auckland', 2008, 4, 5, 11, 0, 0) = 'Timestamp is *in* DST' then
 13       dbms_output.put_line('V6 tzdata2007f (or later) Time Zone Update is applied');
 14     else
 15       dbms_output.put_line('V6 tzdata2007f (or later) Time Zone Update is not applied');
 16     end if;
 17     if test_dst('Australia/Adelaide', 2008, 4, 5, 11, 0, 0) = 'Timestamp is *in* DST' then
 18       dbms_output.put_line('V7 tzdata2007k (or later) Time Zone Update is applied');
 19     else
 20       dbms_output.put_line('V7 tzdata2007k (or later) Time Zone Update is not applied');
 21     end if;
 22     if test_dst('Africa/Casablanca', 2008, 6, 1, 23, 0, 0) = 'Timestamp is *in* DST' then
 23       dbms_output.put_line('V9 tzdata2008f (or later) Time Zone Update is applied');
 24     else
 25       dbms_output.put_line('V9 tzdata2008f (or later) Time Zone Update is not applied');
 26     end if;
 27       if test_dst('Asia/Damascus', 2008, 10, 15, 10, 0, 0) = 'Timestamp is *in* DST' then
 28       dbms_output.put_line('V10 tzdata2008i (or later) Time Zone Update is applied');
 29     else
 30       dbms_output.put_line('V10 tzdata2008i (or later) Time Zone Update is not applied');
 31     end if;
 32     if test_dst('Asia/Karachi', 2009, 04, 16, 10, 0, 0) = 'Timestamp is *in* DST' then
 33       dbms_output.put_line('V11 tzdata2009g (or later) Time Zone Update is applied');
 34     else
 35       dbms_output.put_line('V11 tzdata2009g (or later) Time Zone Update is not applied');
 36     end if;
 37  -- DSTv13 check changed since this gave a false negative when DSTv14 is applied
 38     if test_dst('Pacific/Fiji', 2009, 11, 30, 10, 0, 0) = 'Timestamp is *in* DST' then
 39       dbms_output.put_line('V13 tzdata2009s (or later) Time Zone Update is applied');
 40     else
 41       dbms_output.put_line('V13 tzdata2009s (or later) Time Zone Update is not applied');
 42     end if;
 43     if test_dst('Pacific/Fiji', 2010, 11, 16, 10, 0, 0) = 'Timestamp is *in* DST' then
 44       dbms_output.put_line('V14 tzdata2010i (or later) Time Zone Update is applied');
 45     else
 46       dbms_output.put_line('V14 tzdata2010i (or later) Time Zone Update is not applied');
 47     end if;
 48    if test_dst('Asia/Hong_Kong', 1977, 07, 01, 10, 0, 0) = 'Timestamp is *in* DST' then
 49       dbms_output.put_line('V15 tzdata2010o (or later) Time Zone Update is not applied');
 50     else
 51       dbms_output.put_line('V15 tzdata2010o (or later) Time Zone Update is applied');
 52     end if;
 53    if test_dst('Europe/Istanbul', 2011, 03, 27, 10, 0, 0) = 'Timestamp is *in* DST' then
 54       dbms_output.put_line('V16 tzdata2011g (or later) Time Zone Update is not applied');
 55     else
 56       dbms_output.put_line('V16 tzdata2011g (or later) Time Zone Update is applied');
 57     end if;
 58    if test_dst('Europe/Moscow', 2012, 06, 20, 10, 0, 0) = 'Timestamp is *in* DST' then
 59       dbms_output.put_line('V17 tzdata2011i (or later) Time Zone Update is not applied');
 60     else
     dbms_output.put_line('V17 tzdata2011i (or later) Time Zone Update is applied');
 61   62     end if;
 63    if test_dst('Europe/Minsk', 2012, 06, 20, 10, 0, 0) = 'Timestamp is *in* DST' then
 64       dbms_output.put_line('V18 tzdata2012c (or later) Time Zone Update is not applied');
 65     else
 66       dbms_output.put_line('V18 tzdata2012c (or later) Time Zone Update is applied');
 67     end if;
 68     dbms_output.put_line('The TEST_DST function can be used to test your ''own'' time zones');
 69  end;

 70  /
V3  (or later) Time Zone Update is applied
V4  (or later) Time Zone Update is applied
V6  tzdata2007f (or later) Time Zone Update is applied
V7  tzdata2007k (or later) Time Zone Update is applied
V9  tzdata2008f (or later) Time Zone Update is applied
V10 tzdata2008i (or later) Time Zone Update is applied
V11 tzdata2009g (or later) Time Zone Update is applied
V13 tzdata2009s (or later) Time Zone Update is applied
V14 tzdata2010i (or later) Time Zone Update is applied
V15 tzdata2010o (or later) Time Zone Update is applied
V16 tzdata2011g (or later) Time Zone Update is applied
V17 tzdata2011i (or later) Time Zone Update is not applied
V18 tzdata2012c (or later) Time Zone Update is not applied
The TEST_DST function can be used to test your 'own' time zones

PL/SQL procedure successfully completed.

SQL> DROP function get_dst_offset;
Function dropped.

SQL> DROP function test_dst;

Function dropped.

SQL> DROP java source "OffsetFromStandard";

Java dropped.

SQL> select comp_name, version, status from dba_registry;

COMP_NAME
--------------------------------------------------------------------------------
VERSION                        STATUS
------------------------------ -----------
OWB
11.2.0.3.0                     VALID

Oracle Application Express
3.2.1.00.12                    VALID

Oracle Enterprise Manager
11.2.0.3.0                     VALID


COMP_NAME
--------------------------------------------------------------------------------
VERSION                        STATUS
------------------------------ -----------
OLAP Catalog
11.2.0.3.0                     VALID

Spatial
11.2.0.3.0                     VALID

Oracle Multimedia
11.2.0.3.0                     VALID


COMP_NAME
--------------------------------------------------------------------------------
VERSION                        STATUS
------------------------------ -----------
Oracle XML Database
11.2.0.3.0                     VALID

Oracle Text
11.2.0.3.0                     VALID

Oracle Expression Filter
11.2.0.3.0                     VALID


COMP_NAME
--------------------------------------------------------------------------------
VERSION                        STATUS
------------------------------ -----------
Oracle Rules Manager
11.2.0.3.0                     VALID

Oracle Workspace Manager
11.2.0.3.0                     VALID

Oracle Database Catalog Views
11.2.0.3.0                     VALID


COMP_NAME
--------------------------------------------------------------------------------
VERSION                        STATUS
------------------------------ -----------
Oracle Database Packages and Types
11.2.0.3.0                     VALID

JServer JAVA Virtual Machine
11.2.0.3.0                     VALID

Oracle XDK
11.2.0.3.0                     VALID


COMP_NAME
--------------------------------------------------------------------------------
VERSION                        STATUS
------------------------------ -----------
Oracle Database Java Packages
11.2.0.3.0                     VALID

OLAP Analytic Workspace
11.2.0.3.0                     VALID

Oracle OLAP API
11.2.0.3.0                     VALID


18 rows selected.

SQL> select owner, status, count(*) from all_objects where object_type like '%JAVA%' group by owner, status;

OWNER                          STATUS    COUNT(*)
------------------------------ ------- ----------
EXFSYS                         VALID           48
ORDSYS                         VALID         1948
MDSYS                          VALID          538
SYS                            VALID        21885

SQL> select role from dba_roles where role like '%JAVA%';
ROLE
------------------------------
JAVA_DEPLOY
JAVAUSERPRIV
JAVAIDPRIV
JAVASYSPRIV
JAVADEBUGPRIV
JAVA_ADMIN

6 rows selected.

SQL> select currently_used, name from  dba_feature_usage_statistics where name like '%Java%';

CURRE NAME
----- ----------------------------------------------------------------
FALSE Oracle Java Virtual Machine (user)
TRUE  Oracle Java Virtual Machine (system)

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options


$unzip p15897884_112030_Generic.zip

$cd 15897884

$/u01/app/oradb/product/11.2.0.3/dbhome_1/OPatch/opatch apply

$sqlplus "/as sysdba"

SQL*Plus: Release 11.2.0.3.0 Production on Fri Feb 22 10:32:06 2013

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 4.0899E+10 bytes
Fixed Size                  2168160 bytes
Variable Size            4294970016 bytes
Database Buffers         3.6507E+10 bytes
Redo Buffers               95125504 bytes
Database mounted.
Database opened.
SQL> @?/javavm/admin/fixTZa.sql

Session altered.


PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


Java created.

No errors.

Java altered.

No errors.

Package created.

No errors.

Package body created.

No errors.

PL/SQL procedure successfully completed.


Call completed.

Testing various timezone DST attributes
FAILED for America/Creston 1325401200000 -25200000 0
FAILED for America/Resolute 1325397600000 -21600000 0
FAILED for America/Resolute 1331452799999 -21600000 0
FAILED for America/Resolute 1331452800000 -21600000 3600000
FAILED for America/Resolute 1352012399999 -21600000 3600000
FAILED for America/Resolute 1352012400000 -21600000 0
FAILED for America/Resolute 1362902399999 -21600000 0
FAILED for America/Resolute 1362902400000 -21600000 3600000
FAILED for America/Resolute 1383461999999 -21600000 3600000
FAILED for America/Resolute 1383462000000 -21600000 0
FAILED for America/Resolute 1394351999999 -21600000 0
FAILED for America/Resolute 1394352000000 -21600000 3600000
FAILED for America/Resolute 1414911599999 -21600000 3600000
FAILED for America/Resolute 1414911600000 -21600000 0
FAILED for America/Resolute 1425801599999 -21600000 0
FAILED for America/Resolute 1425801600000 -21600000 3600000
FAILED for America/Resolute 1446361199999 -21600000 3600000
FAILED for America/Resolute 1446361200000 -21600000 0
FAILED for America/Resolute 1457855999999 -21600000 0
FAILED for America/Resolute 1457856000000 -21600000 3600000
FAILED for America/Resolute 1478415599999 -21600000 3600000
FAILED for America/Resolute 1478415600000 -21600000 0
FAILED for Chile/EasterIsland 1335668399999 -21600000 3600000
FAILED for Chile/EasterIsland 1346558400000 -21600000 3600000
FAILED for Pacific/Easter 1335668399999 -21600000 3600000
FAILED for Pacific/Easter 1346558400000 -21600000 3600000
FAILED for America/Havana 1333256399999 -18000000 0
FAILED for America/Havana 1352005199999 -18000000 3600000
FAILED for America/Havana 1383454799999 -18000000 3600000
FAILED for America/Havana 1414904399999 -18000000 3600000
FAILED for America/Havana 1446353999999 -18000000 3600000
FAILED for America/Havana 1478408399999 -18000000 3600000
FAILED for America/Port-au-Prince 1331449200000 -18000000 3600000
FAILED for America/Port-au-Prince 1352008799999 -18000000 3600000
FAILED for Cuba 1333256399999 -18000000 0
FAILED for Cuba 1352005199999 -18000000 3600000
FAILED for Cuba 1383454799999 -18000000 3600000
FAILED for Cuba 1414904399999 -18000000 3600000
FAILED for Cuba 1446353999999 -18000000 3600000
FAILED for Cuba 1478408399999 -18000000 3600000
FAILED for America/Goose_Bay 1331445599999 -14400000 0
FAILED for America/Goose_Bay 1352005199999 -14400000 3600000
FAILED for America/Goose_Bay 1362895199999 -14400000 0
FAILED for America/Goose_Bay 1383454799999 -14400000 3600000
FAILED for America/Goose_Bay 1394344799999 -14400000 0
FAILED for America/Goose_Bay 1414904399999 -14400000 3600000
FAILED for America/Goose_Bay 1425794399999 -14400000 0
FAILED for America/Goose_Bay 1446353999999 -14400000 3600000
FAILED for America/Goose_Bay 1457848799999 -14400000 0
FAILED for America/Goose_Bay 1478408399999 -14400000 3600000
FAILED for America/Kralendijk 1325390400000 -14400000 0
FAILED for America/Lower_Princes 1325390400000 -14400000 0
FAILED for America/Santiago 1335668399999 -14400000 3600000
FAILED for America/Santiago 1346558400000 -14400000 3600000
FAILED for Antarctica/Palmer 1335668399999 -14400000 3600000
FAILED for Antarctica/Palmer 1346558400000 -14400000 3600000
FAILED for Chile/Continental 1335668399999 -14400000 3600000
FAILED for Chile/Continental 1346558400000 -14400000 3600000
FAILED for America/St_Johns 1331443799999 -12600000 0
FAILED for America/St_Johns 1352003399999 -12600000 3600000
FAILED for America/St_Johns 1362893399999 -12600000 0
FAILED for America/St_Johns 1383452999999 -12600000 3600000
FAILED for America/St_Johns 1394342999999 -12600000 0
FAILED for America/St_Johns 1414902599999 -12600000 3600000
FAILED for America/St_Johns 1425792599999 -12600000 0
FAILED for America/St_Johns 1446352199999 -12600000 3600000
FAILED for America/St_Johns 1457846999999 -12600000 0
FAILED for America/St_Johns 1478406599999 -12600000 3600000
FAILED for CNT 1331443799999 -12600000 0
FAILED for CNT 1352003399999 -12600000 3600000
FAILED for CNT 1362893399999 -12600000 0
FAILED for CNT 1383452999999 -12600000 3600000
FAILED for CNT 1394342999999 -12600000 0
FAILED for CNT 1414902599999 -12600000 3600000
FAILED for CNT 1425792599999 -12600000 0
FAILED for CNT 1446352199999 -12600000 3600000
FAILED for CNT 1457846999999 -12600000 0
FAILED for CNT 1478406599999 -12600000 3600000
FAILED for Canada/Newfoundland 1331443799999 -12600000 0
FAILED for Canada/Newfoundland 1352003399999 -12600000 3600000
FAILED for Canada/Newfoundland 1362893399999 -12600000 0
FAILED for Canada/Newfoundland 1383452999999 -12600000 3600000
FAILED for Canada/Newfoundland 1394342999999 -12600000 0
FAILED for Canada/Newfoundland 1414902599999 -12600000 3600000
FAILED for Canada/Newfoundland 1425792599999 -12600000 0
FAILED for Canada/Newfoundland 1446352199999 -12600000 3600000
FAILED for Canada/Newfoundland 1457846999999 -12600000 0
FAILED for Canada/Newfoundland 1478406599999 -12600000 3600000
FAILED for America/Araguaina 1350788400000 -10800000 3600000
FAILED for America/Araguaina 1361066399999 -10800000 3600000
FAILED for America/Araguaina 1382238000000 -10800000 3600000
FAILED for America/Araguaina 1392515999999 -10800000 3600000
FAILED for America/Araguaina 1413687600000 -10800000 3600000
FAILED for America/Araguaina 1424570399999 -10800000 3600000
FAILED for America/Araguaina 1445137200000 -10800000 3600000
FAILED for America/Araguaina 1456019999999 -10800000 3600000
FAILED for America/Araguaina 1476586800000 -10800000 3600000
FAILED for America/Bahia 1325383200000 -10800000 3600000
FAILED for America/Bahia 1330221599999 -10800000 3600000
FAILED for Atlantic/Stanley 1325386800000 -10800000 0
FAILED for Africa/Casablanca 1335664800000 0 3600000
FAILED for Africa/Casablanca 1342749599999 0 3600000
FAILED for Africa/Casablanca 1345428000000 0 3600000
FAILED for Africa/Casablanca 1348970399999 0 3600000
FAILED for Africa/Casablanca 1367114400000 0 3600000
FAILED for Africa/Casablanca 1380419999999 0 3600000
FAILED for Africa/Casablanca 1398564000000 0 3600000
FAILED for Africa/Casablanca 1411869599999 0 3600000
FAILED for Africa/Casablanca 1430013600000 0 3600000
FAILED for Africa/Casablanca 1443319199999 0 3600000
FAILED for Africa/Casablanca 1461463200000 0 3600000
FAILED for Africa/Casablanca 1474768799999 0 3600000
FAILED for Africa/Tripoli 1352505600000 3600000 0
FAILED for Africa/Tripoli 1364515199999 3600000 0
FAILED for Africa/Tripoli 1364515200000 3600000 3600000
FAILED for Africa/Tripoli 1382659199999 3600000 3600000
FAILED for Africa/Tripoli 1382659200000 3600000 0
FAILED for Africa/Tripoli 1395964799999 3600000 0
FAILED for Africa/Tripoli 1395964800000 3600000 3600000
FAILED for Africa/Tripoli 1414713599999 3600000 3600000
FAILED for Africa/Tripoli 1414713600000 3600000 0
FAILED for Africa/Tripoli 1427414399999 3600000 0
FAILED for Africa/Tripoli 1427414400000 3600000 3600000
FAILED for Africa/Tripoli 1446163199999 3600000 3600000
FAILED for Africa/Tripoli 1446163200000 3600000 0
FAILED for Africa/Tripoli 1458863999999 3600000 0
FAILED for Africa/Tripoli 1458864000000 3600000 3600000
FAILED for Africa/Tripoli 1477612799999 3600000 3600000
FAILED for Africa/Tripoli 1477612800000 3600000 0
FAILED for Libya 1352505600000 3600000 0
FAILED for Libya 1364515199999 3600000 0
FAILED for Libya 1364515200000 3600000 3600000
FAILED for Libya 1382659199999 3600000 3600000
FAILED for Libya 1382659200000 3600000 0
FAILED for Libya 1395964799999 3600000 0
FAILED for Libya 1395964800000 3600000 3600000
FAILED for Libya 1414713599999 3600000 3600000
FAILED for Libya 1414713600000 3600000 0
FAILED for Libya 1427414399999 3600000 0
FAILED for Libya 1427414400000 3600000 3600000
FAILED for Libya 1446163199999 3600000 3600000
FAILED for Libya 1446163200000 3600000 0
FAILED for Libya 1458863999999 3600000 0
FAILED for Libya 1458864000000 3600000 3600000
FAILED for Libya 1477612799999 3600000 3600000
FAILED for Libya 1477612800000 3600000 0
FAILED for Asia/Damascus 1333058400000 7200000 3600000
FAILED for Asia/Damascus 1364508000000 7200000 3600000
FAILED for Asia/Damascus 1395957600000 7200000 3600000
FAILED for Asia/Damascus 1427407200000 7200000 3600000
FAILED for Asia/Damascus 1458856800000 7200000 3600000
FAILED for Asia/Gaza 1333058400000 7200000 3600000
FAILED for Asia/Gaza 1348178399999 7200000 3600000
FAILED for Asia/Hebron 1325368800000 7200000 0
FAILED for Asia/Hebron 1333058399999 7200000 0
FAILED for Asia/Hebron 1333058400000 7200000 3600000
FAILED for Asia/Hebron 1348178399999 7200000 3600000
FAILED for Asia/Hebron 1348178400000 7200000 0
FAILED for Asia/Jerusalem 1381013999999 7200000 3600000
FAILED for Asia/Jerusalem 1412463599999 7200000 3600000
FAILED for Asia/Jerusalem 1443913199999 7200000 3600000
FAILED for Asia/Jerusalem 1458864000000 7200000 3600000
FAILED for Asia/Jerusalem 1475362800000 7200000 0
FAILED for Asia/Tel_Aviv 1381013999999 7200000 3600000
FAILED for Asia/Tel_Aviv 1412463599999 7200000 3600000
FAILED for Asia/Tel_Aviv 1443913199999 7200000 3600000
FAILED for Asia/Tel_Aviv 1458864000000 7200000 3600000
FAILED for Asia/Tel_Aviv 1475362800000 7200000 0
FAILED for Israel 1381013999999 7200000 3600000
FAILED for Israel 1412463599999 7200000 3600000
FAILED for Israel 1443913199999 7200000 3600000
FAILED for Israel 1458864000000 7200000 3600000
FAILED for Israel 1475362800000 7200000 0
FAILED for Africa/Juba 1325365200000 10800000 0
FAILED for Europe/Kaliningrad 1325365200000 10800000 0
FAILED for Europe/Minsk 1325365200000 10800000 0
FAILED for Europe/Moscow 1325361600000 14400000 0
FAILED for Europe/Samara 1325361600000 14400000 0
FAILED for Europe/Volgograd 1325361600000 14400000 0
FAILED for W-SU 1325361600000 14400000 0
FAILED for Asia/Yekaterinburg 1325354400000 21600000 0
FAILED for Antarctica/Davis 1325358000000 18000000 0
FAILED for Antarctica/Davis 1329854399999 18000000 0
FAILED for Asia/Novokuznetsk 1325350800000 25200000 0
FAILED for Asia/Novosibirsk 1325350800000 25200000 0
FAILED for Asia/Omsk 1325350800000 25200000 0
FAILED for Antarctica/Casey 1325336400000 39600000 0
FAILED for Antarctica/Casey 1329843599999 39600000 0
FAILED for Asia/Krasnoyarsk 1325347200000 28800000 0
FAILED for Asia/Irkutsk 1325343600000 32400000 0
FAILED for Asia/Yakutsk 1325340000000 36000000 0
FAILED for Asia/Sakhalin 1325336400000 39600000 0
FAILED for Asia/Vladivostok 1325336400000 39600000 0
FAILED for Asia/Anadyr 1325332800000 43200000 0
FAILED for Asia/Kamchatka 1325332800000 43200000 0
FAILED for Asia/Magadan 1325332800000 43200000 0
FAILED for Pacific/Fiji 1325329200000 43200000 3600000
FAILED for Pacific/Fiji 1327154399999 43200000 3600000
FAILED for Pacific/Fiji 1350741600000 43200000 3600000
FAILED for Pacific/Fiji 1358603999999 43200000 3600000
FAILED for Pacific/Fiji 1382191200000 43200000 3600000
FAILED for Pacific/Fiji 1390053599999 43200000 3600000
FAILED for Pacific/Fiji 1413640800000 43200000 3600000
FAILED for Pacific/Fiji 1421503199999 43200000 3600000
FAILED for Pacific/Fiji 1445090400000 43200000 3600000
FAILED for Pacific/Fiji 1453557599999 43200000 3600000
FAILED for Pacific/Fiji 1477144800000 43200000 3600000
FAILED for MIT 1325325600000 46800000 3600000
FAILED for MIT 1333202399999 46800000 3600000
FAILED for MIT 1333202400000 46800000 0
FAILED for MIT 1348927199999 46800000 0
FAILED for MIT 1348927200000 46800000 3600000
FAILED for MIT 1365256799999 46800000 3600000
FAILED for MIT 1365256800000 46800000 0
FAILED for MIT 1380376799999 46800000 0
FAILED for MIT 1380376800000 46800000 3600000
FAILED for MIT 1396706399999 46800000 3600000
FAILED for MIT 1396706400000 46800000 0
FAILED for MIT 1411826399999 46800000 0
FAILED for MIT 1411826400000 46800000 3600000
FAILED for MIT 1428155999999 46800000 3600000
FAILED for MIT 1428156000000 46800000 0
FAILED for MIT 1443275999999 46800000 0
FAILED for MIT 1443276000000 46800000 3600000
FAILED for MIT 1459605599999 46800000 3600000
FAILED for MIT 1459605600000 46800000 0
FAILED for MIT 1474725599999 46800000 0
FAILED for MIT 1474725600000 46800000 3600000
FAILED for Pacific/Apia 1325325600000 46800000 3600000
FAILED for Pacific/Apia 1333202399999 46800000 3600000
FAILED for Pacific/Apia 1333202400000 46800000 0
FAILED for Pacific/Apia 1348927199999 46800000 0
FAILED for Pacific/Apia 1348927200000 46800000 3600000
FAILED for Pacific/Apia 1365256799999 46800000 3600000
FAILED for Pacific/Apia 1365256800000 46800000 0
FAILED for Pacific/Apia 1380376799999 46800000 0
FAILED for Pacific/Apia 1380376800000 46800000 3600000
FAILED for Pacific/Apia 1396706399999 46800000 3600000
FAILED for Pacific/Apia 1396706400000 46800000 0
FAILED for Pacific/Apia 1411826399999 46800000 0
FAILED for Pacific/Apia 1411826400000 46800000 3600000
FAILED for Pacific/Apia 1428155999999 46800000 3600000
FAILED for Pacific/Apia 1428156000000 46800000 0
FAILED for Pacific/Apia 1443275999999 46800000 0
FAILED for Pacific/Apia 1443276000000 46800000 3600000
FAILED for Pacific/Apia 1459605599999 46800000 3600000
FAILED for Pacific/Apia 1459605600000 46800000 0
FAILED for Pacific/Apia 1474725599999 46800000 0
FAILED for Pacific/Apia 1474725600000 46800000 3600000
FAILED for Pacific/Fakaofo 1325329200000 46800000 0
##
Bug is in fact present, so this patch is needed
##
(Perhaps) modifying ild_ub1$ for rehotloading of sun/util/calendar/ZoneInfoFile
obj# = 45849
nbytes %d = 64512, 1st read = 64512, 2nd read = -1
96 397776 385632 12144 joxbtflag>>8 = 3
===

PL/SQL procedure successfully completed.

########################################################
Bug is in fact present, so this patch is needed
Proceed by restarting the database and running script
fixTZb
########################################################

PL/SQL procedure successfully completed.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup migrate
ORACLE instance started.

Total System Global Area 4.0899E+10 bytes
Fixed Size                  2168160 bytes
Variable Size            4294970016 bytes
Database Buffers         3.6507E+10 bytes
Redo Buffers               95125504 bytes
Database mounted.
Database opened.
SQL> @?/javavm/admin/fixTZb.sql

Session altered.


PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


PL/SQL procedure successfully completed.


Call completed.

Testing various timezone DST attributes
########################################################
Bug is no longer present.  Patch succeeded.
########################################################

PL/SQL procedure successfully completed.

drop java source fixTZ
drop package fixTZ

PL/SQL procedure successfully completed.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 4.0899E+10 bytes
Fixed Size                  2168160 bytes
Variable Size            4294970016 bytes
Database Buffers         3.6507E+10 bytes
Redo Buffers               95125504 bytes
Database mounted.
Database opened.
SQL>


Всё, DST установлен.


Более коротко делаем так:

Проверить Timezone Version в БД:

SQL> SELECT PROPERTY_NAME, SUBSTR(property_value, 1, 30) value
     FROM DATABASE_PROPERTIES
     WHERE PROPERTY_NAME LIKE 'DST_%'
     ORDER BY PROPERTY_NAME;

SQL> SELECT version FROM v$timezone_file; VERSION ---------- 19

Для установки DST обновления Oracle JVM (Patch 15897884) необходимо:
1) Выполнить скрипт:
SQL> @?/javavm/admin/fixTZa.sql

2) Выполнить:
SQL> shutdown immediate
SQL> startup migrate

3) Выполнить скрипт:
SQL> @?/javavm/admin/fixTZb.sql

4) Выполнить:
SQL> shutdown immediate
SQL> startup