Andrew Holdsworth Howard Plemmons Director Real World and ISV Performance

Andrew Holdsworth
Director Real World and ISV
Performance
Oracle Corporation
Howard Plemmons
Senior Software Manager
SAS Institute Inc.
Oracle and SAS Development
Status





Introduction
Oracle/SAS Certification Status
Oracle Technology Adoption at SAS
Technical Solutions Using Oracle and SAS
Oracle Database 10g New Features
Applicable to SAS Users
 Oracle/SAS Forums
Oracle/SAS Certification Status
SAS
Release
Platforms
Comments
V8 SAS
Windows, UNIX, MVS,
VMS
V9 SAS
Windows, UNIX, MVS,
VMS
32 and 64 Bit, All
Supported Oracle
releases
32 and 64 Bit,
Oracle 8.1.7 and
up
 Also See
http://www.sas.com/service/techsup/access/searchPage.hsql
Current Oracle Technology
Adoption at SAS
•
•
•
•
OCI programming
Partitioning and Parallelism
RAC Implementation
LOBS
Technical Solutions
Using Oracle and SAS
Considerations
 Can I predict/project data/hardware needs to
meet short term goals
 What questions can I ask of the data
 What questions should I ask of the data
 What are the expectations for answers
 How can I make SAS and Oracle more
efficient
SAS
What is SAS
 SAS Intelligence Architecture
–
–
Component Parts (i.e. ETL, Data Warehousing,
Analytics, BI, Reporting, Portability)
Leverage your infrastructure
 Infrastructure
–
Components
 Oracle DBMS
 OS
 Platform
SAS – Intelligence Value Chain
Intelligence Value Chain (IVC)




Planning
SAS/ACCESS products (ETL)
Leverage Oracle Infrastructure
Performance Optimizations SAS 9
SAS & Oracle Release Matrix
 http://www.sas.com/service/techsup/access/listPage.h
sql
 SAS V9
–
–
64 bit OS support
PC/unix/MVS/midrange
SAS/ACCESS
 SAS V9 Supports Oracle (8.1.7.2, 9i and 10G)
on:
–
–
–
–
Windows – XP, NT, 2000, W64
Unix – 64 bit platforms (HP, SUN, AIX, ALX), 32
bit linux, HP Itanium
MVS
Midrange – Alpha VMS
GA 2003
What is SAS/ACCESS
 Terminology
–
–
–
–
–
SAS I/O model
SAS V9
SAS MVA
SAS Procedures
SAS Options
SAS I/O model – SAS 9
SAS Applications
Engine Supervisor
XOT
Access Engine
XOT
Oracle DBMS Client
ORACLE
DBMS
sort,reg,dmreg,
summary…
SAS/ACCESS Today
SAS 9 Features
 Threaded read
 Temporary table support
 Detailed trace information
 Metadata support
SAS Threaded Applications
 SAS V9 Threaded Applications
–
–
–
–
–
–
–
–
PROC SORT
PROC SUMMARY
PROC DMINE
PROC MEANS
PROC REG; PROC DMREG
PROC GLM
PROC ROBUSTREG
PROC LOESS; PROC DMDB
SAS/Oracle User Concerns
 Implicit vs. Explicit SQL
 Performance issues
 How SAS accommodates new Oracle
releases
 Many options to choose from
 Supporting older components
 Masking passwords
SAS Performance
 Implicit SQL
proc sql;
INSERT INTO oradata.quartly_city_iias
SELECT T.FISCAL_QUARTER_DESC, C.CUST_CITY,
COUNT(*) AS SALE_COUNT,
SUM(S.AMOUNT_SOLD) AS SALE_DOLLARS
FROM oradata.CUSTOMERS C, oradata.SALES S,
oradata.TIMES T
WHERE C.CUST_ID = S.CUST_ID
AND T.TIME_ID = S.TIME_ID
GROUP BY T.FISCAL_QUARTER_DESC, C.CUST_CITY;
quit;
SAS Performance
 Explicit SQL
proc sql;
connect to ORACLE as ORACON (user=sh password=sh1
path='demo.na.sas.com');
execute (insert /*+ APPEND */ into quartly_city_ii as
select T.FISCAL_QUARTER_DESC, C.CUST_CITY, COUNT(*) AS
SALE_COUNT,
SUM(S.AMOUNT_SOLD) AS SALE_DOLLARS
FROM CUSTOMERS C, SALES S, TIMES T
WHERE C.CUST_ID = S.CUST_ID AND T.TIME_ID = S.TIME_ID
GROUP BY T.FISCAL_QUARTER_DESC, C.CUST_CITY) by ORACON;
disconnect from ORACON;
quit;
SAS Performance
 Analyze SQL
proc sql;
create table work.friday_ny_sales
as
SELECT T.DAY_NAME ,
C.CUST_CITY ,
COUNT(*) AS SALE_COUNT,
SUM(S. AMOUNT_SOLD ) AS SALE_DOLLARS
FROM oradata.CUSTOMERS C, oradata.SALES S, oradata.TIMES T
WHERE (C.CUST_ID = S.CUST_ID ) AND (T.TIME_ID = S.TIME_ID )
AND (c.cust_state_province = 'NY')
AND (t.day_name = 'Friday
')
GROUP BY T.DAY_NAME , C.CUST_CITY;
quit;
SAS Performance
 Analyze SQL
proc sql;
connect to ORACLE as ORACON (user=sh password=sh1
path='demodb.na.sas.com');
execute ( ANALYZE TABLE CUSTOMERS COMPUTE STATISTICS
FOR TABLE FOR ALL INDEXES FOR ALL INDEXED
COLUMNS) by ORACON;
execute ( ANALYZE TABLE SALES COMPUTE STATISTICS
FOR TABLE FOR ALL INDEXES FOR ALL INDEXED
COLUMNS) by ORACON;
execute ( ANALYZE TABLE TIMES COMPUTE STATISTICS
FOR TABLE FOR ALL INDEXES FOR ALL INDEXED
COLUMNS) by ORACON;
disconnect from ORACON;
SAS Performance
 Index and Investigate
proc sql;
/* Full table scan the "function on column problem" */
create table work.customers_substr
as
select * from oradata.customers
where substr(cust_main_phone_number,1,5) = '123-4';
quit;
Execution Plan
---------------------------------------------------------0
SELECT STATEMENT Optimizer=CHOOSE (Cost=106 Card=500
Bytes=76500)
1
0
TABLE ACCESS (FULL) OF 'CUSTOMERS' (Cost=106 Card=500
Bytes=76500)
SAS Performance
 Index and Investigate
proc sql;
/* uses an index and returns the same data */
create table work.customers_like
as
select * from oradata.customers
where cust_main_phone_number like '123-4%';
quit;
Execution Plan
---------------------------------------------------------0
SELECT STATEMENT Optimizer=CHOOSE (Cost=84 Card=91
Bytes=13923)
1
0
TABLE ACCESS (BY INDEX ROWID) OF 'CUSTOMERS' (Cost=84
Card=91 Bytes=13923)
2
1
INDEX (RANGE SCAN) OF 'CUST_PHONE_NBR_IDX' (NONUNIQUE)(Cost=2 Card=91)
SAS Performance
 Oracle Execution Plan
option sastrace=’,,,d’;
SQL> SET AUTOTRACE TRACEONLY
SQL> <Oracle SQL statement here>
SAS Performance
 Temporary Table Support - create
/*--- create Oracle temporary table explicit SQL ---*/
/*--- (ORACLE SQL sent from SAS) ---*/
proc sql;
connect to oracle (user=scott password=tiger
path=oraclev10);
execute (create global temporary table oratemp
(empid number, salary number)) by
oracle;
run;
SAS Performance
 Temporary Table Support - load
libname ora oracle user=scott password=tiger
path=oraclev10 connection=shared;
/*--- load the Oracle temporary table with SAS data
proc append base=ora.oratemp set work.trans;
run ;
---*/
SAS Performance
 Temporary Table Support - use
/*--- push the join to Oracle ---*/
proc sql;
select lastname, firstname, salary from
ora.employees t1, ora.oratemp t2
where t1.empno = t2.empno;
run ;
Oracle Database 10g New
Features Applicable to SAS
Users
•
•
•
•
•
•
•
•
•
Wide Table Selects
New CBO algorithms and costing model
LOBS performance improvements
Data pump
Server Manageability
OLAP Support for Analytic Applications
Globalization and Unicode improvements
SQL improvements
.NET and 64 bit Windows support
Summary





SAS and Oracle development relationship
SAS and Oracle support – SAS and Oracle V9
SAS Intelligent Architecture
Customer Questions
Performance Considerations
Oracle/SASForums
 Do Oracle/SASUsers wish to form a SIG ?
 What sort of forums do the Users want in
future conferences ?
QUESTIONS
ANSWERS