r12 upgrade document

28
1 Hand-On-Lab November 24, 2015 Oracle Database 12c - Upgrade, Migration & Consolidation Roy Swonger Senior Director and Product Manager ST – Database Utilities ORACLE Corporation Mike Dietrich Senior Principal Technologist ST – Upgrade Development Group ORACLE Corporation The 4 parts of the Lab: 1. Upgrade an Oracle 11.2.0.4 database (SID: UPGR) to Oracle 12.1.0.2 2. Plug in the upgrade UPGR database into an existing Oracle 12.1.0.2 container database (SID: CDB2) 3. Migrate an Oracle 11.2.0.4 database (SID: FTEX) to Oracle 12.1.0.2 using Full Transportable Export/Import into a new pluggable database PDB2 [optional]: 4. Work with Multitenant databases and implement new Oracle Database 12c features Before you can start you may have to setup a few things and make yourself familiar with the environment

Upload: lakshmi-narayana

Post on 12-Jul-2016

254 views

Category:

Documents


0 download

DESCRIPTION

Oracle R12 Upgrade document

TRANSCRIPT

Page 1: R12 upgrade document

1

Hand-On-Lab November24,2015

OracleDatabase12c-Upgrade,Migration&Consolidation

RoySwongerSeniorDirectorandProductManagerST–DatabaseUtilitiesORACLECorporation

MikeDietrichSeniorPrincipalTechnologistST–UpgradeDevelopmentGroupORACLECorporation

The4partsoftheLab:

1. UpgradeanOracle11.2.0.4database(SID:UPGR)toOracle12.1.0.22. PlugintheupgradeUPGRdatabaseintoanexistingOracle12.1.0.2containerdatabase(SID:CDB2)3. MigrateanOracle11.2.0.4database(SID:FTEX)toOracle12.1.0.2usingFullTransportableExport/Importintoa

newpluggabledatabasePDB2

[optional]:

4. WorkwithMultitenantdatabasesandimplementnewOracleDatabase12cfeatures

Beforeyoucanstartyoumayhavetosetupafewthingsandmakeyourselffamiliarwiththeenvironment

Page 2: R12 upgrade document

2

SetupTasksKeyboardLayoutThedefaultkeyboardlayoutmaybeGermanorUSEnglish.Ifyouwouldlikeadifferentlayout,thenyoucanaddanotherkeyboardasfollows:

1. LogintotheLinuxdesktop(user/passwordareboth“oracle”)2. Ifyouwanttochangethekeyboard'slayout(defaultis:US)toGerman

pleasejustCLICKONCEonthetiny"US"symbolnexttotheclock:

3. Ifyou'dliketodomoregeneralchangespleaseentertheKDECONTROLCENTERbyCLICKingonthepenguinintheleftbottomcorner:

Page 3: R12 upgrade document

3

!!!IMPORTANT!!!THINGSTOKNOWANDUNDERSTAND!!!Allpasswordsaresetto: oracleSwitchenvironmentsforinstance: . cdb2(typeinonshellprompt:<dot><blank>cdb2)Thereisanenvironmentvariable$OH12definedforconvenience.Thispointstothe12.1.0.2OracleHome,andisusedseveraltimesinpart1ofthelab.Darkgraybackground,whitecharactersmean: Executeonthecommandprompt(OSshell)Lightgraybackground,blackcharactersmean: ExecuteinSQL*Plus

Page 4: R12 upgrade document

4

HOWTOCOPY/PASTEWITHTHEOKULARPDFVIEWER

ThisVMincludestheokularPDFreader,whichisavailableintheLinuxdistribution.Inordertocopy/pastewithokular,youneedtousethe“SelectTool.”IfyouhavetheseinstructionsopenwithintheVM,thenyoucanseetheselecttoolatthetopofthewindow.Itistheboxwiththedashedoutlineasshownhere:

OnceyouchoosetheSelectTool,thiswillbethedefaultunlessyouchangeit.Thenyoucanselectanareaandcopytheselectionastext.ChoosetheText->“CopytoClipboard”optionasinthisexamplefromthefirststepsinthelab:

Page 5: R12 upgrade document

5

IMPORTANT!!!SystemOverview-Thenumbersonthepicturedescribepart1-4oftheHands-On-Lab!!!

Page 6: R12 upgrade document

6

HOL–Part1–UpgradetheOracle11.2.0.4databaseUPGRtoOracleDatabase12.1.0.2

Databasefileslocation: /oradata/UPGRInitializationparameterandpasswordfilelocation: /u01/app/oracle/product/11.2.0/dbsListenerconfiguration: /u01/app/oracle/product/12.1.0.2/network/admin

TasksHOLPart1

YourtaskinHOLPart1willbeasimpleandstraightforwarddatabaseupgradetoOracleDatabase12c.Everythingisinstalledalready.YourOracleDatabase11gRelease2(11.2.0.4)database(SID:UPGR)isstartupalreadyandreadytogo.Nowfollowallstepsandupgradeit.

Youwillusethenewpre-upgradecheckscriptpreupgrd.sqlwhichwillexamineyourUPGRdatabase.ThisscriptisshippedwiththenewOracle12chomein/u01/app/oracle/product/12.1.0.2/rdbms/admin

YouwillthenprepareyourUPGRdatabasefortheupgradetoOracleDatabase12candupgradeit.Thedatabasewillstayinplaceanddoesn’tgetmovedtoanotherlocation.

Remarks:Forthishands-onlabwehaveprovidedeasycommandstoswitchenvironments!Youcanswitchbetweenenvironmentsonthebashshellprompttyping((don’ttype“$>“!!!)ineveryTerminal/xterm:

Page 7: R12 upgrade document

7

SID:UPGR–Oracle11.2.0.4home SID:UPGR–Oracle12.1.0.2home$> . upgr <dot> <space> upgr fortheOracle11.2.0.4environmentwithyourdatabasetobeupgraded(SID:UPGR)

$> . upgr12 <dot> <space> upgr12fortheOracle12cenvironmentwithyourdatabasetobeupgraded(SID:UPGR)

***STARTHERE***CommandLineUpgradefromOracle11.2.0.4toOracle12.1.0.2***

Inthissectionyou’llexecutethenewpreupgrd.sqlcheckscript,verifytheoutput,executesomecommandsandafixupscriptandprepareanewspfilefortheupgrade.Thenyou’llcopythespfileandthepasswordfiletothenewOracleDatabase12chome.

SID:UPGROracle11.2.0.4home

SID:UPGROracle12.1.0.2home

Executepre-upgradepreparationsteps

1. Openanxterm(Terminalicon)-(rightmouseclick è Konsole ...) . upgr sqlplus / as sysdba

2. Runthenewpreupgradecheckscriptpreupgrd.sql,inyour11.2.0.4environment–itwillgenerate3files:@$OH12/rdbms/admin/preupgrd.sql

3. Verifythepreupgrade.logandmakenecessarychangesOpena2ndxterm(rightmouseclick è Konsole ...):less /u01/app/oracle/cfgtoollogs/UPGR/preupgrade/preupgrade.log

Page 8: R12 upgrade document

8

The11.2.0.4databasehastheOLAPCatalog(AMD)componentinstalled,andthiscomponentisnolongerincludedinOracleDatabasestartingwithOracleDatabase12c.RemovetheOLAPCatalog(AMD)componentusingthescriptfromthe12.1.0.2OracleHome($OH12):@$OH12/olap/admin/catnoamd.sql commit; Thepreupgradelogincludesamessageaboutmovingauditdatafromsystem.aud$tosys.aud$becauseOracleLabelSecurityisinstalled.MovetheAUD$tablenowusingthe olspreupgrade.sqlscriptfromtheOracleDatabase12chomefromSYSTEMtoSYS:@$OH12/rdbms/admin/olspreupgrade.sqlPrepareyourspfileforthe12cupgradeaccordingtotheoutputfrompreupgrade.log:(Pleasenote:BestPracticewouldbetoedittheinit.orafortheupgrademanually.Youcoulddoso–thewayweproposehereisjustashortcutavoidingmanualeditsteps)create pfile from spfile; alter system set processes=300 scope=spfile; RaiseCOMPATIBILEfortheupgrade,sothatwecanusethisdatabaselaterinpart2ofthelab. alter system set COMPATIBLE='12.1.0' scope=spfile;

4. Gatherdictionarystatspriortotheupgrade:EXECUTE dbms_stats.gather_dictionary_stats;

5. Executethepreupgrade_fixups.sql –itwascreatedbypreupgrd.sqlindirectory/u01/app/oracle/cfgtoollogs/UPGR/preupgrade

Page 9: R12 upgrade document

9

Beawarethatthepreupgrade_fixups.sqlwilldisplaywarningsaboutthingsyoumayhavefixedalready.Pleaseignorethisasitisstaticinformationwhichgotcreatedduringtherunofpreupgrd.sqlanddoesnotgetupdatedwhenyoufixissuesbeingsignaled.ThisisaknownissueandwillbechangedinafuturereleaseofOracle.@/u01/app/oracle/cfgtoollogs/UPGR/preupgrade/preupgrade_fixups.sql Pleasenotethatthepreupgrade_fixups.sqlscriptwillstillcomplainaboutPROCESSESbeingsettoolow.ThisisbecausewehaveusedtheALTERSYSTEMcommandtoadjusttheparameter,butthatadjustmentwillnottakeeffectuntilthedatabaseisshutdownandrestarted.BecausewespecifiedSCOPE=SPFILE,thisparameterwillbesetcorrectlyfortheupgrade.

6. ShutdowntheUPGRdatabase:shutdown immediate exit

7. CopyyournewspfileandyourpasswordfileintotheOracle12chome’sdbs($OH12/dbs)directory: cp $ORACLE_HOME/dbs/spfileUPGR.ora $OH12/dbs/ cp $ORACLE_HOME/dbs/orapwUPGR $OH12/dbs/

Page 10: R12 upgrade document

10

SID:UPGROracle11.2.0.4home

SID:UPGROracle12.1.0.2home

ExecuteallparallelupgradestepsNowyou’llupgradeyourUPGRdatabasetoOracleDatabase12cusingthenewparallelupgradescripts.Furthermoreyou’llrecompileandcheckforinvalidobjectsbefore/aftertheupgrade.

1. Openanxterm(Terminalicon)-(rightmouseclick è Konsole ...) . upgr12 sqlplus / as sysdba

2. BringtheUPGRdatabaseintoUPGRADEmodestartup upgrade exit

3. UpgradetheUPGRdatabasewiththeparallelupgradescriptStartthenewparallelupgrade–itwillbedrivenbyaPERLscriptcatctl.ploutsideofSQL*Plusandexecutein4parallelthreads–inmaximumyoucouldrunwith8parallelthreadsbyspecifyingtheparameteroption-n 8 cd $ORACLE_HOME/rdbms/admin $ORACLE_HOME/perl/bin/perl catctl.pl catupgrd.sql Youwillnowseethatasmanyas73phaseswillbelisted–somecanactinparallel,otherrequireserialexecution.Thiswillnowtakeupto15-30minutesdependingonyoursystem.IfyouwonderabouttheRESTARTphases:thosehappeniftimingdependenciesmakeitnecessarytorerunacertainaction.Thelogfileswillbewrittenbydefaultintothedirectoryfromwhichyoustartedcatctl.pl,$ORACLE_HOME/rdbms/admin

Page 11: R12 upgrade document

11

Oncetheupgradeisfinisheditwillshutdownthedatabaseandinthenextphaseyou’llrestartitinnormalmode.

IFYOURMACHINEISWELLEQUIPPEDWITHRAM/CPUYOUMAYDOTASKSINPARALLELANDSTARTWITHPART3(FULLTRANSPORTABLEEXPORT).

GOTOPAGE15–HOLPART3

SID:UPGROracle11.2.0.4home

SID:UPGROracle12.1.0.2home

FinalizetheupgradewithallrequiredpostupgradestepsDuringthispartyou’llfinalizetheupgradewithrecompilation,postupgrade_fixups.sqlandthetimezoneadjustmenttoTZV18.Startupthedatabase–postupgradeitisshutdown:

1. Openanxterm(Terminalicon)-(rightmouseclick è Konsole ...) . upgr12 sqlplus / as sysdba

2. StartuptheUPGRdatabaseandrecompileeverything:startup @?/rdbms/admin/utlrp.sql

Page 12: R12 upgrade document

12

3. Executethepostupgrade_fixups.sql:@/u01/app/oracle/cfgtoollogs/UPGR/preupgrade/postupgrade_fixups.sql

4. AdjustTimeZonesettings–youmaylookintothescriptstakenfromMOSNote:1509653.1beforeexecutingthem:@/home/oracle/DST/DST_prepare.sql @/home/oracle/DST/DST_adjust.sql exit

***COMPLETED***TasksHOLPart1***

Page 13: R12 upgrade document

13

HOL–Part2–PluginUPGRintoCDB2,anOracleDatabase12.1.0.2containerdatabase

Databasefileslocation: /oradata/UPGRInitializationparameterandpasswordfilelocation: /u01/app/oracle/product/12.1.0.2/dbsListenerconfiguration: /u01/app/oracle/product/12.1.0.2/network/admin

TasksHOLPart2

OracleMultitenantOptionisawaytoconsolidateseveralindependentdatabasesintoonelargeContainerDatabase.TheCDB$ROOTistheadministrativelayerandcontainsabsolutelynouserorapplicationdata.ThePDBsthatarepluggedintotheCDBcontaintheuserandapplicationdata.WithOracleDatabase12cRelease1youcanhaveupto252PDBswithinoneCDB.

ApplicationsandclientswillconnecttothePDBjustastheywouldconnecttoanon-CDB.TheentireCDB/PDBsharesoneSGA,onesetofbackgroundprocesses,oneredologstream.

InHOLPart2youwillpluginthealreadyupgradedUPGRdatabaseasanewpluggabledatabasePDB1intothealreadyexistingContainerDatabaseCDB2.ThedatafilesofUPGRwillstayinplace.

SID:UPGR–Oracle12.1.0.2home SID:CDB2–Oracle12.1.0.2home$> . upgr12 <dot> <space> upgr12 fortheOracle12.1.0.2environmentwithyourdatabasetobepluggedinlater(SID:UPGR)

$> . cdb2 <dot> <space> cdb2fortheOracle12cenvironmentconnectingtotheContainerDatabase(SID:CDB2)

Page 14: R12 upgrade document

14

***STARTHERE***PluginUPGRintoCDB2***

InthissectionanXMLdescriptionfileforUPGRwillbecreatedandusedtoplugUPGRintoCDB2asnewPDB1.FinallysanityoperationswillhavetobedonetoassimilateUPGRfinallyasPDB2.

Pleasenote:There'snoALTERPLUGGABLEDATABASE…RECONVERTcommandavailable.Tomigrateadatabasebackintoastand-alonedatabaseeitherDataPump,TransportableTablespacesorsimilartechniqueswillneedtobeused.

SID:UPGROracle12.1.0.2home

SID:CDB2Oracle12.1.0.2home

PreparetheUPGRdatabaseforplugin

1. SwitchtotheUPGROracle12.1.0.2environment:

. upgr12 sqlplus / as sysdba

2. StarttheUPGRdatabaseinread-onlymode:

shutdown immediate startup open read only;

3. GeneratetheXMLdescriptionfile–thisfilewillcontaintheinformationdescribingthedatabase

structure.TocreateitthedatabaseUPGRhastobeinreadonlymode:

exec DBMS_PDB.DESCRIBE('/tmp/pdb1.xml');

4. Shutdownthedatabaseshutdown immediate exit

Page 15: R12 upgrade document

15

SID:UPGROracle12.1.0.2home

SID:CDB2Oracle12.1.0.2home

PreparetheUPGRdatabaseforplugin

1. SwitchtotheCDB2Oracle12.1.0.2environment:

. cdb2 sqlplus / as sysdba

2. StartuptheCDB2,aprecreatedOracle12c(12.1.0.2)ContainerDatabase:startup

3. Checkplugincompatibilityfirst:

SET SERVEROUTPUT ON DECLARE compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/tmp/pdb1.xml', pdb_name => 'PDB1') WHEN TRUE THEN 'YES' ELSE 'NO' END; BEGIN DBMS_OUTPUT.PUT_LINE(compatible); END; /

4. NowpluginthedatabasewithitsnewnamePDB1–fromthispointthere’snoUPGRdatabaseanymore.Inarealworldenvironmentyouwouldhaveabackuporuseabackup/copytoplugin.InourlabthedatabaseUPGRwillstayinplaceandbecomePDB1aspartofCDB2.PleaseusetheproposednamingastheTNSsetuphasbeendonealready.UsetheNOCOPYoptionforthislabtoavoidadditional2-3minutescopytime

Page 16: R12 upgrade document

16

create pluggable database PDB1 using '/tmp/pdb1.xml' nocopy tempfile reuse;

5. ConnecttothisnewPDB1andperformsanityoperations:alter session set container=PDB1; @?/rdbms/admin/noncdb_to_pdb.sql SanityoperationsrequiredinsidethePDBtoconnectthePDBwiththeCDBcorrectly.Thereforerunthescriptnoncdb_to_pdb.sql–thismaytakeaapprox10-20minutestocompleteduetorecompilations.Ifthescriptdidn'tgetexecutedthePDB1wouldopeninrestrictedmodeonly.

5. NowthedatabaseUPGRispluggedin–butnotopenyet.Itwillneedtobestarted.startup show pdbs exit

6. ToconnecttotheconsolidatedPDB1fromthecommandpromptthefollowingcommandsyntaxneedstobeused:sqlplus "sys/oracle@pdb1 as sysdba" AsanalternativeyoucouldusetheEZconnectsyntax: sqlplus "sys/oracle@//localhost:1521/pdb1 as sysdba"

***COMPLETED***TasksHOLPart2***

Page 17: R12 upgrade document

17

HOL–Part3–MigrateFTEXdatabasewithFullTransportableExport/ImportintoPDB2

Databasefileslocation: /oradata/FTEXPluggabledatabasefileslocation: /oradata/CDB2/pdb2Initializationparameterandpasswordfilelocation: /u01/app/oracle/product/11.2.0.4/dbsListenerconfiguration: /u01/app/oracle/product/12.1.0.2/network/admin

TasksHOLPart3

FullTransportableExport/ImportisanewOracleDatabase12cupgradeandmigrationfeaturecombiningthespeedofTransportableTablespaceswiththeease-of-useofDataPumptakingcareofallmetadataandnon-transportabledata.

YourtaskinHOLPart3willbetouseFullTransportableExport/ImporttomigratetheexistingOracle11.2.0.4databaseFTEXintoanewPDB2whichwillbelongtothecontainerdatabaseCDB2.Pleasestaywiththeproposednames(PDB2)astheTNSsetuphasbeensetupalreadytoallowconnectionsetc.

ThisfeatureworksindependentofOracleMultitenantandplatformandcanbeusedtomigratecrossEndiannessaswell.SourcedatabaseversionhastobeatleastOracle11.2.0.3,targetversionneedstobeatleastOracle12.1.0.1.Forcross-platformmigrationsRMANbackupswithCONVERToperationswillbenecessary.

SID:FTEX–Oracle11.2.0.4home SID:CDB2–Oracle12.1.0.2home$> . ftex <dot> <space> ftex fortheOracle11.2.0.4environmentwithyourdatabasetobepluggedinlater(SID:FTEX)

$> . cdb2 <dot> <space> cdb2fortheOracle12cenvironmentconnectingtotheContainerDatabase(SID:CDB2)

Page 18: R12 upgrade document

18

***STARTHERE***MigrateFTEXwithFullTransportableExport/ImportintoPDB2***

Thefirsttaskinthelabwillbetoprovideanemptydatabase–somethingwewoulddoforafullimportorfortransportabletablespacesaswell.Butinthisspecificcasewewanttoconsolidate,andthereforepre-createanemptyPDB2(aPluggableDatabase)insidethealreadyexistingCDB2(theContainerDatabase).

SID:FTEXOracle11.2.0.4home

SID:CDB2Oracle12.1.0.2home

ProvisionPDB2fromPDB$SEED:

1. SwitchtotheOracle12cCDB2environment:

. cdb2 sqlplus / as sysdba startup [ONLY ISSUE THIS COMMAND IF YOU ARE STILL RUNNING HOL PART1]

2. CreateanewpluggabledatabasePDB2:TheeasiestwaytocreateanemptyPDBistocloneitfromthetemplatePDBcalledPDB$SEEDwhichexistsineverycontainerdatabase.ThelocationtocreateitisdefinedbytheinitparameterPDB_FILE_NAME_CONVERT.ItisalreadysetinCDB2tohavethenewandemptyPDB2createdin/oradata/CDB2/pdb2directory.

CreateanemptyPDBbycloningthePDB$SEED:create pluggable database PDB2 admin user adm identified by adm file_name_convert=('/oradata/CDB2/pdbseed', '/oradata/CDB2/pdb2'); Thiswilltake1-2minutes.

Page 19: R12 upgrade document

19

StartthenewpluggabledatabasePDB2:alter session set container=pdb2; startup

3. CreateadirectoryobjectandadatabaselinkinsidethePDB2–youwillneedthisforthefulltransportoperation-thedirectory/oradata/CDB2/mydirhasbeenprecreatedaswellforDataPumpcreate directory mydir as '/oradata/CDB2/mydir'; grant read, write on directory mydir to system; create public database link SOURCEDB connect to system identified by oracle using 'FTEX'; exit

SID:FTEXOracle11.2.0.4home

SID:CDB2Oracle12.1.0.2home

PreparetheFTEXdatabasefortheFullTransportableExport/Import

InordertoruntheFullTransportableoperationwemustsetalldatatablespacesintoread-onlymode.Thisisthesameprocedurewewouldfollowforaregulartransportabletablespaceoperation.Oncethetablespaceisinread-onlymodewecancopythefile(s)tothetargetlocation

1. SwitchtotheOracle12cUPGRenvironment:

. ftex sqlplus / as sysdba

Page 20: R12 upgrade document

20

2. StarttheFTEXdatabaseandswitchdatatablespaces(here:USERS)intoread-onlymode:startup alter tablespace users read only; exit

3. Copythefilestothetargetlocation

cp /oradata/FTEX/users01.dbf /oradata/CDB2/pdb2

SID:FTEXOracle11.2.0.4home

SID:CDB2Oracle12.1.0.2home

DatamigrationviaFullTransportableExport/ImportfromFTEXintoPDB2

TheDataPumpimportwillberunthroughthedatabaselinkyoucreatedearlier–thusnoneedforanexportoradumpfile.DataPumpwilltakecareofeverything(currentlyexceptXDBandAWR)youneedfromthesystemtablepacesandmoveviews,synonyms,triggeretcovertothetargetdatabase(inourcase:PDB2).

1. SwitchtotheOracle12cCDB2environment:

. cdb2

2. ExecutetheFullTransportableExport/ImportwithDataPump impdp system/oracle@pdb2 network_link=sourcedb version=12 full=y \ transportable=always metrics=y exclude=statistics directory=mydir \ logfile=pdb2.log \ transport_datafiles='/oradata/CDB2/pdb2/users01.dbf'

Page 21: R12 upgrade document

21

Incasecopy&pastedoesnotworkwehavepreparedaparfilein/home/oracle/IMP.ThePDB2isopenandreadytouseaftertheTransportmigrationhascompleted:sqlplus "system/oracle@PDB2"

***COMPLETED***TasksHOLPart3***

Page 22: R12 upgrade document

22

�[optional]HOL–Part4–CreatePDB3inOracle12.1.0.1andupgradeviaplugout/intoOracle12.1.0.2

Databasefileslocation: /oradata/CDB1/pdb3Pluggabledatabasefileslocation: /oradata/CDB2/pdb3Initializationparameterandpasswordfilelocation: /u01/app/oracle/product/12.1.0.1/dbsListenerconfiguration: /u01/app/oracle/product/12.1.0.2/network/admin

TasksHOLPart4

OnetechniquetoupgradepluggabledatabasesinaMultitenantenvironmentisunplug-plugin.Thisapproachgivesalotofcontroloverapluggabledatabaseupgradebutrequiresmanualsteps,similartothecommandlineupgrade.

InthispartoftheHOLanewPDBwillbecreatedinanOracle12.1.0.1CDB1andupgradedviaunplug/pluginintotheOracle12.1.0.2CDB2.

SID:CDB1–Oracle12.1.0.1home SID:CDB2–Oracle12.1.0.2home$> . cdb1 <dot> <space> cdb1 fortheOracle12.1.0.1environmentwithyourdatabasetobepluggedinlater(SID:CDB1)

$> . cdb2 <dot> <space> cdb2fortheOracle12cenvironmentconnectingtotheContainerDatabase(SID:CDB2)

Page 23: R12 upgrade document

23

***STARTHERE***CreatePDB3,upgradeittoOracle12.1.0.2viaplugout/in***

Thefirsttaskinthelabwillbetoprovideanemptydatabase–somethingwewoulddoforafullimportorfortransportabletablespacesaswell.Butinthisspecificcasewewanttoconsolidate,andthereforepre-createanemptyPDB2(aPluggableDatabase)insidethealreadyexistingCDB2(theContainerDatabase).

SID:CDB1èPDB3Oracle12.1.0.1home

SID:CDB2èPDB3Oracle12.1.0.2home

CreateanewpluggabledatabasePDB3:

1. SwitchtotheOracle12.1.0.1CDB1environment:. cdb1 sqlplus / as sysdba

2. StarttheCDB1containerdatabase–ithasnoPDBsyet(exceptforPDB$SEED):

startup

3. CreateanewpluggabledatabasePDB3andstartit:create pluggable database PDB3 admin user adm identified by adm file_name_convert=('/oradata/CDB1/pdbseed', '/oradata/CDB1/pdb3'); Thiswilltake1-2minutes.alter session set container=pdb3; startup

4. Executethepreupgradecheckscript@/u01/app/oracle/product/12.1.0.2/rdbms/admin/preupgrd.sql

Page 24: R12 upgrade document

24

4. Verifythepreupgrade.logandmakenecessarychangesOpena2ndxterm(rightmouseclick è Konsole ...):less /u01/app/oracle/cfgtoollogs/CDB1/preupgrade/preupgrade.log

5. Gatherdictionarystatspriortotheupgrade:EXECUTE dbms_stats.gather_dictionary_stats;

6. Executethepreupgrade_fixups.sql –itgotcreatedbypreupgrd.sqlrunindirectory/u01/app/oracle/cfgtoollogs/CDB1/preupgrade@/u01/app/oracle/cfgtoollogs/CDB1/preupgrade/preupgrade_fixups.sql

7. SwitchtotheCDB$ROOTlayer,closethepluggabledatabasePDB3andunplugitalter session set container=CDB$ROOT; alter pluggable database PDB3 close; alter pluggable database PDB3 unplug into '/tmp/pdb3.xml';drop pluggable database PDB3 keep datafiles; shutdown immediate exit

SID:CDB1èPDB3Oracle12.1.0.1home

SID:CDB2èPDB3Oracle12.1.0.2home

PluginthePDB3intoCDB2andupgradeittoOracle12.1.0.2:

1. SwitchtotheOracle12.1.0.2CDB2environment:

. cdb2

Page 25: R12 upgrade document

25

sqlplus / as sysdba

2. ExecutethePlugInCheckandcheckPDB_PLUG_IN_VIOLATIONSwhentheresultoftheplugincheckis"NO":SET SERVEROUTPUT ON

DECLARE compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/tmp/pdb3.xml', pdb_name => 'PDB3') WHEN TRUE THEN 'YES' ELSE 'NO' END; BEGIN DBMS_OUTPUT.PUT_LINE(compatible); END; / select message, status from pdb_plug_in_violations where type like '%ERR%';

3. PluginthePDB3intoCDB2create pluggable database pdb3 using '/tmp/pdb3.xml' file_name_convert=( '/oradata/CDB1/pdb3', '/oradata/CDB2/pdb3');

4. OpenPDB3inUPGRADEmodeandupgradeitalter pluggable database PDB3 open upgrade; exit cd $ORACLE_HOME/rdbms/admin $ORACLE_HOME/perl/bin/perl catctl.pl -c 'PDB3' catupgrd.sql

Page 26: R12 upgrade document

26

5. Recompileafterupgradesqlplus / as sysdba alter session set container=PDB3; startup @?/rdbms/admin/utlrp.sql show pdbs exit

NN SID:CDB2èPDB3Oracle12.1.0.2home

FinallyafewCDB/PDBexercisesFirsttestwillintroduceyoutothenewCDBviews.Thereforewecreateasimpletableandcheckitsvisibilitywithinthedictionaryviews

1. ConnectdirectlytoPDB1intheOracle12.1.0.2environment:

. cdb2 sqlplus "sys/oracle@//localhost:1521/pdb1 as sysdba"

2. Createatableandinsertdata:create table HOL (col1 number); insert into HOL values (1); commit;

3. ConnectdirectlytoPDB2:

Page 27: R12 upgrade document

27

alter session set container=PDB2;4. Createatableandinsertdata:

create table HOL (col1 number); insert into HOL values (2); commit;

5. ConnectdirectlytoPDB3:alter session set container=PDB3;

6. Createatableandinsertdata:

create table HOL (col1 number); insert into HOL values (2); commit;

7. ConnectdirectlytoCDB$ROOT:alter session set container=cdb$root;

8. QuerythedatafromtheCDB_Views:

select CON_ID, SUBSTR(TABLE_NAME,1,10) TNAME from CDB_TABLES WHERE TABLE_NAME='HOL'; You'llseethateachtableHOLwithinacertainPDBisvisibletotheCDB$ROOT.Butifyou'drepeattheexercisewithineachofthePDBsyou'llseejustthecontentsonaPDBlevel.RecognizetheCON_IDwhichrepresentswhereanobjectexists.

***COMPLETED***TasksHOLPart4***

Page 28: R12 upgrade document

28

ThankyourforcompletingourUpgrade,Migrate&ConsolidatetoOracleDatabase12cHands-On-Lab.

Ifyouhavefurtherquestionsyoumaypleasedownloadthe+500slidedeckcontainingalmosteverythingaboutupgradesandmigrations.Andalwaysfeelfreetocontactusdirectly.

http://blogs.oracle.com/UPGRADE

Thanksandsuccessfulupgrades!

RoySwonger&MikeDietrich&TheDatabaseUpgradeTeam