You are on page 1of 26

Complete Checklist for Manual Upgrades to 11gR1 [ID 429825.

1]
Modified 28-SEP-2010

Type BULLETIN

Status PUBLISHED

In this Document
Purpose
Scope and Application
Complete Checklist for Manual Upgrades to 11gR1
Requirements and recommendations
Compatibility Matrix
Pre-Upgrade Steps
Collecting Pre-Upgrade Information
Preparing Database for Upgrade
Upgrading Database to 11gR1
Post Upgrade Steps
References

Applies to:
Oracle Server - Enterprise Edition - Version: 11.1.0.6 to 11.1.0.7 - Release: 11.1 to 11.1
Oracle Server - Standard Edition - Version: 11.1.0.6 to 11.1.0.7 [Release: 11.1 to 11.1]
Information in this document applies to any platform.
Oracle Server Enterprise Edition - Version: 11.1.0.6

Purpose
This document is created for use as a guideline and checklist when manually upgrading from
Oracle 9iR2, Oracle 10gR1, Oracle 10gR2 to Oracle 11gR1 (11.1).
For more detailed instructions, it is always suggested to refer Oracle Database Upgrade
Guide 11g Release 1 (11.1).

Scope and Application


Database Administrators, Support

Complete Checklist for Manual Upgrades to 11gR1


Requirements and recommendations

Download and Install Oracle 11g Release 1 in a new Oracle Home and make sure
there are no relinking errors.
Install the latest available Patchset from Metalink. (If available).
Install the latest available Critical Patch Update. (If available).
Either take a Cold or Hot backup of your source database (advisable to have cold
backup).

If you are upgrading to 11.1.0.6, review the following alert before performing the
upgrade and apply any required patches:

Note 579523.1 - ORA-600 [22635], ORA-600 [KOKEIIX1], ORA-7445 [KOPESIZ] and


OCI-21500 [KOXSIHREAD1] Reported While Upgrading To
11.1.0.6

Compatibility Matrix

Minimum Version of the database that can be directly upgraded to Oracle 11g Release
1

Source Database
9.2.0.4.0 (or higher)
10.1.0.2.0 (or higher)
10.2.0.1.0 (or higher)

Target Database
11.1.x
11.1.x
11.1.x

The following database version will require an indirect upgrade path.


Upgrade Path for Target
Database

Source Database
7.3.3.0.0 (or lower)
8.0.5.0.0 (or lower)
8.1.7.0.0 (or lower)
9.0.1.3.0 (or lower)

>
>
>
>

7.3.4.x --> 9.2.0.8


8.0.6.x --> 9.2.0.8
8.1.7.4 --> 9.2.0.8
9.0.1.4 --> 9.2.0.8

Target Database
>
>
>
>

11.1.x
11.1.x
11.1.x
11.1.x

For example:If source database is 8.1.7.0.0, the upgrade path to be followed is as below
8.1.7.0.0 --> 8.1.7.4 --> 9.2.0.4 (or higher) --> 11.1.x.

Pre-Upgrade Steps
In this section all the steps need to be performed after having set the environment of the
previous version of the Oracle Database. Note that the database must be running in normal
mode in the old release.

Collecting Pre-Upgrade Information

Step 1:
------Log in to the system as the owner of the new 11gR1 ORACLE_HOME and copy the
following file from the 11gR1 ORACLE_HOME/rdbms/admin directory to a directory
outside of the Oracle home, such as the /tmp directory on your system:
$ORACLE_HOME/rdbms/admin/utlu111i.sql

Step 2:
------Change to the directory where utlu111i.sql has been copied in the previous step.
Start SQL*Plus and connect to the database instance as a user with SYSDBA privileges. Then
run and spool the utlu111i.sql file. Please note that the database should be started using the
Source Oracle Home (9.2.0.x or 10.1.0.x or 10.2.0.x)
$ sqlplus '/ as sysdba'
SQL> spool upgrade_info.log
SQL> @utlu111i.sql
SQL> spool off

Check the spool file and examine the output of the upgrade information tool.
The sections which follow, describe the output of the Upgrade Information Tool.
For Sample output, Click here
Database:
This section displays global database information about the current database such as the
database name, release number, blocksize, compatibility level and the version of the timezone
file. A warning is displayed under Update Parameters, if the COMPATIBLE initialization
parameter needs to be adjusted before the database is upgraded. If the timezone file version is
not 4, then a warning is given to Patch the database to timezone file version 4 before
upgrading the database.
Logfiles:
This section displays a list of redo log files in the current database whose size is less than 4
MB. For each log file, the file name, status, group number and recommended size is
displayed. New files of at least 4 MB (preferably 10 MB) need to be created in the current
database. Any redo log files less than 4 MB must be dropped before the database is upgraded.
Tablespaces:
This section displays a list of tablespaces in the current database. For each tablespace, the
tablespace name and minimum required size is displayed. In addition, a message is displayed
if the tablespace is adequate for the upgrade. If the tablespace does not have enough free
space, then space must be added to the tablespace in the current database. Tablespace
adjustments need to be made before the database is upgraded.
Update Parameters:

This section displays a list of initialization parameters in the parameter file of the current
database that must be adjusted before the database is upgraded. The adjustments need to be
made to the parameter file after it is copied to the new Oracle Database 11g release 1 (11.1).
Deprecated Parameters:
This section displays a list of initialization parameters in the parameter file of the current
database that are deprecated in the new Oracle Database 11g release 1 (11.1). Deprecated
Parameters means, the parameters which gradually phase-out with new releases. In future,
these will be made obsolete, so it is advisable to avoid using deprecated parameters.
Appendix A: "Deprecated Initialization Parameters" for a list of initialization parameters that
are deprecated in Oracle Database 11g release 1 (11.1).
Obsolete Parameters:
This section displays a list of initialization parameters in the parameter file of the current
database that are obsolete in the new Oracle Database 11g release 1 (11.1). Obsolete
Parameters need to be removed from the parameter file before the database is upgraded.
Obsolete Parameters means, which are no longer valid (or) in use.
Appendix B: "Obsolete Initialization Parameters" for a list of initialization parameters that are
obsolete in Oracle Database 11g release 1 (11.1)
Components:
This section displays a list of database components in the new Oracle Database 11g release 1
(11.1) that will be upgraded or installed when the current database is upgraded.
Miscellaneous Warnings:
This section provides warnings about specific situations that may require attention before
and/or after the upgrade. For instance, information about timezone files, stale optimizer
statistics, invalid objects. Note that these issues MUST be reviewed before the upgrade and
addressed appropriately.
SYSAUX Tablespace:
This section displays the minimum required size for the SYSAUX tablespace, which is
required in Oracle Database 11g Release 1 (11.1). If not present, the SYSAUX tablespace
must be created after the new release is started and before the upgrade scripts are invoked
(Not required for Oracle 10g).

Preparing Database for Upgrade


Step3
------

Check for the integrity of the source database


Check for the integrity of the source database prior to starting the upgrade by downloading
and running dbupgdiag.sql script from below Metalink article
Note 556610.1 Script to Collect DB Upgrade/Migrate Diagnostic Information
(dbupgdiag.sql)
If the dbupgdiag.sql script reports any invalid objects, run
$ORACLE_HOME/rdbms/admin/utlrp.sql (multiple times) to validate the invalid objects in
the database, until there is no change in the number of invalid objects.
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> @utlrp.sql

Prior to upgrade, resolving invalid objects under SYS and SYSTEM is mandatory.
After validating the invalid objects, re-run dbupgdiag.sql in the database once again and make
sure that everything is fine.
Step 4
------Deprecated CONNECT Role
After upgrading to Oracle Database 11g Release 1 (11.1) from Oracle Database9i Release 2
(9.2) or Oracle Database 10g Release 1 (10.1), the CONNECT role has only the CREATE
SESSION privilege; the other privileges granted to the CONNECT role in earlier releases are
revoked during the upgrade. To identify which users and roles in your database are granted the
CONNECT role, use the following query:
SELECT grantee
FROM dba_role_privs
WHERE granted_role = 'CONNECT'
AND grantee
NOT IN ('SYS', 'OUTLN', 'SYSTEM', 'CTXSYS', 'DBSNMP','LOGSTDBY_ADMINISTRATO
R',
'ORDSYS','ORDPLUGINS', 'OEM_MONITOR', 'WKSYS', 'WKPROXY','WK_TEST',
'WKUSER', 'MDSYS', 'LBACSYS', 'DMSYS','WMSYS', 'OLAPDBA', 'OLAPSVR',
'OLAP_USER','OLAPSYS', 'EXFSYS', 'SYSMAN', 'MDDATA','SI_INFORMTN_SCHEMA',
'XDB', 'ODM');

If users or roles require privileges other than CREATE SESSION, then grant the specific
required privileges prior to upgrade.
The upgrade scripts adjust the privileges for the Oracle-supplied users.
In Oracle 9.2.x and 10.1.x CONNECT role includes the following privileges:
SELECT GRANTEE,PRIVILEGE
FROM DBA_SYS_PRIVS

WHERE GRANTEE ='CONNECT'


GRANTEE
------CONNECT
CONNECT
CONNECT
CONNECT
CONNECT
CONNECT
CONNECT
CONNECT

PRIVILEGE
---------------------CREATE VIEW
CREATE TABLE
ALTER SESSION
CREATE CLUSTER
CREATE SESSION
CREATE SYNONYM
CREATE SEQUENCE
CREATE DATABASE LINK

From Oracle 10.2, 'CONNECT' role only includes 'CREATE SESSION' privilege.
Step 5
------Create Script for DBLINK (In case the database has to be downgraded again)
During the upgrade to Oracle Database 11g Release 1 (11.1) from Oracle Database 9i
Release 2 (9.2) or Oracle Database 10g Release 1 (10.1), any passwords in database links are
encrypted. To downgrade to the original release, all of the database links with encrypted
passwords must be dropped prior to the downgrade. Consequently, the database links do not
exist in the downgraded database. If you anticipate a requirement to be able to downgrade to
your original release, then save the information about affected database links from the
SYS.LINK$ table, so that you can re-create the database links after the downgrade.
SELECT 'CREATE '||DECODE(U.NAME,'PUBLIC','public ')||'DATABASE LINK '||
CHR(10)
||DECODE(U.NAME,'PUBLIC',Null, 'SYS','',U.NAME||'.')|| L.NAME||chr(10)
||'CONNECT TO ' || L.USERID || ' IDENTIFIED BY "'||L.PASSWORD||'" USING
'''||L.HOST||''''
||chr(10)||';' TEXT
FROM SYS.LINK$ L, SYS.USER$ U
WHERE L.OWNER# = U.USER#;

Step 6
------Check for TIMESTAMP WITH TIMEZONE Datatype
The time zone files that are supplied with Oracle Database 11g Release 1 (11.1) have been
updated from version 2 to version 4 to reflect changes in transition rules for some time zone
regions. The changes might affect existing data of TIMESTAMP WITH TIME ZONE data
type. If you have not already updated your existing databases to time zone file version 4, you
must do so prior to upgrading to Oracle Database 11g Release 1 (11.1). Refer below articles
for the patch availability
To find the Version 4 Patch for your current Database:
Note 413671.1 Applying "version 4" Time Zone Files on an Oracle Database
If patch is not available for your patchset, then refer

Note 396387.1 Workarounds when Database time zone patches are not available for your
patchset
If your existing databases are already using a time zone file version greater than 4, then
after installing Oracle Database 11g Release 1 (11.1), you must patch the ORACLE_HOME
with the appropriate patch for the time zone file version in use with the database(s) you will
be upgrading.
If the time zone file version used by the Oracle Database 11g Release 1 (11.1) server does
not match the time zone file version that was used with the existing database being upgraded,
then the upgrade script will terminate without upgrading the database. The TIMESTAMP
WITH TIME ZONE data stored in the database can be corrupted during the upgrade if there is
a time zone file version mismatch.
Finding the Version of existing timezone files:
In Oracle 10gR1 and Oracle 10gR2
SQL> select * from v$timezone_file;
FILENAME VERSION
------------ ---------timezlrg.dat 4
In Oracle 9iR2
SQL> SELECT CASE COUNT(DISTINCT(tzname))
WHEN 183 then 1
WHEN 355 then 1
WHEN 347 then 1
WHEN 377 then 2
WHEN 186 then CASE COUNT(tzname)
WHEN 626 then 3 ELSE 0 END
WHEN 185 then 3
WHEN 386 then 3
WHEN 387 then case COUNT(tzname)
WHEN 391 then case COUNT(tzname)
WHEN 392 then case COUNT(tzname)
WHEN 188 then case COUNT(tzname)
WHEN 189 then case COUNT(tzname)
ELSE 0 end VERSION
FROM v$timezone_names;

WHEN 636 then 2

WHEN
WHEN
WHEN
WHEN
WHEN

1438 then 3 ELSE 0 end


1457 then 4 ELSE 0 end
1458 then 4 ELSE 0 end
637 then 4 ELSE 0 end
638 then 4 ELSE 0 end

VERSION
---------4

FYI: Scripts taken from Note 402742.1 USA 2007 DST Changes: Frequently Asked
Questions for Oracle Database Patches
If this gives a version timezone_file higher or lower then 4, then:
If you are upgrading from 10gR1 or 10gR2, see
When upgrading to 11.1.0.6:

Note 829734.1 Actions for the DSTv4 update in the 11.1.0.6 base release
When upgrading to 11.1.0.7:
Note 568125.1 Actions for the DSTv4 update in the 11.1.0.7 patchset
If you are upgrading from 9iR2 see
When upgrading to 11.1.0.6:
Note 829734.1 Actions for the DSTv4 update in the 11.1.0.6 base release
When upgrading to 11.1.0.7:
Note 568125.1 Actions for the DSTv4 update in the 11.1.0.7 patchset
Note: If the timezone files are updated to version 4, run utlu111i.sql script to record the new
timezone file version in the registry$database. Ignoring will result in "ORA-01722 invalid
number". To confirm the tz is registered correctly, run the following sql statement:
SQL> select TZ_VERSION from registry$database;

Step 7
------Starting in Oracle 9i the National Characterset (NLS_NCHAR_CHARACTERSET) will be
limited to UTF8 and AL16UTF16.
For more details refer to the below Note
Note 276914.1 The National Character Set in Oracle 9i and 10g.
Since the upgrade is from Oracle 9iR2 and above, the National CharacterSet will be 'UTF8'
and 'AL16UTF16'. Run the following sql statement to confirm:
select value from NLS_DATABASE_PARAMETERS where
parameter='NLS_NCHAR_CHARACTERSET';

Step 8
------Optimizer Statistics
When upgrading to Oracle Database 11g Release 1 (11.1), optimizer statistics are collected for
dictionary tables that lack statistics. This statistics collection can be time consuming for
databases with a large number of dictionary tables, but statistics gathering only occurs for
those tables that lack statistics or are significantly changed during the upgrade.
To determine the schemas which lacks statistics, download and run the script from below
Metalink article

Note 560336.1 Script to Check Schemas with Stale Statistics


To decrease the amount of downtime incurred when collecting statistics, you can collect
statistics prior to performing the actual database upgrade. As of Oracle Database 10g Release
1 (10.1), Oracle recommends that you use the
DBMS_STATS.GATHER_DICTIONARY_STATS procedure to gather these statistics. For
example, you can enter the following:
$ sqlplus "/as sysdba"
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;

If you are using Oracle Database 9i Release 2 (9.2), then you should use the
DBMS_STATS.GATHER_SCHEMA_STATS procedure to gather statistics. To do this, you
can run the scripts provided in Appendix D.
Appendix D has sample script, which creates the table, dictstattab, and exports the statistics
for the RDBMS component schema into it. The statistics collection might give errors if a
particular component schema does not exist in the database, or if a component is not installed
or invalid.
Backup the existing statistics to revert / import back the statistics, once the upgrade is
successful.
For example, the following PL/SQL subprograms import the statistics for the SYS schema
after deleting the existing statistics:
SQL> EXEC DBMS_STATS.DELETE_SCHEMA_STATS('SYS');
SQL> EXEC DBMS_STATS.IMPORT_SCHEMA_STATS('SYS','dictstattab');

Step 9
------Disable Oracle Database Vault
If you have enabled Oracle Database Vault, then you must disable it before upgrading the
database, and enable it again when the upgrade is finished.
Refer to the following Metalink Documents for Disabling Oracle Database Vault before the
upgrade and enabling it after the upgrade.
Note.803948.1 - How To Uninstall Or Reinstall Database Vault in 11g
Note 453902.1 - Enabling and Disabling Oracle Database Vault in WINDOWS
Step 10
------Backing up Enterprise Manager Database Control Data

(Applicable only if you are upgrading from 10g. If you are upgrading from 9.2.0.x then you
can ignore this step)
After upgrading to Oracle Database 11g release 1 (11.1), if you want to downgrade Oracle
Enterprise Manager Database Control you must save your Database Control files and data
before upgrading your database. The emdwgrd utility can be used to keep a copy of your
database control files and data before upgrading your database. The emdwgrd utility resides in
the ORACLE_HOME/bin directory in the Oracle Database 11g release 1 (11.1) home.
1. Set ORACLE_HOME to your old Oracle home
2. Set ORACLE_SID to the SID of the database being upgraded.
3. Set PATH, LD_LIBRARY_PATH and SHLIB_PATH to point to the Oracle home from
which the database is being upgraded.
4. Change directory to Oracle Database 11g release 1 (11.1) home.
5.
a- Run the following command for single instance database
$ emdwgrd -save -sid old_SID -path save_directory

where old_SID is the SID of the database being upgraded and save_directory is the path to the
storage place you have chosen for your Database Control files and data:
b- For RAC database, remote copy is required across the cluster nodes. Define an
environment variable to indicate which remote copy is configured. For example: setenv
EM_REMCP /usr/bin/scp
$ emdwgrd -save -cluster -sid old_SID -path save_directory

Note: If 10g Oracle home is on a shared device, add -shared to the previous command line.
The above command(s) may core dump in HP-UX Itanium platform, which is a known issue.
For more information, refer to following Metalink article
Note 562980.1 - emdwgrd core dumps : emdwgrd[228]: 10366 Memory fault(coredump)
6. Enter the SYS password for the database to be upgraded.
Note : On RAC databases you will be prompted to run '/tmp/racdwgrd_dbctl.sh' on each of the
nodes.
Step 11
-------Configuring Network ACL's
Oracle Database 11g Release 1 (11.1) includes fine-grained access control to the UTL_TCP,
UTL_SMTP, UTL_MAIL, UTL_HTTP, or UTL_INADDR packages using Oracle XMLDB.
If you have applications that use one of these packages, you must install OracleXML DB if it
is not already installed. You must also configure network access control lists (ACLs) in the
database before these packages can work as they did in prior releases. Actions are discussed in
Post Upgrade tasks (Step 33), as the DBMS_NETWORK_ACL_ADMIN package is
introduced after upgrading the database and not available in prior releases.

Step 12
--------Check for corruption in the dictionary, use the following commands in SQL*Plus (connected
as sys):
Set verify off
Set space 0
Set line 120
Set heading off
Set feedback off
Set pages 1000
Spool analyze.sql
SELECT 'Analyze cluster "'||cluster_name||'" validate structure cascade;'
FROM dba_clusters
WHERE owner='SYS'
UNION
SELECT 'Analyze table "'||table_name||'" validate structure cascade;'
FROM dba_tables
WHERE owner='SYS'
AND partitioned='NO'
AND (iot_type='IOT' OR iot_type is NULL)
UNION
SELECT 'Analyze table "'||
table_name||'" validate structure cascade into invalid_rows;'
FROM dba_tables
WHERE owner='SYS'
AND partitioned='YES';
spool off

This creates a script called analyze.sql.


Now execute the following steps.
$ sqlplus "/ as sysdba"
SQL> @$ORACLE_HOME/rdbms/admin/utlvalid.sql
SQL> @analyze.sql

This script (analyze.sql) should not return any errors.


Note:
1. ORA-30657 might occur, if there is any external table is validated, which can be safely
ignored as per Note 209355.1 ORA-30657: Using ANALYZE TABLE for an External Table
2. Errors shown below when executing analyze.sql can be ignored:

SP2-0734: unknown command beginning "SQL> SELEC..." - rest of line ignored.


SP2-0042: unknown command "SQL>" - rest of line ignored.
SP2-0734: unknown command beginning "SQL> spool..." - rest of line ignored.

Step 13
--------Ensure that all snapshot refreshes are successfully completed, and that replication is stopped.
$ sqlplus "/as sysdba"
SQL> SELECT distinct(trunc(last_refresh))
FROM dba_snapshot_refresh_times;

For more information refer below article


Note 258021.1 How to monitor the progress of a materialized view refresh (MVIEW)
Step 14:
--------a) Stop the listener for the database:
$ lsnrctl stop

Previous versions of the listener are not supported for use with an Oracle Database 11g
Release 1 (11.1) database. However, it is possible to use the new version of the listener with
previous versions of Oracle Database.
If you are upgrading from 9i or upgrading manually without using DBUA, run Oracle Net
Configuration Assistant before upgrading the Oracle RAC database.
This is a two-step option. You must first run Oracle Net Configuration Assistant from the old
Oracle home to remove the old listener. Then you must run Oracle Net Configuration
Assistant again from the new Oracle Database 11g Release 1 (11.1) home to create a new
listener.
You must remove the old listener before creating a new one. If you attempt to create a new
listener from the new Oracle home first, and use the same name and port as the old listener,
then Oracle Net Configuration Assistant returns an error.
Note:
This is your only option if you want to upgrade your Oracle RAC database manually.
b) Stop other executables such as dbconsole, isqlplus
$ emctl stop dbconsole
$ isqlplusctl stop

Step 15:
-------Ensure no files need media recovery
$ sqlplus "/ as sysdba"
SQL> SELECT * FROM v$recover_file;

This should return no rows.


Ensure no files are in backup mode:
SQL> SELECT * FROM v$backup WHERE status!='NOT ACTIVE';

This should return no rows.


Step 16:

-------Resolve any outstanding unresolved distributed transaction:


SQL> select * from dba_2pc_pending;

If this returns rows you should do the following:


SQL> SELECT local_tran_id
FROM dba_2pc_pending;
SQL> EXECUTE dbms_transaction.purge_lost_db_entry('');
SQL> COMMIT;

Step 17:
-------Disable all batch and cron jobs.
Step 18:
-------Ensure the users sys and system have 'system' as their default tablespace.
SQL> SELECT username, default_tablespace
FROM dba_users
WHERE username in ('SYS','SYSTEM');

If DEFAULT_TABLESPACE is anything other than SYSTEM tablespace, modify the default


tablespace to SYSTEM by using the below command.
SQL> ALTER user SYS default tablespace SYSTEM;
SQL> ALTER user SYSTEM default tablespace SYSTEM;

Step 19:
--------Ensure that the aud$ is in the system tablespace when auditing is enabled.
SQL> SELECT tablespace_name
FROM dba_tables
WHERE table_name='AUD$';

You may also wish to consider reviewing:


Note 979942.1 Database upgrade appears to have halted at SYS.AUD$ Table
to improve upgrade performance.
Step 20:
-------Check whether database has any externally authenticated SSL users.
SQL> SELECT name FROM sys.user$
WHERE ext_username IS NOT NULL
AND password = 'GLOBAL';

If any SSL users are found then Step 31 has to be followed after the upgrade

Step 21:
-------Note down the location of datafiles, redo logs, control files. Also take a backup of all
configuration files like listener.ora,tnsnames.ora,etc., from $ORACLE_HOME.
SQL> SELECT name FROM v$controlfile;
SQL> SELECT file_name FROM dba_data_files;
SQL> SELECT group#, member FROM v$logfile;

After, noting down the the locations, Shutdown the database.


$ sqlplus "/as sysdba"
SQL> shutdown immediate;

Back Up the Database


1- Perform Cold Backup
(or)
2- Take a backup using RMAN
Connect to RMAN:
rman "target / nocatalog"
RUN
{
ALLOCATE CHANNEL chan_name TYPE DISK;
BACKUP DATABASE FORMAT '<db_backup_directory>%U' TAG before_upgrade;
BACKUP CURRENT CONTROLFILE FORMAT '<controlfile_location_and_name>';
}

--> backup_directory >> Location of the Database backup.


--> controlfile_backup_directory >> Location of the Controlfile backup.
Step 22
-------Make a backup of the init<SID>.ora file.
Comment out obsoleted parameters( Appendix A ) and change all deprecated parameters(
Appendix B ).

The DIAGNOSTIC_DEST initialization parameter replaces the USER_DUMP_DEST,


BACKGROUND_DUMP_DEST, and CORE_DUMP_DEST parameters.

Refer the below article for understanding directory structure in 11g and
DIAGNOSTIC_DEST.
Note 454442.1 11g Install : Understanding about Oracle Base, Oracle Home and Oracle
Inventory locations
Set the COMPATIBLE initialization parameter to an appropriate value. If you are
upgrading from 9.2.0.x then set the COMPATIBLE parameter to 10.1.0 until after the
upgrade has been completed successfully.(Please note, once you set the

COMPATIBLE to 10.1 there is no way to downgrade to 9ir2 because of symptoms


described in Note 388604.1 : ORA-00201 while downgrading from 10gR2 to 10gR1 or
9iR2 ).
If you are upgrading from 10.1.0.x or 10.2.0.x then you can leave the COMPATIBLE
parameter set to it's current value until the upgrade has been completed successfully.
This will avoid any unnecessary ORA-942 errors from being reported in SMON trace
files during the upgrade (because the upgrade is looking for 10.2 objects that have not
yet been created)
Adjust the values of the initialization parameters to at least the minimum value
indicated by the Pre-Upgrade Information Tool. Make sure all path names in the
parameter file are fully specified. You should not have relative path names in the
parameter file.
If you are using a cluster database, set the parameter CLUSTER_DATABASE=FALSE
during the upgrade and set it back to true after the upgrade. If you are upgrading a
cluster database, then modify the init<SID>.ora file in the same way that you
modified the parameter file.

Note: Once the Parameter file is modified as per your requirement, copy the file to
$ORACLE_HOME/dbs (database directory on Windows) of 11gR1 Oracle Home.
Step 23
-------Check for adequate freespace on archive log destination file systems. Note that if your
database is in archivelog mode, then it is always desirable and advisable to upgrade the
database in noarchivelog mode as that will reduce the time taken to upgrade the database.
After the upgrade you can again put the database in the archivelog mode.
Step 24
------If your operating system is Windows then complete the actions in this Step, else skip to next
Step.
Stop the OracleServiceSID Oracle service of the database you are upgrading, where SID is
the instance name. For example, if your SID is ORCL, then enter the following at a command
prompt:
Set the environment to Source / Previous version (9.2 / 10.1 / 10.2)
1- Stop the Oracle database service

C:\> NET STOP OracleServiceORCL

2- Delete Oracle service using ORADIM binary from which the database is upgraded to 11.1.
C:\> ORADIM -DELETE -SID ORCL

3- Create the Oracle Database 11g Release 1 (11.1) service at a command prompt using the
ORADIM command of the new Oracle Database release:
C:\> ORADIM -NEW -SID SID -INTPWD PASSWORD
%ORACLE_HOME%\DATABASE\INIT<SID>.ORA
For Instance,

-STARTMODE AUTO -PFILE

C:\> ORADIM -NEW -SID ORCL -INTPWD <PASSWORD> -STARTMODE AUTO PFILE %ORACLE_HOME%\DATABASE\INIT<SID>.ORA

Step 25
------If your operating system is UNIX then complete this step, else skip to next Step.
1. Make sure the following environment variables point to the Oracle 11g Release directories:
- ORACLE_BASE
- ORACLE_HOME
- PATH
$ export ORACLE_HOME=<location of Oracle 11.1>
$ export PATH=$ORACLE_HOME/bin:$PATH
$ export ORACLE_BASE=<Oracle_Base set during installation>

Note : If ORACLE_BASE is not known, after setting Path towards 11g Oracle Home, execute
'orabase', which will point the location of base.
$ orabase
/uo1/app/oracle

2. Update the oratab entry, to set the new ORACLE_HOME pointing towards ORCL and
disable automatic startup
Sample /etc/oratab
#orcl:/opt/oracle/product/10.2/db_1:N
orcl:/opt/oracle/product/11.1/db_1:N

Note : After /etc/oratab is updated to have sid and Oracle Home (11.1), you can execute
oraenv (/usr/local/bin/oraenv) and set the environment. The input has to be the sid which is
entered in /etc/oratab against 11g home.
for Instance,
[oracle@localhost ~]$ . oraenv
ORACLE_SID = [orcl] ? orcl
The Oracle base for ORACLE_HOME=/opt/oracle/product/11.1/db_1 is
/u01/app/oracle
[oracle@localhost ~]$

Upgrading Database to 11gR1


Step 26
--------

At the operating system prompt, change to the $ORACLE_HOME/rdbms/admin directory of


11gR1 Oracle Home
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus "/ as sysdba"
SQL> startup UPGRADE

SYSAUX Tablespace
Create the SYSAUX tablespace only if you are upgrading from Oracle Database9i Release 2
(9.2) with the following mandatory attributes:
ONLINE
PERMANENT
READ WRITE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
The Pre-Upgrade Information Tool provides an estimate of the minimum required size for the
SYSAUX tablespace in the SYSAUX Tablespace section. Refer the output generated by
utlu111i.sql script in Step 1. The following SQL statement would create a 500 MB SYSAUX
tablespace for the database:
SQL> CREATE TABLESPACE SYSAUX
DATAFILE '<location>/sysaux01.dbf'
SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
ONLINE;

Upgrade Database
Set the system to spool results to a log file for later verification after the upgrade is completed
and start the upgrade script.
SQL>
SQL>
SQL>
SQL>

set echo on
SPOOL upgrade.log
@catupgrd.sql
spool off

The catupgrd.sql script determines which upgrade scripts must be run, runs them, and then
shuts down the database. You must run the script in the Oracle Database 11g Release 1 (11.1)
environment. The upgrade script creates and alters certain data dictionary tables. For a
complete list of the database components that will be installed / upgraded in the new Oracle
Database 11g Release 1 (11.1) database refer to Step 11 in Oracle Database upgrade guide
(Click here).
Database will be shutdown by catupgrd.sql script. Restart the Instance to reinitialize the
system parameters for normal operation. This restart, following the database shutdown
performed as part of the catupgrd.sql script, flushes all caches, clears buffers, and performs
other housekeeping activities.
These measures are an important final step to ensure the integrity and consistency of the
newly upgraded Oracle Database software.Also, if you encountered a message listing
obsolete initialization parameters when you started the database for upgrade, then remove

the obsolete initialization parameters from the parameter file before restarting. If necessary,
convert the SPFILE to a PFILE so you can edit the file to delete parameters.
Post Upgrade Status Tool
Run the Post-Upgrade Status Tool $ORACLE_HOME/rdbms/admin/utlu111s.sql which
provides a summary of the upgrade at the end of the spool log. It displays the status of the
database components in the upgraded database and the time required to complete each
component upgrade. Any errors that occur during the upgrade are listed with each
component and must be addressed. Click here for sample output of utlu111s.sql and refer step
13.
$ sqlplus "/as sysdba"
SQL> STARTUP
SQL> @utlu111s.sql

Additionally Required Upgrade Action


Run catuppst.sql, located in the $ORACLE_HOME/rdbms/admin directory, to perform
upgrade actions that do not require the database to be in UPGRADE mode:
SQL> @catuppst.sql

Validate Invalid Schema Objects


This script can be run concurrently with utlrp.sql. Run utlrp.sql to recompile any remaining
stored PL/SQL and Java code in another session.
SQL> @utlrp.sql

Check for the integrity of the upgraded database


Check for the integrity of the upgraded database by running dbupgdiag.sql script from below
Metalink article
Note 556610.1 Script to Collect DB Upgrade/Migrate Diagnostic Information (dbupgdiag.sql)
If the dbupgdiag.sql script reports any invalid objects, run
$ORACLE_HOME/rdbms/admin/utlrp.sql (multiple times) to validate the invalid objects in
the database, until there is no change in the number of invalid objects.
After validating the invalid objects, re-run dbupgdiag.sql in the upgraded database once again
and make sure that everything is fine.

Post Upgrade Steps


Note: For the full list of post-upgrade steps, refer to Chapter 4 - 'After
Upgrading to the New Release' in 11g Upgrade Guide.

Step 27
-------Modify the listener.ora file:
For the upgraded instance(s) modify the ORACLE_HOME parameter to point to the new
ORACLE_HOME. Start the listener :

lsnrctl start

Step 28
-------Environment Variables
1. Make sure the following environment variables point to the Oracle 11g Release directories:
- ORACLE_BASE
- ORACLE_HOME
- PATH
Also check that your oratab file and any client scripts that set the value of ORACLE_HOME
point to the Oracle Database 11g Release 1 (11.1) home.
Note : If you are upgrading a cluster database, then perform these checks on all nodes in
which this cluster database has instances configured.
2. Modify /etc/oratab entry to use automatic startup
SID:ORACLE_HOME:Y
For Instance,
orcl:/opt/oracle/product/11.1/db_1:Y

Step 29
-------Restore TIMESTAMP WITH TIMEZONE data
This step is not required if you had to follow the actions in Step 6 above for
If this gives a version timezone_file higher or lower then 4, then:
see
Note 829734.1 Actions for the DSTv4 update in the 11.1.0.6 base release
Note 568125.1 Actions for the DSTv4 update in the 11.1.0.7 patchset
And followed all steps in one of the above notes.
If your database has TIMESTAMP WITH TIMEZONE data, you must update the data so that
it is converted and stored based on the new time zone rules that come with the upgrade.
If you used the export utility to export a copy of the affected tables, you should now use the
import utility to import your data from these tables back into your database. The import
utility will update the timestamp data as it imports.
If you used the manual script method, you will need to update the affected timestamp data
based on your backed up table.

For information on restoring backed up data:


Note 396671.1 Usage of utltzuv2.sql before updating time zone files in Oracle 10
Note 396670.1 Usage of utltzuv2.sql before updating time zone files in Oracle 9
Step 30
-------Upgrade Statistics Tables Created by the DBMS_STATS Package
If you created statistics tables using the DBMS_STATS.CREATE_STAT_TABLE procedure,
then upgrade these tables by executing the following procedure:
EXECUTE DBMS_STATS.UPGRADE_STAT_TABLE('SYS','dictstattab');

In the example, 'SYS' is the owner of the statistics table and 'dictstattab' is the name of the
statistics table. Execute this procedure for each statistics table.
Step 31
-------Upgrade Externally Authenticated SSL Users
If you have upgraded from Oracle 9.2.0.x or 10.1.0.x, and you are using externally
authenticated SSL users, then you must run the following command to upgrade those users:
ORACLE_HOME/rdbms/bin/extusrupgrade --dbconnectstring
<hostname:port_no:sid> --dbuser <db admin> --dbuserpassword
<password> -a

If you are upgrading from 10.2.0.x (or higher), then you are not required to run this
command.
Step 32
-------Enable Database Vault
Refer to the following Metalink Documents for enabling Oracle Database Vault
Note 453903.1 - Enabling and Disabling Oracle Database Vault in UNIX
Note 453902.1 - Enabling and Disabling Oracle Database Vault in WINDOWS
Step 33
-------Configure Fine-Grained Access to External Network Services
To avoid "ORA-24247: network access denied by access control list (ACL)" when executing
UTL packages (Network related Packages), access has to be granted to user using these
packages.
The following example first looks for any ACL currently assigned to host_name. If one is
found, then the example grants user_name the CONNECT privilege in the ACL only if that

user does not already have it. If no ACL exists for host_name, then the example creates a new
ACL called ACL_name, grants the CONNECT privilege to user_name, and assigns the ACL
to host_name.
DECLARE
acl_path VARCHAR2(4000);
BEGIN
SELECT acl INTO acl_path FROM dba_network_acls
WHERE host = 'host_name' AND lower_port IS NULL AND upper_port IS NULL;
IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(acl_path,'principal','privilege')
IS NULL THEN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl_path,'principal', is_grant,
'privilege');
END IF;
EXCEPTION
WHEN no_data_found THEN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('ACL_name.xml','ACL description',
'principal', is_grant, 'privilege');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('ACL_name.xml','host_name');
END;
/
COMMIT;

acl_name.xml => Enter a name for the access control list XML file.
ACL description => file description,
principal => user_or_role,
is_grant => TRUE|FALSE,
privilege => connect|resolve,
host_name => host name
Refer the below note on how to use DBMS_NETWORK_ACL_ADMIN Package and also to
avoid ORA-24247 : network access denied by access control list (ACL)
Note 453786.1 ORA-24247 When Executing UTL_HTTP UTL_INADDR Packages
Step 34
-------Edit init.ora:
- If you changed the CLUSTER_DATABASE parameter prior the upgrade set it back to TRUE
- Migrate your initialization parameter file to a server parameter file.
Create a server parameter file with a initialization parameter file
SQL> create spfile from pfile;

This will create a spfile as a copy of the init.ora file located in $ORACLE_HOME/dbs (UNIX)
& %ORACLE_HOME%\database (Windows).
Step 35
-------Change Passwords for Oracle-Supplied Accounts

Depending on the release from which you upgraded, there might be new Oracle supplied
accounts. Oracle recommends that you lock all Oracle supplied accounts except for SYS and
SYSTEM, and expire their passwords, thus requiring new passwords to be specified when the
accounts are unlocked.
You can view the status of all accounts by issuing the following SQL statement:
SQL> SELECT username, account_status FROM dba_users ORDER BY username;

To lock and expire passwords, issue the following SQL statement:


SQL> ALTER USER username PASSWORD EXPIRE ACCOUNT LOCK;

Step 36
-------Upgrading Oracle Text
Copy the following files from the previous Oracle home to the new Oracle home:

Stemming user-dictionary files

User-modified KOREAN_MORPH_LEXER dictionary files

USER_FILTER executables
To obtain a list of the above files, use:
$ORACLE_HOME/ctx/admin/ctxf<version>.txt
$ORACLE_HOME/ctx/admin/ctxf<version>.sql
where version is 920,101,102
For instance, if upgrading from 10.2.0
1. For dictionary files check
$ORACLE_HOME/ctx/admin/ctxf102.txt
2. Execute the script as database user SYS,SYSTEM, or CTXSYS
$ORACLE_HOME/ctx/admin/ctxf102.sql

If your Oracle Text index uses KOREAN_LEXER which was deprecated in Oracle 9i and
desupported in Oracle 10g Release 2, see below Note for further information on manual
migration from KOREAN_LEXER to KOREAN_MORPH_LEXER.
Note 300172.1 Obsolescence of KOREAN_LEXER Lexer Type
Step 37
-------Upgrade the Oracle Cluster Registry (OCR) Configuration
If you are using Oracle Cluster Services, then you must upgrade the Oracle Cluster Registry
(OCR) keys for the database.
Use one of the following options to upgrade the OCR configuration to 11g:

1. Use srvconfig from the Oracle Database 11g Release 1 (11.1) Oracle home.
For example:
srvconfig -upgrade -dbname db_name -orahome pre-11g_Oracle_home

2. Run srvctl.
For example:
From old Oracle_Home:
% $ORACLE_HOME/bin/srvctl remove database -d db_name
From 11g Oracle_Home:
% $ORACLE_HOME/bin/srvctl add database -d db_name -o <location of 11g
home>
% $ORACLE_HOME/bin/srvctl add instance -d db_name -i instance -n node

Step 38
-------Configure Enterprise Manager
If your database is being managed by Oracle Enterprise Manager Database Control or
Oracle Enterprise Manager Grid Control, then use the following command to update the
configuration:
emca -upgrade (db | asm | db_asm) [-cluster] [-silent] [parameters]

You need to run this from the new Oracle Database 11g Oracle Home. When prompted,
provide the Oracle home from which the configuration is being upgraded.
Appendix A:
Initialization parameters deprecated in Oracle Database 11g release 1 (11.1)
BACKGROUND_DUMP_DEST (replaced by DIAGNOSTIC_DEST)
CORE_DUMP_DEST (replaced by DIAGNOSTIC_DEST)
USER_DUMP_DEST (replaced by DIAGNOSTIC_DEST)
COMMIT_WRITE
INSTANCE_GROUPS
LOG_ARCHIVE_LOCAL_FIRST
PLSQL_DEBUG (replaced by PLSQL_OPTIMIZE_LEVEL)
PLSQL_V2_COMPATIBILITY
REMOTE_OS_AUTHENT
STANDBY_ARCHIVE_DEST
TRANSACTION_LAG attribute (of the CQ_NOTIFICATION$_REG_INFO object)

Appendix B:
Initialization Parameters Obsolete in Oracle Database 11g release 1 (11.1)

DDL_WAIT_FOR_LOCKS
LOGMNR_MAX_PERSISTENT_SESSIONS
PLSQL_COMPILER_FLAGS

5. While running the pre-upgrade utility, it always reports about the stale optimizer statistics
in the database
WARNING: --> Database contains stale optimizer statistics.
....
....
.... Component Schemas with stale statistics:
.... SYS
The warning persists even after gathering the statistics. This issue is tracked via the internal
unpublished Bug 4582258 UTLU102I.SQL ALWAYS REPORTS COMPONENT SCHEMAS
WITH STALE STATISTICS: SYS

5. Even when the time zone file version is the same as in 11gR1, if the pre-upgrade script
utlu111i.sql was not run in the source database prior to the upgrade, then also the upgrade
script will fail, because the time zone file version was not updated in registry$database.
Note 788087.1 When Running Catupgrd.Sql, Exits With ORA-00904/ORA-00942
Known Issues
1. Oracle OLAP:
Note 735838.1 Analytic Workspace SYS.CWMTOECM Cannot Be Opened
2. Upgrade will fail with an "ORA-28031: maximum of 148 enabled roles exceeded" error if
the number of enabled roles for the SYS user is 148 or higher. To avoid this error, ensure the
number of enabled roles for the SYS user is less than 148.
3. Interoperability between an 11.1 database and a 10.1/10.2 database requires a minimum
patchset level of 10.1.0.5 (for 10.1) or 10.2.0.2 (for 10.2).
Note 4511371.8 - Bug 4511371 - ORA-6544 / ORA-4052 using PLSQL between 10g and 11g
Note 553017.1 - Stream Propagation Process Errors Ora-4052 Ora-6554 From 11g To 10201
4. When setting the memory_target parameter in 11.1.0.7 to more than 3 GB , the database
may cause startup upgrade to fail.
Note 743012.1 ORA-27103 when Memory target parameter is set to more than 3 GB

References
NOTE:276914.1 - The National Character Set ( NLS_NCHAR_CHARACTERSET ) in
Oracle 9i, 10g and 11g
NOTE:300172.1 - Obsolescence of KOREAN_LEXER Lexer Type
NOTE:360470.1 - Security Alerts and Critical Patch Updates- Frequently Asked Questions
NOTE:396670.1 - Usage of utltzuv2.sql before updating time zone files in Oracle 9
NOTE:396671.1 - Usage of utltzuv2.sql before updating time zone files in Oracle 10
NOTE:402742.1 - USA 2007 DST Changes: Frequently Asked Questions for Oracle Database
Patches
NOTE:413671.1 - Applying "version 4" Time Zone Files on an Oracle Database
NOTE:4511371.8 - Bug 4511371 - ORA-6544 / ORA-4052 using PLSQL between 10g and
11g
NOTE:453786.1 - ORA-24247 When Executing UTL_HTTP UTL_INADDR Packages
NOTE:453902.1 - How To Enable And/Or Disable Oracle Database Vault
NOTE:454442.1 - 11g Install : Understanding about Oracle Base, Oracle Home and Oracle
Central/Global Inventory locations
NOTE:553017.1 - Stream Propagation Process Errors Ora-4052 Ora-6554 From 11g To
10201
NOTE:556610.1 - Script to Collect DB Upgrade/Migrate Diagnostic Information
(dbupgdiag.sql)
NOTE:560336.1 - Script to Check Schemas with Stale Statistics
NOTE:562980.1 - emdwgrd core dumps : emdwgrd[228]: 10366 Memory fault(coredump)
NOTE:568125.1 - Actions for the DSTv4 update in the 11.1.0.7 patchset
NOTE:579523.1 - ORA-600 [22635], ORA-600 [KOKEIIX1], ORA-7445 [KOPESIZ] and
OCI-21500 [KOXSIHREAD1] Reported While Upgrading To 11.1.0.6 Or 11.1.0.7
NOTE:735838.1 - Analytic Workspace SYS.CWMTOECM Cannot Be Opened
NOTE:743012.1 - ORA-27103 when Memory target parameter is set to more than 3 GB
NOTE:788087.1 - When Running Catupgrd.Sql, Exits With ORA-00904/ORA-00942
PATCH:5632264 - NEED UPDATED TIMEZONE FILES (VERSION 4) FOR MORE DST
RULE CHANGES
Oracle Database Security Guide 11g Release 1 (11.1) Part Number B28531-11
Oracle Database Upgrade Guide 11g Release 1 (11.1) Part Number B28300-03
NOTE:803948.1 - How To Uninstall Or Reinstall Database Vault in 11g
Related
Products

Oracle Database Products > Oracle Database > Oracle Database > Oracle Server Enterprise Edition
Oracle Database Products > Oracle Database > Oracle Database > Oracle Server Standard Edition

Keywords
UPGRADE DATABASE; UPGRADE FROM 10.1.0; UPGRADE FROM 10.2.0;
UPGRADE FROM 9.2.0

Back to top
Rate this document
Article Rating
Rate this document

Comments

Excellent
Good
Poor
Did this document help
you?
Yes
No
Just browsing
How easy was it to find
this document?
Very easy
Somewhat easy
Not easy
Cancel

Important Note: this feedback is anonymously visible to other


customers until processed by Oracle Support.

You might also like