Professional Documents
Culture Documents
Agenda
ETL Concepts ETL Process Development Recommendations
Oracle Database Configuration PL/SQL Techniques Database Features
Conclusion
BGOUG - 2005
What is ETL?
ETL Elements ETL Purpose ETL as a Part of Business Intelligence Solution Types of ETL
Using Tools Custom PL/SQL Scripts
BGOUG - 2005
Transform
Convert the Input Format to the Target Format Encode any Values
Load
Insert the Transformed Data to the Target Tables
BGOUG - 2005
Agenda
ETL Concepts ETL Process Development Recommendations
Oracle Database Configuration PL/SQL Techniques Database Features
Conclusion
BGOUG - 2005
Agenda
ETL Concepts ETL Process Development Recommendations
Oracle Database Configuration PL/SQL Techniques Database Features
Conclusion
BGOUG - 2005
Bind Options
Single Row Binds Bulk Binds
BGOUG - 2005
BGOUG - 2005
Context Switching
BGOUG - 2005
Bulk Binding
IN-Binds
OUT-Binds
OPEN cursor LOOP FETCH cursor BULK COLLECT INTO LIMIT 100; EXIT WHEN cursor%NOTFOUND; END LOOP;
BGOUG - 2005
FORALL i IN 1..20 INSERT INTO emp2 VALUES (enums(i), names(i), median(sals), ...);
BGOUG - 2005
Collection Types
Associative Arrays( PL/SQL Tables )
PL/SQL type only - not a SQL Type Easy to Use
Nested Tables
Shared Type
BGOUG - 2005
Nested Tables
PL/SQL
Example
DECLARE TYPE nest_tab_t IS TABLE OF NUMBER; nt nest_tab_t := nest_tab_t(); BEGIN FOR i IN 1..100 LOOP nt.EXTEND; nt(i) := i; END LOOP; END; /
BGOUG - 2005
Nested Tables
Global
Example
CREATE OR REPLACE TYPE email_demo_obj_t AS OBJECT ( email_id NUMBER, demo_code NUMBER, value VARCHAR2(30) ); / CREATE OR REPLACE TYPE email_demo_nt_t AS TABLE OF email_demo_obj_t; /
BGOUG - 2005
Nested Tables
SQL-Defined Nested Tables
Sorted Aggregated Ised in Dynamic In-Lists Joined with SQL Tables Joined with other PL/SQL nested tables
CAST Operator
o Explicitly Tells Oracle the Data Type to be used to Handle the Operation
BGOUG - 2005
Nested Tables
Global Nested tables example:
DECLARE eml_dmo_nt email_demo_nt_t := email_demo_nt_t(); BEGIN -- Some logic that populates the nested table eml_dmo_nt.EXTEND(3); eml_dmo_nt(1) := email_demo_obj_t(45, 3, '23'); eml_dmo_nt(2) := email_demo_obj_t(22, 3, '41'); eml_dmo_nt(3) := email_demo_obj_t(18, 7, 'over_100k'); -- Process the data in assending order of email id. FOR r IN (SELECT * FROM TABLE(CAST(eml_dmo_nt AS email_demo_nt_t)) ORDER BY 1) LOOP dbms_output.put_line(r.email_id || ' ' || r.demo_id); END LOOP; END; /
BGOUG - 2005
Table Functions
Data is Buffered in the Local Variables During Function Execution Pipelined Table Functions
SELECT * FROM plsql_function;
BGOUG - 2005
BGOUG - 2005
Package Variables
What are Package Variables
Globally Declared Variables in Package, outside of a Procedure or Function Definition Values set by Package Initialization Code Enable Data Caching
BGOUG - 2005
Native Compilation
How it works?
PL/SQL First is Compiled Down To P-Code C Source Code is Generated from P-Code Native Compiler is invoked Creating a 'C' Shared Object Library Subsequent Calls to PL/SQL Object are Run by the 'C' Library
BGOUG - 2005
Agenda
ETL Concepts ETL Process Development Recommendations
Oracle Database Configuration PL/SQL Techniques Database Features
Conclusion
BGOUG - 2005
ETL recommendations
Database Features and Utilities
External Tables( 9i ) Transportable Tablespaces DML Exception Handling( 10g R2 ) Regular Expressions Support( 10g R1 ) SQL*Loader Direct Path INSERT Parallel DML Statements
BGOUG - 2005
Database Features
External tables
File can be Queried as if it is a Real Database Table Can Sort, Aggregate, Filter Rows, etc. External File Can be Queried in Parallel
Transportable Tablespaces
Oracle 10g - transport across different platforms
BGOUG - 2005
Database Features
DML Exception Handling ( New in 10g R2 ) Catch the Error and Move On: Error Logging Clause
Enabling: SQL> exec dbms_errlog.CREATE_ERROR_LOG ('ACCOUNTS','ERR_ACCOUNTS'); SQL> insert into accounts select * from accounts_ny log errors into err_accounts reject limit 200; SQL> select ORA_ERR_NUMBER$, ORA_ERR_MESG$, ACC_NO from err_accounts;
BGOUG - 2005
Database Features
Regular Expression Support ( New in 10g R1 ) SQL*Loader Direct Path Insert
SQL*Loader CREATE TABLE AS SELECT INSERT /*+ APPEND*/ SELECT
BGOUG - 2005
Agenda
ETL Concepts ETL Process Development Recommendations
Oracle Database Configuration PL/SQL Techniques Database Features
Conclusion
BGOUG - 2005
Example
create package with PIPELINED Function
....
FUNCTION transform (new_data SYS_REFCURSOR) RETURN email_demo_nt_t PIPELINED PARALLEL_ENABLE ( PARTITION new_data BY ANY ) IS
....
INSERT /*+ append nologging*/ INTO ... SELECT /*+ parallel(a,4)*/ FROM .. TABLE( CAST( package.pipe_func_name( select * from table_3 ) as TYPE ) a);
BGOUG - 2005
Conclusion
High Perofmance ETL Solution
BGOUG - 2005
BGOUG - 2005
http://www.amazon.com/exec/obidos/tg/detail//0471200247/qid=1129731960/sr=2-1/ref=pd_bbs_b_2_1/1049260048-7507956?v=glance&s=books
BGOUG - 2005
http://www.amazon.com/exec/obidos/tg/detail//0764567578/ref=pd_sim_b_1/104-92600487507956?%5Fencoding=UTF8&v=glance
BGOUG - 2005
http://www.amazon.com/exec/obidos/tg/detail//1555583350/qid=1129732390/sr=22/ref=pd_bbs_b_2_2/104-92600487507956?v=glance&s=books
BGOUG - 2005
Questions or Comments
Boyan Boev
b.boev@cnsys.com
BGOUG - 2005