Call now: 252-767-6166  
Oracle Training Oracle Support Development Oracle Apps

 
 Home
 E-mail Us
 Oracle Articles
New Oracle Articles


 Oracle Training
 Oracle Tips

 Oracle Forum
 Class Catalog


 Remote DBA
 Oracle Tuning
 Emergency 911
 RAC Support
 Apps Support
 Analysis
 Design
 Implementation
 Oracle Support


 SQL Tuning
 Security

 Oracle UNIX
 Oracle Linux
 Monitoring
 Remote s
upport
 Remote plans
 Remote
services
 Application Server

 Applications
 Oracle Forms
 Oracle Portal
 App Upgrades
 SQL Server
 Oracle Concepts
 Software Support

 Remote S
upport  
 Development  

 Implementation


 Consulting Staff
 Consulting Prices
 Help Wanted!

 


 Oracle Posters
 Oracle Books

 Oracle Scripts
 Ion
 Excel-DB  

Don Burleson Blog 


 

 

 


 

 

 
 

  GoldenGate for eBusiness Suite (EBS) tips

GoldenGate Tips by Donald BurlesonApril 17, 2015

Oracle GoldenGate for R12 Oracle E-Business suite

Packaged applications such as R12 Oracle E-Business suite benefits from Oracle GoldenGate 12c query offloading. By submitting reports to an star schema instance dedicated and designed for intensive reports increases the throughput of R12 Oracle E-Business suite database server by handling online transaction processing (OLTP) only.

 

For the purpose of demonstrating Oracle GoldenGate query offloading, the default R12 Oracle E-Business suite vision database is used. This section uses a cloned R12 Oracle E-Business suite instance. The server names, IP addresses and DNS server shown on tables 4-2 and 4-3.

 

Component

Description/Value

Server name

apps-srv1

TCP/IP address

192.168.1.205

Oracle home

/d01/app/oracle/product/11.2.0/dbhome_1

Oracle version

11.2

Oracle GoldenGate home

/d01/oracle/ggs

Database user

ggs_admin

Database password

oracle

Table 4-2: Source R12 Oracle E-Business suite instance

 

Component

Description/Value

Server name

apps-srv2

TCP/IP address

192.168.1.206

Oracle home

/d01/app/oracle/product/11.2.0/dbhome_1

Oracle version

11.2

Oracle GoldenGate home

/d01/oracle/ggs

Database user

ggs_admin

Database password

oracle

Table 4-3: Target R12 Oracle E-Business suite instance

Vision database for GoldenGate

Figure 4-5 shows the login page for Oracle vision R12 E-Business suite database. The reports demonstrated in this section are from the vision database instance. The same workflow applies to production R12 E-Business suite instance. Because Oracle R12 E-Business report always uses parameter files, this may prevent the use of materialized views for query re-write.

 

Login 1.jpg
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


           Figure 4-5: Oracle R12 E-Business suite login

 

This section covers the following topics.

 

§  Submitting reports requests

§  Viewing reports requests

§  View submitted reports referenced tables

§  Configure Oracle GoldenGate for real-time R12 E-Business reports

 

It's recommended to install a new home for Oracle 11g R2 to support Oracle GoldenGate 12c. There is no need to create a database as Oracle GoldenGate requires the shared library only.

 

For Oracle R12 E-Business suite virtual machine download, visit http://www.oracle-ggs.com. The downloads are subject to Oracle OTN terms and conditions.

Submit new request in GoldenGate

From the source database system, we use the Submit Request function to enter the report request. As shown in figure 4-6, select the report name from the list of reports, the remaining fields are optional.

 

Because our objective is to identify the referenced tables only, the process does not require enabling SQL trace of the report session. However; to retrieve the report session ID and serial# for further monitoring, use the performance tab by navigating to system administrator, dashboard links.

 

 

A request ID is generated for managing the report request and monitoring the report completion status.

Request status in GoldenGate

The requests generated are viewable from the request function as shown in figure 4-7. The query offloading is developed for the report: Actual/Budget Income Statement (Financial Statement Generator). Oracle GoldenGate requires the list of tables referenced by the report. We use the following functions from Request function.

Submit a New Request

Quickly submits new report request.  

Refresh Data

By clicking on Refresh Data, the list of report updated with the current status.

View Output

Display the report on the new browser window.

The View log in GoldenGate

The view log displays the report details including the report select statement, which is used to determine the referenced tables by the report.

Request 1.jpg
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


           Figure 4-7: Submitted requests

Report query

Upon successful completion of the report, select the report and click on the View Log. We then review the select statement to determine the referenced tables by the report.

 

SELECT

nvl(bal.PERIOD_TYPE, ''),

    nvl(bal.PERIOD_YEAR, -1),

    bal.PERIOD_NAME,

    nvl(bal.PERIOD_NUM, -1),

    nvl(bal.PERIOD_NUM, -1),

    bal.ACTUAL_FLAG,

    decode(cc.TEMPLATE_ID, NULL, 'N', 'Y'),

    -1,

    nvl(bal.BUDGET_VERSION_ID, -1),

    -1,

    nvl(bal.ENCUMBRANCE_TYPE_ID, -1),

    bal.CURRENCY_CODE,

    bal.LEDGER_ID,

    nvl(bal.TRANSLATED_FLAG, ''),

    nvl(bal.PERIOD_NET_DR, 0) - nvl(bal.PERIOD_NET_CR, 0),

    nvl(bal.PERIOD_NET_DR, 0),

    nvl(bal.PERIOD_NET_CR, 0),

    nvl(bal.QUARTER_TO_DATE_DR,0)-nvl(bal.QUARTER_TO_DATE_CR, 0),

    nvl(bal.QUARTER_TO_DATE_DR, 0),

    nvl(bal.QUARTER_TO_DATE_CR, 0),

    nvl(bal.BEGIN_BALANCE_DR, 0) - nvl(bal.BEGIN_BALANCE_CR, 0),

    nvl(bal.BEGIN_BALANCE_DR, 0),

    nvl(bal.BEGIN_BALANCE_CR, 0),

    nvl(bal.PROJECT_TO_DATE_DR, 0) - nvl(bal.PROJECT_TO_DATE_CR, 0),

    nvl(bal.PROJECT_TO_DATE_DR, 0),

    nvl(bal.PROJECT_TO_DATE_CR, 0),

    nvl(bal.PERIOD_NET_DR_BEQ, 0) - nvl(bal.PERIOD_NET_CR_BEQ, 0),

    nvl(bal.PERIOD_NET_DR_BEQ, 0),

    nvl(bal.PERIOD_NET_CR_BEQ, 0),

    nvl(bal.QUARTER_TO_DATE_DR_BEQ,0)-nvl(bal.QUARTER_TO_DATE_CR_BEQ, 0),

    nvl(bal.QUARTER_TO_DATE_DR_BEQ, 0),

    nvl(bal.QUARTER_TO_DATE_CR_BEQ, 0),

    nvl(bal.BEGIN_BALANCE_DR_BEQ, 0) - nvl(bal.BEGIN_BALANCE_CR_BEQ, 0),

    nvl(bal.BEGIN_BALANCE_DR_BEQ, 0),

    nvl(bal.BEGIN_BALANCE_CR_BEQ, 0),

    nvl(bal.PROJECT_TO_DATE_DR_BEQ, 0) - nvl(bal.PROJECT_TO_DATE_CR_BEQ, 0),

    nvl(bal.PROJECT_TO_DATE_DR_BEQ, 0),

    nvl(bal.PROJECT_TO_DATE_CR_BEQ, 0),

    nvl(gl.SHORT_NAME, ''),

    nvl(gl.NAME, '') DESCRIPTION,

    nvl(gl.CURRENCY_CODE, ''),

    nvl(SEGMENT3,''),

    nvl(SEGMENT1,''),

    nvl(SEGMENT2,''),

    nvl(SEGMENT4,''),

    nvl(SEGMENT5,''),

    nvl(gl.SHORT_NAME,'') LEDGER_SEGMENT

FROM

    GL_BALANCES bal,

    GL_CODE_COMBINATIONS cc,

    GL_LEDGERS gl

WHERE bal.CODE_COMBINATION_ID = cc.CODE_COMBINATION_ID

AND bal.LEDGER_ID = gl.LEDGER_ID

AND   cc.CHART_OF_ACCOUNTS_ID = 101

AND ( bal.CURRENCY_CODE in ('ANY','USD')  )

AND ( bal.LEDGER_ID = 1 )

AND   nvl(bal.TRANSLATED_FLAG, 'x')in ('Y','N','x')

AND   cc.TEMPLATE_ID is NULL

AND ( (nvl(SEGMENT3,'') >= '4001' AND  nvl(SEGMENT3,'') <= '4999')

OR (nvl(SEGMENT3,'') >= '5001' AND  nvl(SEGMENT3,'') <= '5999')

OR (nvl(SEGMENT3,'') >= '6001' AND  nvl(SEGMENT3,'') <= '6999')

OR (nvl(SEGMENT3,'') >= '7001' AND  nvl(SEGMENT3,'') <= '7299')

OR (nvl(SEGMENT3,'') >= '7301' AND  nvl(SEGMENT3,'') <= '7399')

OR (nvl(SEGMENT3,'') >= '7401' AND  nvl(SEGMENT3,'') <= '7599')

OR (nvl(SEGMENT3,'') >= '7601' AND  nvl(SEGMENT3,'') <= '7758')

OR (nvl(SEGMENT3,'') >= '7760' AND  nvl(SEGMENT3,'') <= '7799')

OR (nvl(SEGMENT3,'') >= '7801' AND  nvl(SEGMENT3,'') <= '7899')

OR (nvl(SEGMENT3,'') >= '7901' AND  nvl(SEGMENT3,'') <= '7998')

OR (nvl(SEGMENT3,'') >= '8300' AND  nvl(SEGMENT3,'') <= '8519')

)

AND (

(bal.period_name in ('Mar-00')

AND        (      (nvl(bal.period_name,'') = 'Mar-00'

AND (      (bal.CURRENCY_CODE = 'USD'

           AND    bal.ACTUAL_FLAG = 'B'

           AND    bal.BUDGET_VERSION_ID = 3625

)

 OR

 (  (bal.CURRENCY_CODE = 'USD'

           AND    bal.ACTUAL_FLAG = 'A'

)

 OR

 (  (bal.CURRENCY_CODE = 'USD'

           AND    bal.ACTUAL_FLAG = 'B'

           AND    bal.BUDGET_VERSION_ID = 3625

           AND    ((nvl(bal.PERIOD_NET_DR,0) != 0) or (nvl(bal.PERIOD_NET_CR,0) != 0)))

 OR

 (  (bal.CURRENCY_CODE = 'USD'

           AND    bal.ACTUAL_FLAG = 'A'

           AND    ((nvl(bal.PERIOD_NET_DR,0) != 0) or (nvl(bal.PERIOD_NET_CR,0) != 0)))))))))))

Referenced tables

The tables referenced by the report are listed below. Oracle GoldenGate instance configured to perform change data capture (CDC) and delivery for real-time data movement.

 

§  gl_balances

§  gl_code_combinations

§  gl_ledgers

 

These table is owned by the database schema 'GL'. Refer to chapter 2 for granting object database privileges to ggs_admin database user.

 

Manager process in GoldenGate

The manager process should be configured on the source and target Oracle R12 E-Business systems. As indicated below, the source Oracle GoldenGate instance uses port 7805 and the target Oracle GoldenGate instance uses port 7806. Refer to chapters 1 and 2 for more details regarding the preparation steps.

 

Start GGSCI and verify the status using info mgr command.

 

[oracle@apps-srv1 ~]$ cd /d01/oracle/ggs

[oracle@apps-srv1 ggs]$ ./ggsci

 

Oracle GoldenGate Command Interpreter for Oracle

Version 12.1.2.0.0 17185003 OGGCORE_12.1.2.0.0_PLATFORMS_130924.1316_FBO

Linux, x64, 64bit (optimized), Oracle 11g on Sep 25 2015 00:31:13

Operating system character set identified as UTF-8.

 

Copyright (C) 1995, 2015, Oracle and/or its affiliates. All rights reserved.

 

 

GGSCI (apps-srv1) 1> INFO MGR

 

Manager is running (IP port apps-srv1.7805, Process ID 10750).

 

Then we configure and verify status the manager process on source and target systems.

Database login for GoldenGate

To ensure that you are able to login to the database from within GGSCI command-line we use the following steps for successful database login, executing oraenv.

 

[oracle@apps-srv1 ggs]$ . oraenv

 

ORACLE_SID = [oracle] - VIS

ORACLE_HOME = [/home/oracle] - /d01/oracle/VIS/db/tech_st/11.1.0

The Oracle base has been set to /d01/oracle/VIS/db/tech_st/11.1.0

[oracle@apps-srv1 ggs]$ ./ggsci

 

Oracle GoldenGate Command Interpreter for Oracle

Version 12.1.2.0.0 17185003 OGGCORE_12.1.2.0.0_PLATFORMS_130924.1316_FBO

Linux, x64, 64bit (optimized), Oracle 11g on Sep 25 2015 00:31:13

Operating system character set identified as UTF-8.

 

Copyright (C) 1995, 2015, Oracle and/or its affiliates. All rights reserved.

 

 

GGSCI (apps-srv1) 1> dblogin userid ggs_admin, password oracle

Successfully logged into database.

 

 

We then verify successful database login from within Oracle GoldenGate for the source and target systems.

Table level supplemental logging in GoldenGate

Here we add supplemental logging to the database tables. This is to be executed on the source database only.

 

GGSCI (apps-srv1) 1> DBLOGIN USERID ggs_admin, PASSWORD oracle

Successfully logged into database.

 

GGSCI (apps-srv1) 2> ADD TRANDATA GL.GL_BALANCES

 

2013-12-29 09:06:36  WARNING OGG-06439  No unique key is defined for table GL_BALANCES. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.

 

2013-12-29 09:06:36  WARNING OGG-01387  Table GL.GL_BALANCES has no valid key columns, added unconditional supplemental log group for all table columns.

 

Logging of supplemental redo data enabled for table GL.GL_BALANCES.

TRANDATA for scheduling columns has been added on table 'GL.GL_BALANCES'.

 

GGSCI (apps-srv1) 3> ADD TRANDATA GL.GL_CODE_COMBINATIONS

 

Logging of supplemental redo data enabled for table GL.GL_CODE_COMBINATIONS.

TRANDATA for scheduling columns has been added on table 'GL.GL_CODE_COMBINATIONS'.

 

GGSCI (apps-srv1) 4> ADD TRANDATA GL.GL_LEDGERS

 

Logging of supplemental redo data enabled for table GL.GL_LEDGERS.

TRANDATA for scheduling columns has been added on table 'GL.GL_LEDGERS'.

 

Deploying the primary group in GoldenGate

The primary group manages the change data capture (CDC). The group is composed of configuration file, primary extract, the local trail and checkpoint file. The source database is expected to run on ARCHIVELOG mode, the primary extract EVIS01 uses the transaction logs to provide real-time data movement.

Configure the primary extract

The primary extract is configured to perform change data capture from the tables reference by the report. Even though, an Oracle 11g is installed for Oracle GoldenGate, the ORACLE_HOME attribute value is Oracle R12 E-Business suite database home.

 

GGSCI (apps-srv1) 4> EDIT PARAMS EVIS01

 

EXTRACT EVIS01

SETENV  (ORACLE_SID=VIS)

SETENV  (ORACLE_HOME="/d01/oracle/VIS/db/tech_st/11.1.0")

SETENV  (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

USERID  ggs_admin, password oracle

EXTTRAIL ./dirdat/sd

TABLE GL.GL_BALANCES;

TABLE GL.GL_CODE_COMBINATIONS;

TABLE GL.GL_LEDGERS;

Create the primary extract

From GGSCI command-line, we execute add extract command with the options to read from the transaction logs (TRANLOG). The add exttrail defines the local trail 'sd' for the primary extract (evis01). Consider sizing the local trail appropriately, which should equal the size of the online redo log files or 128MB, otherwise.

 

GGSCI (apps-srv1) 2> ADD EXTRACT EVIS01, TRANLOG, BEGIN now, THREADS 1

EXTRACT added.

 

GGSCI (apps-srv1) 3> ADD EXTTRAIL ./dirdat/sd, EXTRACT EVIS01, MEGABYTES 128

EXTTRAIL added.

 

Start the primary extract

From GGSCI command-line, start and verify the status for the primary extract. We then monitor the status while the application is running and primary extract is writing to the local trail continuously starting at file sd000000.

 

GGSCI (apps-srv1) 44> START EXTRACT evis01

 

Sending START request to MANAGER ...

EXTRACT EVIS01 starting

 

GGSCI (apps-srv1) 45> INFO ALL

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     RUNNING     EVIS01      00:00:00      00:00:00   

 

GGSCI (apps-srv1) 46>

Deploying the secondary group in GoldenGate

Because the primary extract (EVIS01) is creating a local trail, a secondary extract reads the local trail files and routes data across TCP/IP to the remote system. The deployment of the secondary group is optional, but highly recommended to protect the primary extract from failure.

 

For example, in the event of remote system disconnection, the primary extract continues operating without considering the network status. In such situation, the data pump extract status will soon become abended, waiting for remote system to become available. To enable the data pump extract to restart automatically, we configure the source system Oracle GoldenGate instance manager process to reattempt starting abended processes.

Configure the secondary extract

We prepare the configuration for the secondary extract named (pvis01). The data pump extract ships data to remote system indicated by the parameter rmthost and mgrport. The data pump extract uses the parameters passthru and table for shipping data without transformation.

 

GGSCI (apps-srv1) 46> EDIT PARAMS PVIS01

 

EXTRACT pvis01

USERID ggs_admin, PASSWORD oracle

PASSTHRU

RMTHOST apps-srv2, MGRPORT 7806

RMTTRAIL ./dirdat/td

TABLE GL.GL_BALANCES;

TABLE GL.GL_CODE_COMBINATIONS;

TABLE GL.GL_LEDGERS;

Create the secondary extract

The data pump extract (PVIS01) reads the local trail created by the primary extract, this is indicated by the option exttrailsource of the add extract command. The add rmttrail  command defines the remote trail created by the dynamic server collector, receiving data from the data pump extract.

 

GGSCI (apps-srv1) 48> ADD EXTRACT pvis01, EXTTRAILSOURCE ./dirdat/sd

EXTRACT added.

 

GGSCI (apps-srv1) 49> ADD RMTTRAIL ./dirdat/td, EXTRACT pvis01, MEGABYTES 128

RMTTRAIL added.

 

GGSCI (apps-srv1) 50>

Starting the secondary extract

The secondary extract (PVIS01) should remain running at all times. This guarantees the disk space is optimized by purging consumed local trail files from the source system.

 

GGSCI (apps-srv1) 51> START EXTRACT PVIS01

 

Sending START request to MANAGER ...

EXTRACT PVIS01 starting

 

GGSCI (apps-srv1) 52> INFO ALL

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     RUNNING     EVIS01      00:00:00      00:00:06   

EXTRACT     RUNNING     PVIS01      00:00:00      00:01:11   

 

 

Deploying the delivery group in GoldenGate

 

On the target Oracle R12 E-Business suite instance, we prepare the parameter file, define the replicate process and ensure it's starting successfully.

Checkpoint table in GoldenGate

The replicate process default checkpoint is a database table. We create the global parameter file globals, add the parameter checkpointtable followed by the schema and table name. The table name is subject to Oracle naming rules and convention.

 

CHECKPOINTTABLE.GGS_ADMIN.CHKPTTAB

 

GGSCI (apps-srv2) 1> DBLOGIN USERID ggs_admin, PASSWORD oracle

Successfully logged into database.

 

GGSCI (apps-srv2) 2> ADD CHECKPOINTTABLE

 

No checkpoint table specified. Using GLOBALS specification (ggs_admin.chkpttab)...

 

Successfully created checkpoint table ggs_admin.chkpttab.

 

GGSCI (apps-srv2) 3>

 

To avoid using database table for checkpoint, use the option nodbcheckpoint when defining the replicate group using the add replicat GGSCI command.

Configure delivery group for GoldenGate

The parameter file for the delivery group (rvis01) maps the list of tables referenced by the report. The target database is kept continuously synchronized using the remote trail files, providing real-time data movement with sub-second delay. For high volume transactional system, Oracle GoldenGate supports parallel processing. Refer to chapter 1 to learn more about using Oracle GoldenGate built-in @RANGE function to enable parallel processing for the delivery groups. The parameter assumetargetdefs indicates the source and target tables on the map statements have identical structure, otherwise, a source definition file is required.

 

GGSCI (apps-srv2) 3> EDIT PARAMS rvis01

 

REPLICAT rvis01

SETENV (ORACLE_SID=VIS)

SETENV (NSL_LANG=AMERICAN_AMERICA.AL32UTF8)

USERID ggs_admin, PASSWORD oracle

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/rvis01.dsc, PURGE

MAP GL.GL_BALANCES, TARGET GL.GL_BALANCES;

MAP GL.GL_CODE_COMBINATIONS, TARGET GL.GL_CODE_COMBINATIONS;

MAP GL.GL_LEDGERS, TARGET GL.GL_LEDGERS;

Create the delivery group

We use the add replicat GGSCI command to define the delivery group, which includes the delivery extract. Before creating the delivery group, ascertain the remote trail 'td' is created successfully and checkpoints are applied, i.e. the remote files size is increasing.

 

GGSCI (apps-srv2) 4> ADD REPLICAT rvis01, EXTTRAIL ./dirdat/td

REPLICAT added.

 

GGSCI (apps-srv2) 5>

Start the delivery process

The last step is to start the delivery process (rvis01). While the process checkpoint is changing, monitor the replicate process using the command, GGSCI (apps-srv2) 18>  info replciat rvis01, details.  

 

GGSCI (apps-srv2) 13> START REPLICAT RVIS01

 

Sending START request to MANAGER ...

REPLICAT RVIS01 starting

 

GGSCI (apps-srv2) 14> INFO ALL

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

REPLICAT    RUNNING     RVIS01      00:00:00      00:01:46   

 

 

The target Oracle GoldenGate instance manager process should be configured to handle remote trail files after being consumed and applied to the target database by the replicate process.

 

Run a GoldenGate report against report E-Business Suite instance

 

Now, Oracle GoldenGate is performing real-time change data capture and delivery from source to the target R12 E-Business suite database. Running reports on this instance leaves the source database dedicated to online transactions only.

Request 1.jpg
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Applying advanced database compression to referenced tables enhances report runtime. The list of referenced tables by the report are altered to become compressed as illustrated below.

 

SQL> ALTER TABLE gl.gl_balances COMPRESS;

 

Table altered.

 

SQL> ALTER TABLE gl.gl_code_combinations COMPRESS;

 

Table altered.

 

SQL> ALTER TABLE gl.gl_ledgers COMPRESS;

 

Table altered.

 

 

However; creating database materialized views to enable query re-write may not be fully effective, this is because Oracle R12 E-Business suite reports rely on a parameter form to supply runtime values which are embedded on the report SQL SELECT statement. This is a form of dynamic SQL determined at runtime.

 
   
Oracle GoldenGate 12c

The above is an excerpt from the upcoming 12c book Oracle GoldenGate 12c: A Hands-on Guide to Data Replication & Integration using Oracle & SQL Server.
 


Hit Counter

 

Burleson is the American Team

Note: This Oracle documentation was created as a support and Oracle training reference for use by our DBA performance tuning consulting professionals.  Feel free to ask questions on our Oracle forum.

Verify experience! Anyone considering using the services of an Oracle support expert should independently investigate their credentials and experience, and not rely on advertisements and self-proclaimed expertise. All legitimate Oracle experts publish their Oracle qualifications.

Errata?  Oracle technology is changing and we strive to update our BC Oracle support information.  If you find an error or have a suggestion for improving our content, we would appreciate your feedback.  Just  e-mail:  

and include the URL for the page.


                    









Burleson Consulting

The Oracle of Database Support

Oracle Performance Tuning

Remote DBA Services


 

Copyright © 1996 -  2020

All rights reserved by Burleson

Oracle ® is the registered trademark of Oracle Corporation.

 

 

��  
 
 
Oracle Training at Sea
 
 
 
 
oracle dba poster
 

 
Follow us on Twitter 
 
Oracle performance tuning software 
 
Oracle Linux poster