Configuring Data Protection for Oracle when using IBM Spectrum Protect client V8.1.2 with new security settings http://www-01.ibm.com/support/docview.wss?uid=swg27050606
https://www.oraclenutsandbolts.net/index.php/knowledge-base/rman/63-configure-tdpo-tivoli-client
http://www-01.ibm.com/support/docview.wss?uid=swg21260228
https://community.oracle.com/message/9454032?tstart=0#9452032
http://www.oracle.com/au/products/database/s316928-1-175928.pdf
http://docs.oracle.com/cd/B28359_01/backup.111/b28270/rcmconfb.htm
https://community.oracle.com/message/9454032?tstart=0#9452032
Create a symbolic link
# ln -s /usr/tivoli/tsm/client/oracle/bin64/libobk64.a /usr/lib/libobk64.a
Link the Oracle target database instance with Data Protection for Oracle by performing the following steps:
a. Set the Oracle LD_LIBRARY_PATH option to specify $ORACLE_HOME/lib as the first entry: LD_LIBRARY_PATH=$ORACLE_HOME/lib b. Shut down all Oracle instances that use $ORACLE_HOME. c. Go to the $ORACLE_HOME/lib directory. d. Symbolically link the library file to libobk.so: $ ln -s /usr/lib/sparcv9/libobk.so $ORACLE_HOME/lib/libobk.so and check $ORACLE_HOME/lib/libobk.so -> /usr/lib/sparcV9/libobk.so /usr/lib/sparcV9/libobk.so -> /opt/tivoli/tsm/client/oracle/bin64/libobk64.so e. Start the Oracle instances. (note on Solaris X86 the path is /usr/lib/amd64/libobk.so)
For production servers, you have to stop all instances Workaround You can use an RMAN option during allocation of channel SBT (parameter) → SBT_LIBRARY
Locating the Media Management Library: The SBT_LIBRARY Parameter
When allocating or configuring channels for RMAN to use to communicate with a media manager, specify the SBT_LIBRARY parameter to provide the path to the media management software library. When RMAN actually allocates channels to communicate with a media manager, it attempts to load the library indicated by the SBT_LIBRARY parameter.
If you do not provide a value for this parameter, RMAN looks in a platform-specific default location. On UNIX, the default library filename is $ORACLE_HOME/lib/libobk.so, with the extension name varying according to platform: .so, .sl, .a, and so forth. On Windows the default library location is %ORACLE_HOME%\bin\orasbt.dll.
Sample of script for RMAN:
RUN { ALLOCATE CHANNEL c1 DEVICE TYPE sbt PARMS='SBT_LIBRARY=/mediavendor/lib/libobk.so ENV=(NSR_SERVER=tape_srv,NSR_GROUP=oracle_tapes)'; BACKUP CURRENT CONTROLFILE; }
[root@aixdb002]/root # cat /usr/tivoli/tsm/client/ba/bin64/dsm.sys .... SERVERNAME DB002_ORA NODENAME DB002_ORA COMMmethod TCPIP TCPPort 1500 TCPServeraddress TSM001.mydom.net TCPCLIENTADDRESS DB002 WEBPORTS 1503 1504 SCHEDMODE PROMPTED PASSWORDACCESS PROMPT TCPCLIENTPORT 1503 SCHEDLOGNAME /var/log/tsm/tdpsched.log ERRORLOGNAME /var/log/tsm/tdperror.log SCHEDLOGRETENTION 40 D ERRORLOGRETENTION 40 D INCLUDE /adsmorc/.../* MC_ORACLE MANAGEDSERVICES SCHEDULE
[root@aixdb002]/root # ls -lrt /usr/tivoli/tsm/client/api/bin64 lrwxrwxrwx 1 root system 16 Aug 26 2013 dsm.sys -> /usr/tivoli/tsm/client/ba/bin64/dsm.sys [root@aixdb002]/root # ls -lrt /usr/tivoli/tsm/client/oracle/bin64 -rw-r--r-- 1 root system 19 Aug 26 2013 dsmora.opt -rw-r--r-- 1 root system 589 Aug 26 2013 tdpo.opt -rwxr-xr-x 1 bin bin 691 Oct 07 2013 tdpo.opt.smp64 -rwxrw-rw- 1 bin bin 47 Oct 07 2013 agent.lic -rwxr-xr-x 1 bin bin 1201361 Oct 07 2013 libobk64.a -rwxr-xr-x 1 bin bin 1109009 Oct 07 2013 tdposync -rwxr-xr-x 1 bin bin 1053168 Oct 07 2013 tdpoconf -rw-r--r-- 1 root system 48 Oct 10 2013 TDPO.DB002_ORA drwxr-xr-x 2 root system 256 Aug 01 2014 EN_US
[root@aixdb002]/root # cat /usr/tivoli/tsm/client/oracle/bin64/dsmora.opt SERVERNAME DB002_ORA PASSWORD admin
[root@aixdb002]/root # cat TDPO.DB002_ORA Agent for Oracle Backup - Password file5eâ7°¯c
[root@aixdb002]/root # cat /usr/tivoli/tsm/client/oracle/bin64/tdpo.opt ***************************************************************************** * IBM Tivoli Storage Manager for Databases * * Data Protection for Oracle * ***************************************************************************** DSMI_ORC_CONFIG /usr/tivoli/tsm/client/oracle/bin64/dsm.opt DSMI_LOG /var/log/tsm/ TDPO_FS adsmorc TDPO_NODE DB002_ORA TDPO_OWNER oracle TDPO_PSWDPATH /usr/tivoli/tsm/client/oracle/bin64 *TDPO_DATE_FMT 1 *TDPO_NUM_FMT 1 *TDPO_TIME_FMT 1 *TDPO_MGMT_CLASS_2 mgmtclass2 *TDPO_MGMT_CLASS_3 mgmtclass3 *TDPO_MGMT_CLASS_4 mgmtclass4
In the Configuration with Default Settings topic, the directory paths listed in the following step in the procedure have been corrected to refer to the new paths.
“Make sure that the <oracle user> has the following permissions:
UNIX and Linux, you must specify the TDPO_OPTFILE variable in uppercase characters only.
Tip: For Oracle 12c Release 1 (12.1) and later releases, the Oracle home user that is specified on installation of the Oracle database must be granted sufficient permission to access the Windows registry. Otherwise, Data Protection for Oracle operations might fail.
Run the tdpoconf password command as the root user or as the Oracle user. The password files are created in the directory that is specified by the passworddir option in the dsm.sys file for the Data Protection for Oracle node. If the tdpo_pswdpath option is specified, the files are created in that directory. The following files are created:
TSM.IDX TSM.KDB TSM.sth
If the password files were created by the root user, make sure that they are readable and writable by the Oracle user who runs the backup operations.
Ensure these TSM* and spclicert.* files have write permissions for the oracle user.
Check the ORACLE_HOME/IBM/SpectrumProtect/certs/ directory to see if dsmcert.* files exist. Also check if these exist in the…/tivoli/tsm/client/ba/bin directory, Ensure these dsmcert.* files have read permissions for the oracle user that will be running the backup/restore.
As user oracle
# tdpoconf password -tdpo_conf=/opt/tivoli/client/oracle/bin64/tdpo_oradb01.opt
As root
First, ensure the stanza within the dsm.sys that is being used for the Data Protection client contains the parameter: PASSWORDACCESS GENERATE
Check if the …/tivoli/tsm/client/api/bin64/dsm.sys file is a symbolic link to the …/tivoli/tsm/client/ba/bin/dsm.sys.
It is recommended to have a symbolic link for this file so that no additional changes are needed.
If it is necessary to use distinctly separate dsm.sys files, it will be necessary to add a stanza to the …/tivoli/tsm/client/ba/bin/dsm.sys file that contains the same values as are being utilized by the Data Protection client dsm.sys.
With this configuration in place, it will be possible to set the password with the Backup/Archive client. For example, within the silent install, the “dsmc set password” command could be initiated using the Data Protection client configuration.
# dsmc set password <password> <password> -type=tsm -servername=<tdpo_stanza>
[root@aixdb002]/root # cat /APPLICATION/orabase/admin/scripts/ORAFULL su - oracle -c "/APPLICATION/orabase/admin/scripts/ORAFRUN"
[root@aixdb002]/root # cat /APPLICATION/orabase/admin/scripts/ORAFRUN export ORACLE_BASE=/APPLICATION/orabase export ORACLE_HOME=/APPLICATION/orabase/dbhome1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=DWH1 ORACLE_SCRIPT=$ORACLE_BASE/admin/scripts LOGFILE=$ORACLE_SCRIPT/ORAFULL.${ORACLE_SID}.$(date "+%d").log rman target / @${ORACLE_SCRIPT}/ORAFULL.rcv catalog rman/rman@RMANDB LOG $LOGFILE # export ORACLE_BASE=/APPLICATION/orabase export ORACLE_HOME=/APPLICATION/orabase/dbhome1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=DWH2 ORACLE_SCRIPT=$ORACLE_BASE/admin/scripts LOGFILE=$ORACLE_SCRIPT/ORAFULL.${ORACLE_SID}.$(date "+%d").log rman target / @${ORACLE_SCRIPT}/ORAFULL.rcv catalog rman/rman@RMANDB LOG $LOGFILE
[root@aixdb002]/root # cat /APPLICATION/orabase/admin/scripts/ORAFULL.rcv run{ CONFIGURE DEFAULT DEVICE TYPE TO sbt; CONFIGURE CHANNEL DEVICE TYPE sbt parms 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)'; CONFIGURE DEVICE TYPE sbt PARALLELISM 4; CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 40 DAYS; backup incremental level 0 format 'sbt\DBF_FULL_%d_t%t_s%s_p%p.db' database; sql 'alter system archive log current'; backup archivelog until time 'sysdate' format 'sbt\ARC_FULL_%d_t%t_s%s_p%p.arc'; backup current controlfile format 'sbt\CTL_FULL_%d_t%t_s%s_p%p.ctl'; } sql 'alter system archive log current'; crosscheck backup of database; crosscheck backup of archivelog all; crosscheck backup of controlfile; delete expired backup; delete noprompt obsolete; sql 'alter system switch logfile'; backup archivelog all;
[root@aixdb002]/root # cat /APPLICATION/orabase/admin/scripts/ORAINCR su - oracle -c "/APPLICATION/orabase/admin/scripts/ORAIRUN"
[root@aixdb002]/root # cat /APPLICATION/orabase/admin/scripts/ORAIRUN export ORACLE_BASE=/APPLICATION/orabase export ORACLE_HOME=/APPLICATION/orabase/dbhome1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=DWH1 ORACLE_SCRIPT=$ORACLE_BASE/admin/scripts LOGFILE=$ORACLE_SCRIPT/ORAINCR.${ORACLE_SID}.$(date "+%d").log rman target / @${ORACLE_SCRIPT}/ORAINCR.rcv catalog rman/rman@RMANDB LOG $LOGFILE export ORACLE_BASE=/APPLICATION/orabase export ORACLE_HOME=/APPLICATION/orabase/dbhome1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=DWH2 ORACLE_SCRIPT=$ORACLE_BASE/admin/scripts LOGFILE=$ORACLE_SCRIPT/ORAINCR.${ORACLE_SID}.$(date "+%d").log rman target / @${ORACLE_SCRIPT}/ORAINCR.rcv catalog rman/rman@RMANDB LOG $LOGFILE
[root@aixdb002]/root # cat /APPLICATION/orabase/admin/scripts/ORAINCR.rcv run{ CONFIGURE DEFAULT DEVICE TYPE TO sbt; CONFIGURE CHANNEL DEVICE TYPE sbt parms 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)'; CONFIGURE DEVICE TYPE sbt PARALLELISM 4; CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 40 DAYS; backup incremental level 1 format 'sbt\DBF_INCR_%d_t%t_s%s_p%p.db' database; sql 'alter system archive log current'; backup archivelog until time 'sysdate' format 'sbt\ARC_INCR_%d_t%t_s%s_p%p.arc' delete input; backup current controlfile format 'sbt\CTL_INCR_%d_t%t_s%s_p%p.ctl'; } sql 'alter system archive log current'; crosscheck backup of database; crosscheck backup of archivelog all; crosscheck backup of controlfile; delete expired backup; delete noprompt obsolete; sql 'alter system switch logfile'; backup archivelog all;
tsm: TSM001>q sched TDP FULL_AIX_ORA f=d Policy Domain Name: TDP Schedule Name: FULL_AIX_ORA Description: TDP DAILY FULL UNIX ORACLE BACKUP Action: Command Subaction: Options: Objects: /APPLICATION/orabase/admin/scripts/ORAFULL Priority: 5 Start Date/Time: 05/27/13 02:30:00 Duration: 6 Hour(s) Maximum Run Time (Minutes): 0 Schedule Style: Classic Period: 1 Day(s) Day of Week: Saturday Month: Day of Month: Week of Month: Expiration: Last Update by (administrator): ADMIN Last Update Date/Time: 08/11/14 11:54:42 Managing profile: tsm: TSM001>q sched TDP INCR_AIX_ORA f=d Policy Domain Name: TDP Schedule Name: INCR_AIX_ORA Description: TDP DAILY INCREMENTAL UNIX ORACLE BACKUP Action: Command Subaction: Options: Objects: /APPLICATION/orabase/admin/scripts/ORAINCR Priority: 5 Start Date/Time: 05/27/13 02:30:00 Duration: 6 Hour(s) Maximum Run Time (Minutes): 0 Schedule Style: Classic Period: 1 Day(s) Day of Week: Weekday Month: Day of Month: Week of Month: Expiration: Last Update by (administrator): ADMIN Last Update Date/Time: 08/11/14 11:54:44 Managing profile:
When you use TDP for Oracle, RMAN will expired his backups, then the Policy is:
Mgmt Class Oracle:
verexist 1 versiondelete 0 retainextra 0 retainonly 0
Important chek if the TDPO node has rights to delete backups:
tsm: TSM001>q node XXXXXXXXXXXXXXXXXXXX_TDPO f=d Node Name: XXXXXXXXXXXXXXXX_TDPO Platform: TDP Oracle AIX Client OS Level: 6.1 Client Version: Version 7, release 1, level 0.3 Application Version: Version 7, release 1, level 0.0 Policy Domain Name: ORACLE ...... Compression: Client Archive Delete Allowed?: Yes Backup Delete Allowed?: Yes ...
Else update the node, else you 'll have a synchronization problem between the RMAN catalog and TSM
update node xxxxxxxxxxxxxxxxxxxx_TDPO backdelete=yes
RMAN synchronization command on TDP Oracle node crosscheck backup of database;
crosscheck backup of archivelog all; crosscheck backup of controlfile;
TSM synchronization command on TDP Oracle node
TDPOSYNC syncdb
As it's dependent on RMAN database, long term archive of a database using RMAN is maybe not the best way to be able to recover your Oracle database.
A simple way to backup an oracle database without RMAN, also useful for long term archive (in TSM archive definition, is long term backup)
Add pre and post schedule in dsm.sys (/usr/tivoli/tsm/client/ba/bin64/ or /opt/tivoli/tsm/client/ba/bin/)
Preschedulecmd "su - oracle -c /script/orafreezedb.sh > /script/orafreezedb.log" Postschedulecmd "su - oracle -c /script/oraunfreezedb.sh > /script/orainfreezedb.log"
During backup you will get a consistent backup of filesystems.
[root@aixdb002]/root # cat /script/orafreezedb.sh export ORACLE_BASE=/APPLICATION/orabase export ORACLE_HOME=/APPLICATION/orabase/dbhome1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=DWH1 sqlplus / as sysdba @/script/orafreezedb.sql [root@aixdb002]/root # cat /script/orafreezedb.sql alter database begin backup; alter system switch logfile; alter system archive log all; quit
[root@aixdb002]/root # cat /script/oraunfreezedb.sh export ORACLE_BASE=/APPLICATION/orabase export ORACLE_HOME=/APPLICATION/orabase/dbhome1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=DWH1 sqlplus / as sysdba @/script/oraunfreezedb.sql [root@aixdb002]/root # cat /script/oraunfreezedb.sql alter database end backup; alter system switch logfile; alter system archive log all; quit
Advantage of this method is the possibility to import data easily into a new database, but the backup must be first done on disk, that consume space.
Bash script to generate an export of a database (datapump)
Note: do NOT use “SYS as SYSDBA” for the export, this user should only be used when requested by Oracle support!
CREATE USER EXPORT IDENTIFIED BY password DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE “UNLIMITED PASSWORD EXPIRATION” ACCOUNT UNLOCK;
GRANT CREATE SESSION TO EXPORT; GRANT CREATE TABLE TO EXPORT; ALTER USER EXPORT QUOTA UNLIMITED ON USERS; GRANT EXP_FULL_DATABASE TO EXPORT; GRANT READ, WRITE ON DIRECTORY EXPDIR TO EXPORT; /u01/app/oracle/admin/kdb01/datapump/fullexp.sh
#!/bin/bash export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=${ORACLE_BASE}/product/10.2.0/db_1 export ORACLE_SID=$1 export EXPORT_FOLDER=/u01/app/oracle/admin/${ORACLE_SID}/datapump ORACLE_USER=MYDBA ORACLE_PASSWORD=supersecret DATE=$(date +"%Y%m%d") $ORACLE_HOME/bin/expdp $ORACLE_USER/$ORACLE_PASSWORD full=y directory=DATAPUMP_DIR \ dumpfile=$DATE-${ORACLE_SID}_full_export.dmp logfile=$DATE-${ORACLE_SID}_full_export.log \ flashback_time=SYSTIMESTAMP tar cjf $EXPORT_FOLDER/$DATE-${ORACLE_SID}_full_export.tar.bz2 \ $EXPORT_FOLDER/$DATE-${ORACLE_SID}_full_export.dmp \ $EXPORT_FOLDER/$DATE-${ORACLE_SID}_full_export.log rm $EXPORT_FOLDER/$DATE-${ORACLE_SID}_full_export.dmp $EXPORT_FOLDER/$DATE-${ORACLE_SID}_full_export.log find $EXPORT_FOLDER/*${ORACLE_SID}_full_export.tar.bz2 -mtime +15 -delete
#!/bin/sh #-x #Usage: #scriptfile dump_location DB_Username password sid schema_name export EXPDIR=$1 export DBUSERNAME=$2 export DBPASSWORD=$3 export ORACLE_SID=$4 export SCHEMA_NAME=$5 export TFILE=`echo /tmp/nohup.$$.tmp` export STARTTIME=`date` export DATEFORMAT=`date +%Y%m%d_%Hh%Mm%Ss` export ORACLE_HOME=`cat /etc/oratab|grep ^${ORACLE_SID}:|cut -d':' -f2` export EXPLOG=expdp_`echo $ORACLE_SID`_`echo $DATEFORMAT`.log export PATH=$PATH:$ORACLE_HOME/bin if [[ $# -lt 5 ]] ; then echo "Wrong number of arguments..." echo "Usage:" echo echo "./scriptfile.sh dump_location DB_Username DB_Password DB_SID Schema_Name"; echo exit 0 fi if [[ ! -d "${EXPDIR}" ]]; then mkdir -p ${EXPDIR} echo -e "`date` :${EXPDIR} Directory Created."; else echo -e "`date` :${EXPDIR} directory found on system."; fi; if [ "$?" != 0 ]; then echo "`date` :Command Failed To check ${EXPDIR} Properly"; exit 1; fi sqlplus -s ""${DBUSERNAME}"/"${DBPASSWORD}"@"${ORACLE_SID}"" <<EOF CREATE OR REPLACE DIRECTORY exp_dir AS '$EXPDIR'; grant read,write on DIRECTORY exp_dir to $SCHEMA_NAME; quit; EOF # Data Pump export nohup expdp $DBUSERNAME/$DBPASSWORD@$ORACLE_SID schemas=$SCHEMA_NAME DIRECTORY=exp_dir DUMPFILE=expdp_`echo $ORACLE_SID`_`echo $DATEFORMAT`.dmp LOGFILE=$EXPLOG > ${TFILE} 2>&1 & sleep 4s; #if [[ -f "${EXPDIR}/${LOGFILE}" && -f "${EXPDIR}/${DUMPFILE}" ]]; then if [[ -f ${TFILE} ]]; then echo "`date` : $SCHEMA_NAME export started.."; export count="0"; while [ $count -lt 120 ]; do status=`cat ${TFILE} | grep -E 'Job.*SYSTEM.*SYS_EXPORT_SCHEMA.*successfully' | wc -l` if [ "$status" == "1" ]; then echo "`date` :$SCHEMA_NAME schema export completed successfully."; rm -f ${TFILE}; #exit 0; break else echo "`date` : Export Still in progress..."; a=`expr $a + 1` fi sleep 1m; done fi if [[ -f '${EXPDIR}/${DUMPFILE}' ]]; then gzip "${EXPDIR}/${DUMPFILE}" echo "`date` :${DUMPFILE} gzipped successfully."; else echo "`date` :${DUMPFILE} file not found, some issue in exporting.."; exit 1; fi
You can use the TSM command to expire backup older than 60 days:
tsm: TSMPROD>deactivate data ORADB001 todate=-60
An existing version of IBM Tivoli Storage Manager for Databases - Data Protection for Oracle already installed.
remove the file **/var/.com.zerog.registry.xml**
ANS1331E (RC927) Only a IBM Spectrum Protect authorized user can perform this Action.
You have to set into dsm.sys (/opt/tivoli/tsm/client/api/bin64/dsm.sys) the filed:
passworddir /home/oracle
And into tdpo.conf file the filed:
TDPO_PSWDPATH /oracle/tsm/opt
Then Test:
tdpoconf SHOWENVironment -TDPO_OPT=/oracle/tsm/tdpo/tdpo_ORA1.opt
The following operating systems are supported for the 64-bit Solaris SPARC platform: 64-bit Solaris 10, and later mod levels and fix packs 64-bit Solaris 11, and later mod levels and fix packs The following application levels are supported for the 64-bit Solaris SPARC platform: 64-bit Oracle 11gR2: Standard or Enterprise Server, and later maintenance levels of 11gR2 64-bit Oracle 12c: Standard or Enterprise Server, and later maintenance levels of 12c 64-bit Oracle 12cR2: Standard or Enterprise Server, and later maintenance levels of 12cR2 64-bit Oracle 18c: Standard or Enterprise Server, and later maintenance levels of 18c 64-bit Oracle 19c: Standard or Enterprise Server, and later maintenance levels of 19c on Solaris 11 SPARC
The following operating systems are supported for the 64-bit Solaris SPARC platform: 64-bit Solaris 10, and later mod levels and fix packs 64-bit Solaris 11, and later mod levels and fix packs The following application levels are supported for the 64-bit Solaris SPARC platform: 64-bit Oracle 11gR2: Standard or Enterprise Server, and later maintenance levels of 11gR2 64-bit Oracle 12c: Standard or Enterprise Server, and later maintenance levels of 12c 64-bit Oracle 12cR2: Standard or Enterprise Server, and later maintenance levels of 12cR2 64-bit Oracle 18c: Standard or Enterprise Server, and later maintenance levels of 18c (starting with version 8.1.0.2 of Data Protection for Oracle) 64-bit Oracle 19c: Standard or Enterprise Server, and later maintenance levels of 19c (starting with version 8.1.0.2 of Data Protection for Oracle on Solaris 11 SPARC)
The following operating systems are supported for the 64-bit Solaris SPARC platform: 64-bit Solaris 10, and later mod levels and fix packs 64-bit Solaris 11, and later mod levels and fix packs The following application levels are supported for the 64-bit Solaris SPARC platform: 64-bit Oracle 11gR2: Standard or Enterprise Server, and later maintenance levels of 11gR2 64-bit Oracle 12c: Standard or Enterprise Server, and later maintenance levels of 12c
The following operating systems are supported for the 64-bit Solaris SPARC platform: 64-bit Solaris 10, and later mod levels and fix packs 64-bit Solaris 11, and later mod levels and fix packs The following application levels are supported for the 64-bit Solaris SPARC platform: 64-bit Oracle 11gR2: Standard or Enterprise Server, and later maintenance levels of 11gR2 64-bit Oracle 12c: Standard or Enterprise Server, and later maintenance levels of 12c