Top Banner
<Insert Picture Here> 1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Entwicklung von hochperformanten Anwendungen mit Database Gateways Thomas Niewel Leitender Systemberater
54

Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Aug 21, 2018

Download

Documents

doanthuan
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

<Insert Picture Here>

1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Entwicklung von hochperformanten Anwendungen mit Database Gateways

Thomas Niewel

Leitender Systemberater

Page 2: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Funktionsweise von Database Gateways –

Unterstützung verschiedenster SQL Dialekte

Agenda

Performance Aspekte

Architektur

2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Zugriff auf Fremdsysteme am Beispiel DB2 for

z/OS (Database Gateway for DRDA)Optimierung von Load Prozessen

Weiteres

Page 3: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Database Gateways• Informationen

• http://www.oracle.com/technetwork/database/gateways/index.html

• Empfehlung: Version >= 11.2.03

Non Oracle

Client

Database

Architektur

3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Non OracleDatabase

Database

GatewayInstallation auf dedizierten Server möglich

Oracle

Page 4: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Oracle Database Gateways

• Oracle Open Systems Gateways

• Database Gateway for ODBC

• Database Gateway for Sybase

• Database Gateway for SQL Server

4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Database Gateway for Teradata

• Database Gateway for Informix

Page 5: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

• Oracle Mainframe Gateways

• Database Gateway for APPC

• Procedural Gateway

• Database Gateway for Websphere MQ

Oracle Database Gateways

5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Procedural Gateway

• Database Gateway for DRDA

• “Transparent” Gateway

Page 6: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

DG4ODBC “Spezielle”

End to end solution No Yes

Distributed transactions No Yes

Database Gateway for ODBC vs. “Spezielle” Gateways

6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Distributed transactions No Yes

Stored procedures No Yes

Additional software Yes No

Enhanced DD translation No Yes

Page 7: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Database Gateway for DRDA

Client Server

DB2 UDBfor LUW

Linux/Unix/Windows

Architektur

7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

DB2 UDB for z/OS

DB2 for iSeries

Client Server

DRDADG4DRDA

Oracle

Page 8: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Oracle Database Gateways - Hochverfügbarkeit

Gateway

System 1

DG4DRDA

Instance 1

Listener 1DB2

Oracle

8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Listener 1

Gateway

System 2

DG4DRDA-

Instance 2

Listener 2

DB2

DB21 =

(DESCRIPTION =

(address_LIST=

(LOAD_BANANCE=ON)

(FAILOVER=ON)

(ADDRESS = (PROTOCOL = TCP)(PORT=1860)(HOST=demo1.de.oracle.com))

(ADDRESS = (PROTOCOL = TCP)(PORT=1861)(HOST=demo2.de.oracle.com)))

(CONNECT_DATA =

(SID =GWI1)

)

(HS=ok)

Page 9: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Oracle Database Gateways in einer RAC Umgebung

NODE 1

Oracle

RAC

Instance 1

Gateway

System 1

DG4DRDA

Instance 1

Listener 1

DB2

DB21 =

(DESCRIPTION =

(address_LIST=

(LOAD_BANANCE=ON)

9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Instance 1

Gateway

System 2

DG4DRDA-

Instance 2

Listener 2

DB2(LOAD_BANANCE=ON)

(FAILOVER=ON)

(ADDRESS = (PROTOCOL =

(ADDRESS = (PROTOCOL =

(CONNECT_DATA =

(SID =GWI1)

)

(HS=ok

NODE 2

Oracle

RAC

Instance 2

Page 10: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Funktionsweise von Database Gateways –

Unterstützung verschiedenster SQL Dialekte

Agenda

Performance Aspekte

Architektur

10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Zugriff auf Fremdsysteme am Beispiel DB2 for

z/OS (Database Gateway for DRDA)Optimierung von Load Prozessen

Weiteres

Page 11: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Wie arbeiten Oracle Database Gateways?Compatible Functions

Oracle DB2

select max(Salary) from

tab1@DB2 where

Step 1 Step 2

select max(salary) from

11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

tab1@DB2 where

Name= ‘MAIER‘

Step 3

select max(salary) from

tab1 where

Name= ‘MAIER‘

Page 12: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Wie arbeiten Oracle Database Gateways? Translated Functions

Oracle DB2

select name,age from

tab1@DB2 where

Step 1 Step 2select name,age from

tab1 where

12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

tab1@DB2 where

nvl(age,18)= 18

Step 3

tab1 where

value(age,18)= 18

Page 13: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Wie arbeiten Oracle Database Gateways? Compensated Functions

Oracle DB2

select * from tab@DB2

where

select * from tab

Step 1Step 2

13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

where

substr(ename,-5,1) ='S'

select * from tab

where

substr(ename,-5,1) ='S'

Step 3

Step 4

Page 14: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Funktionsweise von Database Gateways –

Unterstützung verschiedenster SQL Dialekte

Agenda

Performance Aspekte

Architektur

14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Zugriff auf Fremdsysteme am Beispiel DB2 for

z/OS (Database Gateway for DRDA)Optimierung von Load Prozessen

Weiteres

Page 15: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Performance Aspekte

• Compatible Functions

– Gute Performance

• Translated Functions

– Gute Performance

15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Compensated Functions

– Performance hängt von dem übertragenen Datenvolumen ab

Page 16: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Performance Aspekte

• Native Semantics

– HS_FDS_CAPABILITY={FUNCTION/{ON|OFF}}

• ON=Funktionsunterschiede werden nicht mehr kompensiert

– HS_FDS_CAPABILITY=SUBSTR/OFF (Default)

• select * from tniewel.emp1@ds3l where substr(ename,-3,1)='A‘

16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• select * from tniewel.emp1@ds3l where substr(ename,-3,1)='A‘

– Funktion wird auf Oracle Seite ausgeführt

– HS_FDS_CAPABILITY=SUBSTR/ON

• select * from tniewel.emp1@ds3l where substr(ename,-3,1)='A‘

– Funktion wird auf DB2 Seite ausgeführt– ORA-28500: connection from ORACLE to a non-Oracle system returned this message:[Oracle][ODBC

DB2 Wire Protocol driver][UDB DB2 for OS/390 and z/OS]SECOND OR THIRD ARGUMENT OF SUBSTR FUNCTION OUT OF RANGE. {HY000,NativeErr =-138}

Page 17: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Performance Aspekte

17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Page 18: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Performance Aspekte

• Debugging

– SQL_TRACE, tkprof

– Gateway Trace

18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

– Gateway Trace

– Explain Plan

• Explain plan for select ....table@gateway

• SELECT * FROM Table

(DBMS_XPLAN.DISPLAY('plan_table', null, 'ALL'));

Page 19: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Compensated Functions - Beispiel

explain plan for

select b.ename, b.empno from tniewel.emp@epg1 a,

scott.emp@epg1 b where a.empno=b.empno and

soundex(a.ename)='MAIER'

19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

soundex(a.ename)='MAIER'

/

Page 20: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Compensated Functions - Beispiel-----------------------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost | TQ |IN-OUT| PQ Distrib |

-----------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 1 | 40 | 1 | | | |

|* 1 | HASH JOIN | | 1 | 40 | 1 | | | |

|* 2 | FILTER | | | | | | | |

| 3 | REMOTE | | | | |E.,OM |SERIAL| |

| 4 | REMOTE | | 1 | 20 | |E.,OM |SERIAL| |

-----------------------------------------------------------------------------------------------

20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

-----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - access("A2"."EMPNO"="A1"."EMPNO")

2 - filter(SOUNDEX("A2"."ENAME")='MAIER')

Slave SQL Information (identified by operation id):

---------------------------------------------------

3 - SELECT "EMPNO", "ENAME" FROM "TNIEWEL"."EMP"

4 - SELECT "EMPNO", "ENAME" FROM "SCOTT"."EMP"

Note: cpu costing is off

Page 21: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Compatible Functions - Beispiel

explain plan for

select b.ename, b.empno from tniewel.emp@epg1 a,

scott.emp@epg1 b where a.empno=b.empno and

a.ename='MAIER'

21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

a.ename='MAIER'

/

Page 22: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Compatible Functions - Beispiel

-----------------------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost | TQ |IN-OUT| PQ Distrib |

-----------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | | | | | | |

| 1 | REMOTE | | | | |E.,OM |SERIAL| |

-----------------------------------------------------------------------------------------------

22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Slave SQL Information (identified by operation id):

---------------------------------------------------

1 - SELECT A1."ENAME", A1."EMPNO" FROM "TNIEWEL"."EMP" A2, "SCOTT"."EMP" A1 WHERE A2."EMP

NO"=A1."EMPNO" AND A2."ENAME"='MAIER'

Page 23: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Distributed Join - Beispiel

explain plan for

select a.ename from

tniewel.emp a,

tniewel.emp@epg1 b,

23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

tniewel.emp@epg1 b,

scott.emp@epg1 c

where

a.ename=b.ename and b.ename=c.ename;

Page 24: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

------------------------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost | TQ |IN-OUT| PQ Distrib |

------------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 1 | 21 | 3 | | | |

|* 1 | HASH JOIN | | 1 | 21 | 3 | | | |

| 2 | MERGE JOIN CARTESIAN| | 1 | 14 | 2 | | | |

| 3 | REMOTE | | 1 | 7 | |E.,OM |SERIAL| |

| 4 | BUFFER SORT | | 82 | 574 | 2 | | | |

| 5 | TABLE ACCESS FULL | EMP | 82 | 574 | 2 | | | |

Distributed Join – nicht optimiert

24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

| 5 | TABLE ACCESS FULL | EMP | 82 | 574 | 2 | | | |

| 6 | REMOTE | | 1 | 7 | |E.,OM |SERIAL| |

------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - access("A"."ENAME"="B"."ENAME" AND "B"."ENAME"="C"."ENAME")

Slave SQL Information (identified by operation id):

---------------------------------------------------

3 - SELECT "ENAME" FROM "SCOTT"."EMP"

6 - SELECT "ENAME" FROM "TNIEWEL"."EMP"

Page 25: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Distributed Join – optimiert

explain plan for

select a.ename from

tniewel.emp a

where a.ename = (select b.ename

from

25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

from

tniewel.emp@epg1 b,

scott.emp@epg1 c

where

b.ename=c.ename);

Page 26: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Distributed Join – optimiert

-----------------------------------------------------------------------------------------------

| Id | Operation | Name | Rows | Bytes | Cost | TQ |IN-OUT| PQ Distrib |

-----------------------------------------------------------------------------------------------

| 0 | SELECT STATEMENT | | 1 | 7 | 2 | | | |

|* 1 | TABLE ACCESS FULL | EMP | 1 | 7 | 2 | | | |

| 2 | REMOTE | | | | |E.,OM |SERIAL| |

-----------------------------------------------------------------------------------------------

26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter("A"."ENAME"= (SELECT "A2"."ENAME" FROM "SCOTT"."EMP"@EPG1.DE.ORACLE.COM "A1"))

Slave SQL Information (identified by operation id):

---------------------------------------------------

2 - SELECT A2."ENAME" FROM "TNIEWEL"."EMP" A2, "SCOTT"."EMP" A1 WHERE A2."ENAME"=A1."ENAM

E"

Note: cpu costing is off

22 Zeilen ausgewõhlt.

Page 27: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Distributed Joins - Optimierung

• Anlegen von Views

• DB2: View Merge vs. View Materialization

27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• DB2: View Merge vs. View Materialization

• Explain der View

• Filter

Page 28: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Optimierung von Bulk Operationen

array fetch HS_RPC_FETCH_SIZE HS_RPC_FETCH_ROWS

28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Oracle Server Database Gateway Foreign data store

Empfehlung: Nutzung der default SettingsODBC Treiber Abhängigkeiten(DG4ODBC)

Page 29: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Funktionsweise von Database Gateways –

Unterstützung verschiedenster SQL Dialekte

Agenda

Performance Aspekte

Architektur

29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Zugriff auf Fremdsysteme am Beispiel DB2 for

z/OS (Database Gateway for DRDA)Optimierung von Load Prozessen

Weiteres

Page 30: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

• Berücksichtigung der Objekt Statistiken

• HS_FDS_SUPPORT_STATISTICS=TRUE

• Table Cardinality

• Key Column Cardinality

• Sind die Objekt Statistiken korrekt ?

FDS Katalog Statistiken

30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Sind die Objekt Statistiken korrekt ?

• Auswirkungen

• Join Reihenfolge

• Transfer der „Remote Tables“

• Empfehlung bei Migrationen von Gateways < 11.2

• HS_FDS_SUPPORT_STATISTICS=FALSE

Page 31: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Locking Modell

• Beispiel DB2 (Database Gateway for DRDA)

• HS_FDS_TRANSCTION_ISOLATION=READ_UNCOMMITTED

31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• HS_FDS_TRANSCTION_ISOLATION=READ_COMMITTED

• Lock Escalation

Page 32: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Read

StabilityCursor

Stability

share

Repeatable

Read

Uncommitted

Read

DB2 Locking Modell

32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Locked Locked

share

locks LockedLocked

DB2 z/OS Version 10 only supports INSERT and DELETE operations of currently committed.

Page 33: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Problem: Writers block Readers

• Timeouts

• Abbrüche mit SQLCODE – 911

• Lösung

DB2 Locking Modell

33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Lösung

• Commit Frequenly

Page 34: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Transaction Model

• HS_TRANSACTION_MODEL

• COMMIT_CONFIRM

• READ_ONLY

• READ_ONLY_AUTOCOMMIT

34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• SINGLE_SITE

• SINGLE_SITE_AUTOCOMMIT

• Kein Rollback möglich

Page 35: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Zusammenfassung

• Berücksichtigung der Funktionsweise der Nicht-

Oracle Datenbanksysteme

– Nutzung von Funktionen, die nicht „compensated“ sind

– Durchführung von häufigen Commits (auch bei Read Only Operationen)

35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Operationen)

– Predicates (Beispiel DB2)

• Indexable

– Index kann genutzt werden

• Stage 2

– Predicates werden durch die ressourcenintensive DB2

Komponente RDS(Relational Data System) ausgewertet

Page 36: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Gateway Passthrough – Beispiel 1DECLARE

CRS binary_integer; RET binary_integer; VAL VARCHAR2(10);AGE Number

BEGIN

CRS:=DBMS_HS_PASSTHROUGH.OPEN_CURSOR@gtwlink;

DBMS_HS_PASSTHROUGH.PARSE@gtwlink(CRS,’SELECT NAME, AGE FROM PT_TABLE’);

BEGIN

RET:=0;

WHILE (TRUE)

LOOP

RET:=DBMS_HS_PASSTHROUGH.FETCH_ROW@gtwlink (CRS,FALSE);

DBMS_HS_PASSTHROUGH.GET_VALUES@gtwlink (CRS,1,VAL);

36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

DBMS_HS_PASSTHROUGH.GET_VALUES@gtwlink (CRS,1,VAL);

DBMS_HS_PASSTHROUGH.GET_VALUES@gtwlink (CRS,2,AGE);

INSERT INTO PT_TABLE_LOCAL VALUES (VAL);

END LOOP;

EXCEPTION

WHEN NO_DATA_FOUND THEN

BEGIN

DBMS_OUTPUT.PUT_LINE(’END OF FETCH’);

DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@gtwlink(CRS) ;

END;

END;

Page 37: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Gateway Passthrough – Beispiel 2

BEGIN

c := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@DS3L;

DBMS_HS_PASSTHROUGH.PARSE@DS3L(c, 'set current degree = ''ANY''');

ret := DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@DS3L(c);

37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

dbms_output.put_line(ret ||' passthrough output');

DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@DS3L(c);

END;

Page 38: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Funktionsweise von Database Gateways –

Unterstützung verschiedenster SQL Dialekte

Agenda

Performance Aspekte

Architektur

38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Zugriff auf Fremdsysteme am Beispiel DB2 for

z/OS (Database Gateway for DRDA)Optimierung von Load Prozessen

Weiteres

Page 39: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Optimierung von Load Prozessen

• Create Table

• Insert

• Copy

39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Copy

• Materialized Views

Page 40: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

• Beispiel

• CREATE TABLE EMP AS SELECT * FROM SCOTT.EMP@gateway;

• INSERT INTO EMP SELECT * FROM SCOTT.EMP@gateway;

Optimierung von Load Prozessen

40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• INSERT INTO EMP SELECT * FROM SCOTT.EMP@gateway;

• COPY FROM SCOTT/TIGER@gateway INSERT EMP

USING SELECT * FROM SCOTT.EMP@gateway;

Page 41: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Optimierung von Load Prozessen

• Beispiel: Transfer von DB2 Daten in die Oracle Welt

• Materialized Views

CREATE MATERIALIZED VIEW empdb2

REFRESH COMPLETE NEXT SYSDATE + 1

41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

REFRESH COMPLETE NEXT SYSDATE + 1

WITH ROWID

AS

SELECT * FROM scott.emp@gateway

WHERE deptno=20;

Page 42: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Optimierung von Load Prozessen

• Parallelisierung

– Oracle Datenbank < 11g

• Erstellen von DB2-Views zur Verarbeitung von Teilmengen

der Daten

42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Ausführen von n Gateway Sessions mit parallelen Zugriff auf die

erstellten Views

– Insert into localtable Select * from

remote_fds_view@gateway

Page 43: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Optimierung von Load Prozessen

• Parallelisierung mit der Oracle Datenbank >= 11g

– Nutzung von dbms_hs_parallel

• LOAD_TABLEParallel load der „remote tables“

• CREATE_TABLE_TEMPLATEErstellen „local Table“ auf Basis einer „remote Table“

43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Erstellen „local Table“ auf Basis einer „remote Table“

• CREATE_OR_REPLACE_VIEWErstellen einer „read only View“ zum parallelisierten Lesen der

„remote Daten“

• DROP_VIEWLöschen von Objekten, die mit

CREATE_OR_REPLACE_VIEW erstellt wurden

Page 44: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Optimierung von Load Prozessen

Declare

remtab varchar2(36);

dblink varchar2(36);

oratab varchar2(36);

rowcnt integer;

begin

• Beispiel

44 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

begin

remtab:='tniewel.emp';

oratab:='tniewel.emp1';

dblink:='D71E';

/* Truncate=False */

dbms_hs_parallel.load_table(remtab,dblink,oratab,False,4,rowcnt);

dbms_output.put_line(' # of rows loaded ' ||rowcnt);

end;

Page 45: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Optimierung von Load Prozessen

Voraussetzung für eine Parallelisierung ist eine der

folgenden Eigenschaften

• Die „remote Table“ ist „range partitioned“

45 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Histogramm für eine numerische Spalte ist vorhanden

• Index oder Primärschlüssel auf einer numerischen

Spalte ist vorhanden

Page 46: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Funktionsweise von Database Gateways –

Unterstützung verschiedenster SQL Dialekte

Agenda

Performance Aspekte

Architektur

46 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Zugriff auf Fremdsysteme am Beispiel DB2 for

z/OS (Database Gateway for DRDA)Optimierung von Load Prozessen

Weiteres

Page 47: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Security

• Passwörter in den initSID.ora Dateien

– Verschlüsselung durch dg4pwd (10g: tg4pwd) utility

– Verschlüsseltes Password ist in der Datei „initSID.pwd“

gespeichert

47 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Zugriff zu „non Oracle“ Tabellen über „Database Links“

– Userid/Password im Database Link

– Keine Userid/Password im Database Link

• Oracle Userid und Password werden genutzt

Page 48: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Dictionary Viewsset linesize 132

col username format a15

col machine format a15

col db_link format a20

col program format a15

select a.username,

c.machine,

c.program,

b.db_link,

c.process

from

48 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

from

v$session a,

v$hs_session b,

v$hs_agent c

where

a.sid=b.sid and

c.agent_id=b.agent_id;

USERNAME MACHINE PROGRAM DB_LINK PROCESS

--------------- --------------- --------------- -------------------- --------

TNIEWEL sccloud026.de.o dg4db2DS3L@sccl DS3L.DE.ORACLE.COM 30888

racle.com oud026.de.oracl

e.com

Page 49: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Gateway Trace

• Aktivierung durch Gateway init Parameter

• HS_FDS_TRACE_LEVEL

• OFF, ON, DEBUG

HOSGIP returned value of "TRUE" for HS_FDS_QUOTE_IDENTIFIER

SQL text from hgopars, id=1, len=123 ...

49 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

SQL text from hgopars, id=1, len=123 ...

00: 53454C45 43542041 312E2245 4D504E4F [SELECT A1."EMPNO]

10: 222C2041 312E2245 4E414D45 222C2041 [", A1."ENAME", A]

20: 312E224A 4F42222C 2041312E 224D4752 [1."JOB", A1."MGR]

30: 222C2041 312E2248 49524544 41544522 [", A1."HIREDATE"]

40: 2C204131 2E225341 4C222C20 41312E22 [, A1."SAL", A1."]

50: 434F4D4D 222C2041 312E2244 4550544E [COMM", A1."DEPTN]

60: 4F222046 524F4D20 22544E49 4557454C [O" FROM "TNIEWEL]

70: 222E2245 4D503122 204131 ["."EMP1" A1]

Deferred open until first fetch.

Page 50: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Timeouts - DB2 for z/OS

• DB2 IDLE THREAD TIMEOUT (IDTHTOIN)

• Bewirkt den cancel von Idle Threads im DB2

• Ist auch für DG4DRDA Gateway Sessions aktiv

• Sessions werden mit dem Fehler ABEND=04E FOR REASON=00D3003B beendet

50 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

REASON=00D3003B beendet

• Auf Oracle Seite muss ein Rollback durchgeführtwerden

Page 51: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Timeouts - DB2 for z/OS

• DG4DRDA init Parameter HS_IDLE_TIMEOUT

• Bewirkt den cancel von Oracle Prozessen / DB2 Threads

• Muss < IDTHTOIN sein

• Sessions werden mit dem Fehler ORA-28511 beendet

• Beim Erneuten Ausführen des SQL Befehls wird die

51 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

• Beim Erneuten Ausführen des SQL Befehls wird die Verbindung zum DB2 wieder aufgebaut. Ein Rollback istnicht notwendig.

• Timeouts können durch einen Close Database Link vermieden werden

Page 52: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

Q&A

52 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Q&A

Page 53: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

53 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Page 54: Entwicklung von hochperformanten Anwendungen mit … · Funktionsweise von Database Gateways – Unterstützung verschiedenster SQL Dialekte. Performance Aspekte • Compatible Functions

54 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.