Dr. Timothy Hall
Retail Price $34.95 / £27.95
- Includes Oracle10g!
Oracle experts know that PL/SQL tuning makes a huge difference in execution speed. As one of the world’s most popular and respected experts, Dr. Tim Hall shares his secrets for tuning Oracle PL/SQL. This indispensable book shows how to hypercharge Oracle applications gaining as much as 30x improvement in execution speed using under-documented code tricks. Packed with working examples, learn how to re-write SQL into PL./SQL and how to use advanced Oracle bulk array processing techniques to achieve super high performance. You can save your company millions of dollars in hardware costs by making your applications run at peak efficiency. Targeted at the Senior Oracle DBA and developer, this advanced book illustrates powerful techniques that can make PL/SQL run faster than ever before. This book is not for beginners and should only be purchased by seasoned Oracle professionals who must turbocharge their applications. Your time savings from a single script is worth the price of this great book.
* Learn undocumented tricks for hypercharging the performance of PL/SQL * Understand the bulking and direct load techniques to add millions of rows per second * See how to use the forall, bulk collect and ref cursor commands * Get an online code depot of working PL/SQL examples * Learn to re-write SQL into PL/SQL * Get step-by-step instructions for compiling PL/SQL * See the secrets for reducing context switching delays
* See the latest Oracle 10g PL/SQL Tuning Features
About the Author:
Dr. Tim Hall is an Oracle Certified Professional DBA (7.3, 8, 8i, 9i, 10g) and has been involved in DBA, design and development work with Oracle databases since graduating from university in 1994 with a PhD in Molecular Genetics.
Tim Hall has gained a wide knowledge of the Oracle software stack and has worked as a consultant for several multi-national companies on projects ranging from real-time control systems to OLTP web applications. Since 2000 he has published over 200 articles on his website www.oracle-base.com covering a wide range of Oracle features. Tim has been a Karate black belt since 1993 and is a practitioner and qualified teacher of Hatha and Ashtanga yoga. In addition he enjoys running, having completed 2002 London Marathon.
Table of Contents:
Chapter 4 - Caching Session Data Introduction Using Arrays for Lookup Tables Using Package Variables to Store Global Data Using Contexts to Store Global Data Conclusion
Index Topics:
Reviews:
Errata:
Correction 1 ============ Page 105-106 - bulk_collect_limit.sql script should read: SET SERVEROUTPUT ON DECLARE TYPE t_bulk_collect_test_tab IS TABLE OF bulk_collect_test%ROWTYPE; l_tab t_bulk_collect_test_tab; CURSOR c_data IS SELECT * FROM bulk_collect_test; BEGIN OPEN c_data; LOOP FETCH c_data BULK COLLECT INTO l_tab LIMIT 10000; EXIT WHEN l_tab.count = 0; -- Process contents of collection here. DBMS_OUTPUT.put_line(l_tab.count || ' rows'); END LOOP; CLOSE c_data; END; / Correction 2 ============ Page 106-107 - bulk_collect_limit_8i.sql script should read: SET SERVEROUTPUT ON DECLARE TYPE t_owner_tab IS TABLE OF bulk_collect_test.owner%TYPE; TYPE t_object_name_tab IS TABLE OF bulk_collect_test.object_name%TYPE; TYPE t_object_id_tab IS TABLE OF bulk_collect_test.object_id%TYPE; l_owner_tab t_owner_tab; l_object_name_tab t_object_name_tab; l_object_id_tab t_object_id_tab; CURSOR c_data IS SELECT owner, object_name, object_id FROM bulk_collect_test; BEGIN OPEN c_data; LOOP FETCH c_data BULK COLLECT INTO l_owner_tab, l_object_name_tab, l_object_id_tab LIMIT 10000; EXIT WHEN l_owner_tab.count = 0; -- Process contents of collection here. DBMS_OUTPUT.put_line(l_owner_tab.count || ' rows'); END LOOP; CLOSE c_data; END; / Correction 3 ============ Page 107-108 - implicit_array_processing.sql script should read: SET SERVEROUTPUT ON DECLARE TYPE t_bulk_collect_test_tab IS TABLE OF bulk_collect_test%ROWTYPE; l_tab t_bulk_collect_test_tab; CURSOR c_data IS SELECT * FROM bulk_collect_test; l_start NUMBER; BEGIN -- Time a regular population. l_start := DBMS_UTILITY.get_time; FOR cur_rec IN (SELECT * FROM bulk_collect_test) LOOP NULL; END LOOP; DBMS_OUTPUT.put_line('Regular : ' || (DBMS_UTILITY.get_time - l_start)); -- Time bulk with LIMIT 10. l_start := DBMS_UTILITY.get_time; OPEN c_data; LOOP FETCH c_data BULK COLLECT INTO l_tab LIMIT 10; EXIT WHEN l_tab.count = 0; END LOOP; CLOSE c_data; DBMS_OUTPUT.put_line('LIMIT 10 : ' || (DBMS_UTILITY.get_time - l_start)); -- Time bulk with LIMIT 100. l_start := DBMS_UTILITY.get_time; OPEN c_data; LOOP FETCH c_data BULK COLLECT INTO l_tab LIMIT 100; EXIT WHEN l_tab.count = 0; END LOOP; CLOSE c_data; DBMS_OUTPUT.put_line('LIMIT 100: ' || (DBMS_UTILITY.get_time - l_start)); END; /
Page 163: Currently says: "Introduction to PL/QL RAM Memory" I believe it should say something like: "Introduction to PL/SQL Memory Management"
SAN: 2 5 5 - 1 3 1 4