PL/SQL Performance tuning Concurrency & Recovery Data transfer utilities Oracle Day 5 2 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/DB25/003 Version No. 2.0 Objectives To understand PL/SQL performance tuning To understand few tools like DBMS_TRACE used to tune the PL/SQL code. To understand the locking mechanism and types of locking in Oracle. To understand the read consistency model. To understand the concurrency schemes followed by Oracle. To understand different kinds of database failures and procedure to recover from them. To understand data transfer utilities PL/SQL Performance tuning 4 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/DB25/003 Version No. 2.0 Tuning PL/SQL Applications • Usually developer efforts are concentrated on tuning the SQL’s used by the PL/SQL program for performance improvement. • Being a procedural language, there can be situations where excessive CPU usage arises out of the code in Pl/SQL even though there are no database accesses. • By tuning the applications, one can make sure they continue to deliver the required response time and throughput. 5 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/DB25/003 Version No. 2.0 Reasons for PL/SQL Performance Problems • Badly written SQL statements • Poor programming practices • Misuse of shared memory. 6 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/DB25/003 Version No. 2.0 Solution to Badly written SQL statements • Analyze the execution plans and performance using EXPLAIN PLAN statement. • Rewrite the SQL statements. • For more info on SQL statements, please refer the RDBMS artifacts. 7 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/DB25/003 Version No. 2.0 Solutions to Poor programming practices Here different areas of PL/SQL code are categorized and some of the basic principles of optimizing are discussed: • DECLARE – what is required by the code • Hand crafting the Built-in Functions • Inefficient Conditional Control Statements • Check the LOOP Statements • Implicit Datatype Conversions • Inappropriate Declarations for Numeric Datatypes • Unnecessary NOT NULL Constraints 8 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/DB25/003 Version No. 2.0 DECLARE – what is required by the code • After the completion of the code, search for un-used variables if any. Remove them from the code. • Defer the execution till it required. DECLARE l_chr_var1 VARCHAR2(15) := takes_five_miunte(… ); …. BEGIN IF criteria1 THEN use_the_defined_variable(l_chr_var1); ELSE say 90% of the cases follows this Normal_code; END IF; END; DECLARE …. BEGIN IF criteria1 THEN DECALRE l_chr_var1 VARCHAR2(15) := takes_five_miunte(… ); BEGIN use_the_defined_variable(l_chr_var1); END; ELSE Normal_code; END IF; END; 9 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/DB25/003 Version No. 2.0 Hand crafting the Built-in Functions • Built-in functions are more efficient. • Do not hand code one’s own versions of built-in functions such as REPLACE, TRANSLATE, SUBSTR, INSTR, RPAD, and LTRIM. . 10 Copyright © 2005, Infosys Technologies Ltd ER/CORP/CRS/DB25/003 Version No. 2.0 Inefficient Conditional Control Statements • Most probable condition must be placed initially. • Now, consider the following AND expression: IF credit_ok(cust_id) AND (loan < 5000) THEN END IF; The Boolean function credit_ok is always called. • However, if one switch the operands of AND as follows IF (loan < 5000) AND credit_ok(cust_id) THEN END IF; The function is called only when the expression loan < 5000 is true [...]... 11 ER/CORP/CRS/DB25/003 Version No 2.0 Implicit Datatype Conversions • Avoiding implicit conversions can improve performance DECLARE DECLARE vNum NUMBER; vChar CHAR(5); BEGIN BEGIN vNum:=vNum+15; converted vChar := 25; converted vNum:=vNum+15.0; not converted vChar := '25'; not converted END; END; Copyright © 2005, Infosys Technologies Ltd 12 ER/CORP/CRS/DB25/003 Version No 2.0 Inappropriate... Infosys Technologies Ltd 28 ER/CORP/CRS/DB25/003 Version No 2.0 Recovery in Oracle Possible causes of failure • Process failure – User/Server Process – Background Process • Database Instance failure • Media failure Copyright © 2005, Infosys Technologies Ltd 30 ER/CORP/CRS/DB25/003 Version No 2.0 Process recovery • Process recovery – to be done when user/server process failed – Failure detected by PMON... ER/CORP/CRS/DB25/003 Version No 2.0 Concurrency in Oracle Locking mechanism • • • • • • The smallest unit that can be locked in oracle is the row For each SQL statement oracle acquires the appropriate lock automatically Programmers cannot acquire locks at the row level explicitly The smallest unit at which programmers can explicitly acquire locks is the table Locks are released when transaction commits or rolls back Oracle. .. Infosys Technologies Ltd 32 ER/CORP/CRS/DB25/003 Version No 2.0 Media recovery • • Initiated by DBA Complete Media recovery – Restore backup data files – Start recovery program using SQL *DBA – Retrieve archived log files to roll forward and roll back using generated roll back segments Copyright © 2005, Infosys Technologies Ltd 33 ER/CORP/CRS/DB25/003 Version No 2.0 Data Transfer Utilities Objectives... Technologies Ltd 20 ER/CORP/CRS/DB25/003 Version No 2.0 Types of locks • When Oracle acquires locks at the row level, it automatically acquires locks at the table level also • There are 5 different modes of locking at the table level – – – – – row share row exclusive share row exclusive share exclusive Copyright © 2005, Infosys Technologies Ltd 21 ER/CORP/CRS/DB25/003 Version No 2.0 LOCK TABLE LOCK TABLE... Copyright © 2005, Infosys Technologies Ltd 35 ER/CORP/CRS/DB25/003 Version No 2.0 Export & Import utilities • Complementary utilities which allow one to write data in an ORACLE- binary format from the database into operating system files and to read data back from those • EXPORT, IMPORT are used for the following tasks: – – – – backup Oracle data in operating system files restore tables that were dropped... Infosys Technologies Ltd 24 ER/CORP/CRS/DB25/003 Version No 2.0 Locking Modes ROW SHARE(=SHARE UPDATE) Allow concurrent access, prevent Exclusive locking by other transactions SHARE ROW EXCLUSIVE(SRX) Allow other users to look at table but prevent sharing and updates by other transactions Copyright © 2005, Infosys Technologies Ltd 25 ER/CORP/CRS/DB25/003 Version No 2.0 Locking Mode of table lock SQL... © 2005, Infosys Technologies Ltd X 26 ER/CORP/CRS/DB25/003 Version No 2.0 Lock Compatibility SQL statement Table Lock Compatibility RS RX S SRX X SELECT FROM None Y Y Y Y Y INSERT INTO RX Y Y N N N UPDATE RX Y Y N N N SELECT FOR UPD RS Y Y Y N N SHARE MODE S Y N Y N N SRX MODE SRX Y N N N N EXCLUSIVE MODE X N N N N N 27 ER/CORP/CRS/DB25/003 Version No 2.0 Copyright © 2005, Infosys Technologies Ltd Read... Copyright © 2005, Infosys Technologies Ltd 14 ER/CORP/CRS/DB25/003 Version No 2.0 Solution to Misuse of shared memory • Sizing the shared memory pool correctly • Make sure it is large enough to hold all frequently used packages but not so large that memory is wasted Copyright © 2005, Infosys Technologies Ltd 15 ER/CORP/CRS/DB25/003 Version No 2.0 Identifying PL/SQL Performance problems • There are... the transaction and release resources – If process is a background process, generally instance cannot function correctly Copyright © 2005, Infosys Technologies Ltd 31 ER/CORP/CRS/DB25/003 Version No 2.0 Instance recovery • • • • • Need – Required because DBWR writes data to disk only when buffer is nearly full – Some data which is committed may not be present in database – Database may contain uncommitted . function is called only when the expression loan < 500 0 is true 11 Copyright © 200 5, Infosys Technologies Ltd ER/CORP/CRS/DB25 /00 3 Version No. 2 .0 Check the LOOP statements • Minimize the number. vNum:=vNum +15 ; converted vNum:=vNum +15 .0; not converted END; DECLARE vChar CHAR(5); BEGIN vChar := 25; converted vChar := '25'; not converted END; 13 Copyright © 200 5, Infosys. executed outside the loop. 12 Copyright © 200 5, Infosys Technologies Ltd ER/CORP/CRS/DB25 /00 3 Version No. 2 .0 Implicit Datatype Conversions • Avoiding implicit conversions can improve performance.