Swingbench is a free load generator (and benchmarks) designed by Dominic Giles to stress test an Oracle database (10g,11g,12c).
1. Download Swingbench
No Format |
---|
su - oracle
mkdir software
cd software
wget http://dominicgiles.com/swingbench/swingbench25909.zip |
2. Unzip the software
...
Swingbench is a free load generator (and benchmarks) designed by Dominic Giles to stress test an Oracle database (10g,11g,12c).
In this example, we will use charbench which is the command line interface to Swingbench.
1. Download Swingbench.
No Format |
---|
su - oracle |
No Format |
---|
mkdir software |
No Format |
---|
cd software |
No Format |
---|
wget http://dominicgiles.com/swingbench/swingbench25932.zip |
Note | ||
---|---|---|
If there is no Internet connection and the Swingbench software has been downloaded to the host (laptop), then the following command can be used to copy the software from the host machine to the first VM (dbv01):
This uses port forwarding which was setup when Virtual Box was configured (02 - Set up NAT network in Virtual Box). 192.168.1.197 is the IP address of the host machine (laptop). Use ifconfig or ipconfig to identify what the local IP address is of your host machine. |
2. Unzip the software.
No Format |
---|
unzip swingbench25932.zip Archive: swingbench25932.zip creating: swingbench/ inflating: swingbench/.DS_Store creating: swingbench/bin/ inflating: swingbench/bin/swingbenchbmcompare inflating: swingbench/bin/swingconfigccconfig.xml creatinginflating: swingbench/configsbin/ccwizard inflating: swingbench/configsbin/ccconfigccwizard.xml inflating: swingbench/configsbin/oeconfig.xmlcharbench inflating: swingbench/configsbin/shconfig.xmlclusteroverview inflating: swingbench/configsbin/spconfigclusteroverview.xml inflating: swingbench/configs/stresstest.xmlbin/coordinator inflatingcreating: swingbench/configs/swingconfigv1.xmlbin/data/ inflating: swingbench/bin/configsdata/swingconfigv21000mostpopularadjectives.xmltxt creatinginflating: swingbench/launcher/bin/data/1000mostpopularwords.txt inflating: swingbench/bin/launcherdata/commons-launcher100mostpopularwords.jartxt inflating: swingbench/bin/launcherdata/launchercatalogue.propertiestxt inflating: swingbench/bin/launcherdata/launchercounties.xmltxt inflating: swingbench/bin/launcherdata/LauncherBootstrapcountries.classtxt creatingextracting: swingbench/lib/bin/data/domains.txt creating inflating: swingbench/libbin/launcherdata/emails.txt inflating: swingbench/libbin/launcherdata/ant-launcherlowerfirstnames.jartxt inflating: swingbench/libbin/launcherdata/antlowerlastnames.jartxt inflating: swingbench/libbin/launcherdata/xercesImplnames.jartxt inflating: swingbench/libbin/launcherdata/xml-apisnls.jartxt inflating: swingbench/libbin/data/ojdbc6productids.jartxt inflating: swingbench/bin/libdata/onstitles.jartxt inflating: swingbench/libbin/data/simplefantowns.jartxt inflating: swingbench/libbin/swingbench.jarminibench inflating: swingbench/libbin/ucp.jaroewizard creatinginflating: swingbench/logbin/oewizard.xml inflating: swingbench/bin/README.txtshwizard creatinginflating: swingbench/sourcebin/shwizard.xml inflating: swingbench/sourcebin/antbuildswingbench inflating: swingbench/sourcebin/buildswingconfig.xml creating: swingbench/source/com/configs/ inflating: swingbench/configs/ccconfig.xml creatinginflating: swingbench/source/com/dom/configs/oeconfig.xml creatinginflating: swingbench/source/com/dom/benchmarking/configs/shconfig.xml creatinginflating: swingbench/source/com/dom/benchmarking/swingbench/configs/spconfig.xml creatinginflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/configs/stresstest.xml inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/PeriodToPeriodComparison.javaconfigs/swingconfigv1.xml inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/ProductSalesRollupCube.javaconfigs/swingconfigv2.xml inflatingcreating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesByCountryForGivenYear.java launcher/ inflating: swingbench/launcher/commons-launcher.jar inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesByQuarterCountry.java inflating: swingbench/launcher/launcher.properties inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesCubeByMonth.javalauncher/launcher.xml inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesHistory.javalauncher/LauncherBootstrap.class inflatingcreating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesMovingAverage.java lib/ creating: swingbench/lib/launcher/ inflating: swingbench/sourcelib/com/dom/benchmarking/swingbench/dsstransactions/SalesRollupByMonth.javalauncher/ant-launcher.jar inflating: swingbench/sourcelib/com/dom/benchmarking/swingbench/dsstransactions/SimpleLookUp.javalauncher/ant.jar inflating: swingbench/sourcelib/com/dom/benchmarking/swingbench/dsstransactions/TopSalesWithinQuarter.javalauncher/xercesImpl.jar creatinginflating: swingbench/sourcelib/com/dom/benchmarking/swingbench/plsqltransactions/launcher/xml-apis.jar inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/BrowseAndUpdateOrders.javalib/ojdbc6.jar inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/BrowseProducts.javalib/ons.jar inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/NewCustomerProcess.javalib/simplefan.jar inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/NewCustomerProcessV2.javalib/swingbench.jar inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/NewOrderProcess.javalib/ucp.jar inflatingcreating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/OrderEntryProcess.javalog/ inflating: swingbench/README.txt inflatingcreating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/ProcessOrders.java inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/SalesRepsOrdersQuery.java/antbuild inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/UpdateCustomerDetailsV2.javabuild.xml inflatingcreating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/WarehouseActivityQuery.java inflatingcreating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/WarehouseOrdersQuery.java creating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/ inflatingcreating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/newStoredProcedure.java inflatingcreating: swingbench/source/com/dom/benchmarking/swingbench/storedproceduresdsstransactions/StoredProcedure1.java inflating: swingbench/source/com/dom/benchmarking/swingbench/storedproceduresdsstransactions/StoredProcedure2PeriodToPeriodComparison.java inflating: swingbench/source/com/dom/benchmarking/swingbench/storedproceduresdsstransactions/StoredProcedure3ProductSalesRollupCube.java inflating: swingbench/source/com/dom/benchmarking/swingbench/storedproceduresdsstransactions/StoredProcedure4SalesByCountryForGivenYear.java inflating: swingbench/source/com/dom/benchmarking/swingbench/storedproceduresdsstransactions/StoredProcedure5SalesByQuarterCountry.java inflating: swingbench/source/com/dom/benchmarking/swingbench/storedproceduresdsstransactions/StoredProcedure6SalesCubeByMonth.java creatinginflating: swingbench/source/com/dom/benchmarking/swingbench/stresstestdsstransactions/SalesHistory.java inflating: swingbench/source/com/dom/benchmarking/swingbench/stresstestdsstransactions/StressTestSalesMovingAverage.java inflating: swingbench/source/com/dom/benchmarking/swingbench/stresstestdsstransactions/StressTestDeleteSalesRollupByMonth.java inflating: swingbench/source/com/dom/benchmarking/swingbench/stresstestdsstransactions/StressTestInsertSimpleLookUp.java inflating: swingbench/source/com/dom/benchmarking/swingbench/stresstestdsstransactions/StressTestSelectTopSalesWithinQuarter.java inflatingcreating: swingbench/source/com/dom/benchmarking/swingbench/stresstestplsqltransactions/StressTestUpdate.java creatinginflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/BrowseAndUpdateOrders.java inflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/BrowseAndUpdateOrdersBrowseProducts.java inflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/BrowseProductsNewCustomerProcess.java inflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/NewCustomerProcessNewCustomerProcessV2.java inflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/NewOrderProcess.java inflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/OrderEntryProcess.java inflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/ProcessOrders.java inflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/SalesRepsOrdersQuery.java inflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/WarehouseActivityQueryUpdateCustomerDetailsV2.java inflating: swingbench/source/com/dom/benchmarking/swingbench/transactionsplsqltransactions/WarehouseOrdersQueryWarehouseActivityQuery.java creatinginflating: swingbench/source/com/mike//dom/benchmarking/swingbench/plsqltransactions/WarehouseOrdersQuery.java creating: swingbench/source/com/mike/CallingCircledom/benchmarking/swingbench/storedprocedures/ inflating: swingbench/source/com/mike/CallingCircle/CallingCircleLineIdentifier.java inflating: swingbench/source/com/mike/CallingCircle/CallingCircleProcessdom/benchmarking/swingbench/storedprocedures/newStoredProcedure.java inflating: swingbench/source/com/mike/CallingCircle/CallingLineIdentifierdom/benchmarking/swingbench/storedprocedures/StoredProcedure1.java inflating: swingbench/source/com/mike/CallingCircle/CustomerAccountdom/benchmarking/swingbench/storedprocedures/StoredProcedure2.java inflating: swingbench/source/com/dom/benchmarking/mikeswingbench/CallingCirclestoredprocedures/CustomerCallingLineIdentifierStoredProcedure3.java inflating: swingbench/source/com/mike/CallingCircle/NewCallingCircleProcessdom/benchmarking/swingbench/storedprocedures/StoredProcedure4.java inflating: swingbench/source/com/dom/benchmarking/mikeswingbench/CallingCirclestoredprocedures/RetrieveHistoryProcessStoredProcedure5.java inflating: swingbench/source/com/mike/CallingCircle/UpdateCallingCircleProcessdom/benchmarking/swingbench/storedprocedures/StoredProcedure6.java creating: swingbench/sqlsource/com/dom/benchmarking/swingbench/stresstest/ inflating: swingbench/source/com/dom/benchmarking/swingbench/sqlstresstest/analyzeccStressTest.sqljava inflating: swingbench/source/com/dom/benchmarking/swingbench/sqlstresstest/CreAppPkgBdyStressTestDelete.sqljava inflating: swingbench/sql/CreAppPkgHdr.sql inflating: swingbench/sql/CreAppPrc.sql/source/com/dom/benchmarking/swingbench/stresstest/StressTestInsert.java inflating: swingbench/sql/CreData1.sqlsource/com/dom/benchmarking/swingbench/stresstest/StressTestSelect.java inflating: swingbench/sql/CreData2.sqlsource/com/dom/benchmarking/swingbench/stresstest/StressTestUpdate.java inflatingcreating: swingbench/sql/CreData3.sqlsource/com/dom/benchmarking/swingbench/transactions/ inflating: swingbench/sql/CreDataPkgBdy.sqlsource/com/dom/benchmarking/swingbench/transactions/BrowseAndUpdateOrders.java inflating: swingbench/sql/CreDataPkgHdr.sqlsource/com/dom/benchmarking/swingbench/transactions/BrowseProducts.java inflating: swingbench/sql/CreInds.sql extracting: swingbench/sql/CreInds2.sqlsource/com/dom/benchmarking/swingbench/transactions/NewCustomerProcess.java inflating: swingbench/source/com/dom/benchmarking/swingbench/sqltransactions/CreMiscPkgBdyNewOrderProcess.sqljava inflating: swingbench/source/com/dom/benchmarking/swingbench/sqltransactions/CreMiscPkgHdrOrderEntryProcess.sqljava inflating: swingbench/source/com/dom/benchmarking/swingbench/sqltransactions/CreTabsProcessOrders.sqljava inflating: swingbench/source/com/dom/benchmarking/swingbench/sqltransactions/CreTspcSalesRepsOrdersQuery.sqljava inflating: swingbench/sql/CreUser.sql/source/com/dom/benchmarking/swingbench/transactions/WarehouseActivityQuery.java inflating: swingbench/sql/DropTabs.sqlsource/com/dom/benchmarking/swingbench/transactions/WarehouseOrdersQuery.java inflatingcreating: swingbench/source/sql/DropUser.sqlcom/mike/ inflatingcreating: swingbench/sql/GenData.sql source/com/mike/CallingCircle/ inflating: swingbench/sql/grantv$access.sql/source/com/mike/CallingCircle/CallingCircleLineIdentifier.java inflating: swingbench/sql/oepostinstall.sql/source/com/mike/CallingCircle/CallingCircleProcess.java inflating: swingbench/sql/sh.xml source/com/mike/CallingCircle/CallingLineIdentifier.java inflating: swingbench/sql/sh_dgcreateconstraints_with_indexes.sqlsource/com/mike/CallingCircle/CustomerAccount.java inflating: swingbench/sql/shdg_analyzeschema.sqlsource/com/mike/CallingCircle/CustomerCallingLineIdentifier.java inflating: swingbench/sql/shdg_analyzeschema2.sql/source/com/mike/CallingCircle/NewCallingCircleProcess.java inflating: swingbench/sql/shdg_createconstraints.sql/source/com/mike/CallingCircle/RetrieveHistoryProcess.java inflating: swingbench/sql/shdg_createloadviews.sql/source/com/mike/CallingCircle/UpdateCallingCircleProcess.java inflatingcreating: swingbench/sql/shdg_createtablespace.sql inflating: swingbench/sql/shdg_createuseranalyzecc.sql inflating: swingbench/sql/shdg_dropCreAppPkgBdy.sql inflating: swingbench/sql/shdg_drop_load_viewsCreAppPkgHdr.sql inflating: swingbench/sql/shdg_drop_rangeCreAppPrc.sql inflating: swingbench/sql/shdg_droptablespaceCreData1.sql inflating: swingbench/sql/shdg_dropuserCreData2.sql inflating: swingbench/sql/shdg_indexesCreData3.sql inflating: swingbench/sql/shdg_indexes_noneCreDataPkgBdy.sql inflating: swingbench/sql/shdg_indexes_partCreDataPkgHdr.sql inflating: swingbench/sql/shdg_indexes_part_pkCreInds.sql inflatingextracting: swingbench/sql/shdg_indexes_pkCreInds2.sql inflating: swingbench/sql/shdg_localindexesCreMiscPkgBdy.sql inflating: swingbench/sql/shdg_mergepartitionsCreMiscPkgHdr.sql inflating: swingbench/sql/shdg_modify_indexesCreTabs.sql inflating: swingbench/sql/shdg_tablesCreTspc.sql inflating: swingbench/sql/shdg_tablesrangeCreUser.sql inflating: swingbench/sql/shdg_tidyupDropTabs.sql inflating: swingbench/sql/shdg_timedimensionDropUser.sql inflating: swingbench/sql/soeGenData.xmlsql inflating: swingbench/sql/soe2grantv$access.xmlsql inflating: swingbench/sql/soedg_modify_indexesoepostinstall.sql inflating: swingbench/sql/soedganalyzeschemash.sqlxml inflating: swingbench/sql/soedganalyzeschema2/sh_dgcreateconstraints_with_indexes.sql inflating: swingbench/sql/soedgconstraintsshdg_analyzeschema.sql inflating: swingbench/sql/soedgconstraints2shdg_analyzeschema2.sql extractinginflating: swingbench/sql/soedgconstraintsshdg_none_2createconstraints.sql inflating: swingbench/sql/soedgconstraintsshdg_pk_2createloadviews.sql inflating: swingbench/sql/soedgcreatepartitionedtablesshdg_createtablespace.sql inflating: swingbench/sql/soedgcreatetablesshdg_createuser.sql inflating: swingbench/sql/soedgcreatetables2shdg_drop.sql inflating: swingbench/sql/soedgcreatetablescomposite2shdg_drop_load_views.sql inflating: swingbench/sql/soedgcreatetableshash2shdg_drop_range.sql inflating: swingbench/sql/soedgcreatetablespaceshdg_droptablespace.sql inflating: swingbench/sql/soedgcreateusershdg_dropuser.sql inflating: swingbench/sql/soedgdropshdg_indexes.sql inflating: swingbench/sql/soedgdrop2/shdg_indexes_none.sql inflating: swingbench/sql/soedgindexesshdg_indexes_part.sql inflating: swingbench/sql/soedgindexes2shdg_indexes_part_pk.sql inflating: swingbench/sql/soedgindexesshdg_noneindexes_2pk.sql inflating: swingbench/sql/soedgindexesshdg_pk_2localindexes.sql inflating: swingbench/sql/soedgpackageshdg_mergepartitions.sql inflating: swingbench/sql/soedgpackage2shdg_modify_bodyindexes.sql inflating: swingbench/sql/soedgpackage2shdg_headertables.sql inflating: swingbench/sql/soedgsequencesshdg_tablesrange.sql inflating: swingbench/sql/soedgsequences2shdg_tidyup.sql inflating: swingbench/sql/soedgsetupmetadatashdg_timedimension.sql inflating: swingbench/sql/soedgsqlsetsoe.sqlxml inflating: swingbench/sql/soedgviewssoe2.sqlxml inflating: swingbench/sql/soedroptablespace/soedg_modify_indexes.sql inflating: swingbench/sql/soedropusersoedganalyzeschema.sql inflating: swingbench/sql/storedproceduressoedganalyzeschema2.sql inflating: swingbench/swingbenchFAQsql/soedgconstraints.pdfsql creatinginflating: swingbench/winbinsql/soedgconstraints2.sql inflating extracting: swingbench/winbin/bmcompare.batsql/soedgconstraints_none_2.sql inflating: swingbench/winbin/ccwizard.batsql/soedgconstraints_pk_2.sql inflating: swingbench/winbinsql/ccwizardsoedgcreatepartitionedtables.xmlsql inflating: swingbench/winbinsql/charbenchsoedgcreatetables.batsql inflating: swingbench/winbinsql/clusteroverviewsoedgcreatetables2.batsql inflating: swingbench/winbinsql/clusteroverviewsoedgcreatetablescomposite2.xmlsql inflating: swingbench/winbinsql/coordinatorsoedgcreatetableshash2.batsql creatinginflating: swingbench/winbin/data/sql/soedgcreatetablespace.sql inflating: swingbench/winbinsql/data/1000mostpopularadjectivessoedgcreateuser.txtsql inflating: swingbench/winbinsql/data/1000mostpopularwordssoedgdrop.txtsql inflating: swingbench/winbinsql/data/100mostpopularwordssoedgdrop2.txtsql inflating: swingbench/winbinsql/data/cataloguesoedgindexes.txtsql inflating: swingbench/winbinsql/data/countiessoedgindexes2.txtsql inflating: swingbench/winbin/data/countries.txtsql/soedgindexes_none_2.sql extractinginflating: swingbench/winbin/data/domains.txtsql/soedgindexes_pk_2.sql inflating: swingbench/winbinsql/data/emailssoedgpackage.txtsql inflating: swingbench/winbin/data/lowerfirstnames.txtsql/soedgpackage2_body.sql inflating: swingbench/winbin/data/lowerlastnames.txtsql/soedgpackage2_header.sql inflating: swingbench/winbinsql/data/namessoedgsequences.txtsql inflating: swingbench/winbinsql/data/nlssoedgsequences2.txtsql inflating: swingbench/winbinsql/data/productidssoedgsetupmetadata.txtsql inflating: swingbench/winbinsql/data/titlessoedgsqlset.txtsql inflating: swingbench/winbinsql/data/townssoedgviews.txtsql inflating: swingbench/winbinsql/minibenchsoedroptablespace.batsql inflating: swingbench/winbinsql/oewizardsoedropuser.batsql inflating: swingbench/winbinsql/oewizardstoredprocedures.xmlsql inflating: swingbench/winbin/shwizard.batswingbenchFAQ.pdf inflatingcreating: swingbench/winbin/shwizard.xml inflating: swingbench/winbin/swingbenchbmcompare.bat inflating: swingbench/winbin/swingconfig.xml |
3. Move the swingbench directory
No Format |
---|
cd ~oracle
mv software/swingbench . |
4. Configure swingbench
a. Change the login defaults for oewizard.xml
No Format |
---|
cd ~oracle/swingbench/bin
vi oewizard.xml |
Change the defaults to the following:
Code Block | ||
---|---|---|
| ||
<DefaultParameters> ccwizard.bat inflating: swingbench/winbin/ccwizard.xml inflating: swingbench/winbin/charbench.bat <Parameter Key="datatablespacesexists" Value="true"/>inflating: swingbench/winbin/clusteroverview.bat <Parameter Key="password" Value="oe"/>inflating: swingbench/winbin/clusteroverview.xml inflating: swingbench/winbin/coordinator.bat <Parameter Key="username" Value="oe"/> creating: swingbench/winbin/data/ <Parameter Key="datafile" Value="+DATA"/> inflating: swingbench/winbin/data/1000mostpopularadjectives.txt inflating: <Parameter Key="userexists" Value="true"/> swingbench/winbin/data/1000mostpopularwords.txt inflating: swingbench/winbin/data/100mostpopularwords.txt <Parameter Key="connectionstring" Value="//source/orcl"/> inflating: swingbench/winbin/data/catalogue.txt <Parameter Key="connectiontype" Value="thin"/>inflating: swingbench/winbin/data/counties.txt inflating: swingbench/winbin/data/countries.txt <Parameter Key="onlydropuser" Value="false"/> extracting: swingbench/winbin/data/domains.txt inflating: <Parameter Key="operation" Value="create"/> swingbench/winbin/data/emails.txt inflating: swingbench/winbin/data/lowerfirstnames.txt <Parameter Key="tablespace" Value="USERS"/> inflating: swingbench/winbin/data/lowerlastnames.txt inflating: <Parameter Key="dbausername" Value="sys as sysdba"/> swingbench/winbin/data/names.txt inflating: swingbench/winbin/data/nls.txt inflating: swingbench/winbin/data/productids.txt <Parameter Key="dbapassword" Value="oracle"/> inflating: swingbench/winbin/data/titles.txt inflating: <Parameter Key="output" Value="Verbose"/> </DefaultParameters> |
b. Change the login details for oeconfig.xml
No Format |
---|
cd ~oracle/swingbench/configs/
vi oeconfig.xml |
No Format |
---|
<Connection> swingbench/winbin/data/towns.txt inflating: swingbench/winbin/minibench.bat inflating: swingbench/winbin/oewizard.bat inflating: <UserName>oe</UserName>swingbench/winbin/oewizard.xml <Password>oe</Password>inflating: swingbench/winbin/shwizard.bat inflating: <ConnectString>swingbench//source/orcl</ConnectString>winbin/shwizard.xml inflating: swingbench/winbin/swingbench.bat <DriverType>Oracle jdbc Driver</DriverType> inflating: </Connection> |
...
swingbench/winbin/swingconfig.xml |
3. Move the Swingbench directory to the right location.
No Format |
---|
cdmv ~oracle/swingbench wget http://ww2.dbvisit.com/download/files/external/sw_generate_load.sh chmod 750 sw_generate_load.sh |
...
/ |
4. Swingbench should now be in the home directory of oracle.