81
Oracle Database 12c The Best Oracle Database 12c Tuning Features for Developers and DBAs Presented by: Alex Zaballa, Oracle DBA

The best Oracle Database 12c Tuning Features for Developers

Embed Size (px)

Citation preview

Oracle Database 12c

The Best Oracle Database 12c Tuning Features for Developers

and DBAs

Presentedby: AlexZaballa,OracleDBA

Alex Zaballa

http://alexzaballa.blogspot.com/

@alexzaballa206andcounting…https://www.linkedin.com/in/alexzaballa

Workedfor7 yearsinBrazil asanOracleDeveloper.2000- 2007

Workedfor8 yearsinAngolaasanOracleDBAfortheMinistryofFinance.2007- 2015

Oracle Database 12c

The Best Oracle Database 12c Tuning Features for Developers and DBAs

OracleOfficialDocumentation12.1.0.2

• http://docs.oracle.com/database/121/NEWFT/chapter12102.htm

OracleLearningLibrary(OLL)

• https://apexapps.oracle.com/pls/apex/f?p=44785:1:0

Articlesabout12c

• https://oracle-base.com/articles/12c/articles-12c

“Withmorethan500newfeatures,OracleDatabase12c isdesignedtogiveOraclecustomersexactlywhatthey’vetoldustheyneedforcloudcomputing,bigdata,security,andavailability.”

OracleAnnouncesBetaAvailabilityofOracleDatabase12cRelease2 - Oct26,2015

• PLUGGABLEDATABASESFrom252to4096

• HOTCLONINGDon’tneedtoputthesourceinread-onlyforcloning

• SHARDINGIt’slikepartitioninginasharednothingdatabaseThedataissplitintomultipledatabases

• In-MemoryIn-MemorycolumnStoreonActiveDataGuardHeatMap

• APPLICATIONCONTAINERPluggableDatabaseswillshareapplicationobjects

• Moreisolation,resourcemanagerwilllimitthememoryinadditiontoCPUandI/O.• AWRwillworkonActiveDataGuardDatabase:youcantuneyourreportingdatabase

AvailabilityofOracleDatabase12.2

Source:https://blogs.oracle.com/UPGRADE/entry/oracle_database_12_2_just

OracleDatabaseReleaseStatusMOSNote:742060.1

Multitenant

Source:OracleDocumentation

Multitenant

Is it a Tuning Feature?

Source:OracleDocumentation

Multitenant

Source:https://blogs.oracle.com/UPGRADE/entry/non_cdb_architecture_of_oracle

Multitenant

Source:https://blogs.oracle.com/UPGRADE/entry/non_cdb_architecture_of_oracle

Multitenant

Source:https://blogs.oracle.com/UPGRADE/entry/non_cdb_architecture_of_oracle

In-Memory

Source:OracleDocumentation

In-MemorySIMDVectorProcessing

Source:http://www.oracle.com/technetwork/database/in-memory/overview/twp-oracle-database-in-memory-2245633.html

In-Memory

Source:OracleDocumentation

Is it a Tuning Feature?

“Using Database In-Memory, businesses can instantaneouslyrun analytics and reports that previously took hours or days.”

In-Memory

In-MemoryArea– astaticpoolinSGA

In-Memory

Source:OracleBase.com

In-MemoryAltertablehr.EMPLOYEES inmemory;

ALTERTABLEsalesMODIFYPARTITIONSALES_Q1_1998INMEMORY;

ALTERTABLEsalesINMEMORYNOINMEMORY(prod_id);

CREATETABLESPACEtbs_testDATAFILE'+DG01SIZE100MDEFAULTINMEMORY;

In-Memory

Source:http://www.oracle.com/technetwork/database/in-memory/overview/twp-oracle-database-in-memory-2245633.html

SQLQueryRowLimitsandOffsets

SQLQueryRowLimitsandOffsets

SQLQueryRowLimitsandOffsets

Top-NQueries– Pré 12c

SQLQueryRowLimitsandOffsets

SQLQueryRowLimitsandOffsets

SQLQueryRowLimitsandOffsets

DEMO

ApproximateCountDistinct

ThisfunctionprovidesanalternativetotheCOUNT(DISTINCTexpr),withnegligibledeviationfromtheexactresult.

DEMO

PL/SQLFromSQLwith

functionIs_Number(xinvarchar2)returnvarchar2isPlsql_Num_Error exception;pragmaexception_init(Plsql_Num_Error,-06502);beginif(To_Number(x)isNOTnull)thenreturn'Y';elsereturn'';endif;exceptionwhenPlsql_Num_Error thenreturn'N';

endIs_Number;selectrownum,x,is_number(x)is_num fromt;

DEMO

SessionLevelSequences

Sessionlevelsequences areusedtoproduceuniquevaluesinasession.Oncethesessionends,thesequenceisreset.

GeneratingPrimaryKeysforaGlobalTemporaryTablewouldbeafieldwherethosekindsofsequencescouldbeused.

SessionLevelSequences

CREATESEQUENCEsequence_testSTARTWITH1INCREMENTBY1SESSION/

SessionLevelSequences

ALTERSEQUENCEsequence_testSESSION;

ALTERSEQUENCEsequence_testGLOBAL;

DEMO

SessionprivatestatisticsforGlobalTemporaryTables

Pre12c,statisticsgatheredforglobaltemporarytables(GTTs)werecommontoallsessions.

SessionprivatestatisticsforGlobalTemporaryTables

On12c,bydefaultsession-privatestatisticsareenabled

SELECTDBMS_STATS.get_prefs('GLOBAL_TEMP_TABLE_STATS')FROMdual;

STATS------------------------------------------------------------------------------SESSION

SessionprivatestatisticsforGlobalTemporaryTables

Howtochange?

Behaviorpre12c:BEGINDBMS_STATS.set_global_prefs (pname =>'GLOBAL_TEMP_TABLE_STATS',pvalue =>'SHARED');

END;/

Backtodefaulton12c:BEGINDBMS_STATS.set_global_prefs (pname =>'GLOBAL_TEMP_TABLE_STATS',pvalue =>'SESSION');

END;/

SessionprivatestatisticsforGlobalTemporaryTables

Howtochangeforonetable?

BEGINdbms_stats.set_table_prefs('SCOTT','GTT_TEST','GLOBAL_TEMP_TABLE_STATS','SHARED');END;

BEGINdbms_stats.set_table_prefs('SCOTT','GTT_TEST','GLOBAL_TEMP_TABLE_STATS’,’SESSION');END;

DEMO

TemporaryUndo

GlobalTemporaryTables(GTT)holdthedatainatemporarytablespace.ThedatainGTTsareeitherdeletedaftercommitorkeptuntilthesessionisconnecteddependingofthedefinitionoftheGTT.(ONCOMMITPRESERVEORDELETEROWS).

DMLsinaGlobalTemporaryTablesdonotgenerateREDO,butgenerateUNDO andthiswillresultinREDOgenerating.

TemporaryUndo

altersessionsettemp_undo_enabled=true;

altersystemsettemp_undo_enabled=true;

**youcanchangeforthesessionorforthedatabase.*defaulttrue

DEMO

MultipleIndexesonthesamesetofColumns

Pre12c:

ORA-01408:suchcolumnlistalreadyindexederror.

MultipleIndexesonthesamesetofColumns

Istheabilitytocreatemorethanoneindexonthesamesetofcolumnsin12c.

**Onlyoneoftheseindexescanbevisibleatatime

MultipleIndexesonthesamesetofColumns

Whywouldyouwanttodothat?

• Uniqueversusnonunique

• B-treeversusbitmap

• Differentpartitioningstrategies

DEMO

LimitthePGA

SQL>showparameterpga

NAME TYPEVALUE-------------------------- ------------- ----------------------pga_aggregate_limit biginteger2G

pga_aggregate_target ****

LimitthePGA

PGA_AGGREGATE_LIMIT issettothegreaterof:

- 2GB(defaultvalue)- 200%ofPGA_AGGREGATE_TARGET- 3MBtimesthePROCESSESparameter

StatisticsDuringLoads

Theabilitytogatherstatisticsautomaticallyduringbulkloads:

- CREATETABLEASSELECT

- INSERTINTO...SELECTintoanemptytableusingadirectpathinsert

DEMO

PartialIndexesforPartitionedTable

• Youcancreatelocalandglobalindexesonasubset ofthepartitionsofatable,enablingmoreflexibilityinindexcreation.

• Thisfeatureisnotsupportedforuniqueindexes,orforindexesusedforenforcinguniqueconstraints.

PartialIndexesforPartitionedTable

DEMO

FullDatabaseCaching

Canbeusedtocachetheentiredatabaseinmemory.Itshouldbeusedwhenthebuffercachesizeofthedatabaseinstanceisgreaterthanthewholedatabasesize.

AdaptiveQueryOptimization

ê

AdaptivePlans

ê

AdaptiveJoinMethod

AdaptiveJoinMethod

OptimizercanchangejoinfromNestedLooptoHashJoinandviceversa.

Why?Optimizermistakes§ EstimatedRowsandActualrowsaredifferent

Before12crequiresDBA/Developerintervention

AdaptiveJoinMethod

Source:OracleDocumentation

AdaptiveJoinMethod

ParametersthatcontrolAdaptivePlans:

Name Type Valueoptimizer_adaptive_features boolean TRUE

optimizer_adaptive_reporting_only boolean FALSEoptimizer_features_enable string 12.1.0.1

ExplainPlancommandshowsthedefaultplan

Source:OracleDocumentation

DBMS_XPLAN.DISPLAY_CURSORshowsthefinalplan

Source:OracleDocumentation

DEMO

Real-TimeSQLMonitoring

• Sql MonitoringrequiresbothDiagnosticsandTuningPacklicenses

Real-TimeSQLMonitoring

• MONITORHintSELECT/*+MONITOR*/

• Allparallelstatements

• After5secondsofCPU/IOtimespentforserialqueries

Real-TimeSQLMonitoring

Real-TimeSQLMonitoring

Real-TimeSQLMonitoring

Real-TimeSQLMonitoring

Real-TimeSQLMonitoring

Real-TimeSQLMonitoring

Real-TimeSQLMonitoring

Real-TimeSQLMonitoringSPOOL/tmp/report_sql_monitor.htm

SELECTDBMS_SQLTUNE.report_sql_monitor(sql_id =>'5dhu4w0j59yp7',type=>'HTML',report_level =>'ALL')ASreportFROMdual;

SPOOLOFF

Real-TimeSQLMonitoring

DEMO

SQLcl

http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

ThankYou

SlidesAvailable:http://www.slideshare.net/