diff --git a/config/tpcc_oracle.xml b/config/tpcc_oracle.xml
new file mode 100644
index 000000000..6281264f0
--- /dev/null
+++ b/config/tpcc_oracle.xml
@@ -0,0 +1,46 @@
+
+
+
+ oracle
+ oracle.jdbc.driver.OracleDriver
+ jdbc:oracle:thin:@100.100.100.100:1521:orcl
+ tpcc
+ fake_user
+ fake_password
+ 64
+
+
+
+
+ unlimited
+ 45,43,4,4,4
+
+
+
+
+ 16
+ config/dialects/tpcc_dialects.xml
+ TRANSACTION_READ_COMMITTED
+
+
+ NewOrder
+ 1
+
+
+ Payment
+ 2
+
+
+ OrderStatus
+ 3
+
+
+ Delivery
+ 4
+
+
+ StockLevel
+ 5
+
+
+
\ No newline at end of file
diff --git a/config/tpch_oracle.xml b/config/tpch_oracle.xml
new file mode 100644
index 000000000..ad884ae9e
--- /dev/null
+++ b/config/tpch_oracle.xml
@@ -0,0 +1,142 @@
+
+
+
+
+ oracle
+ oracle.jdbc.driver.OracleDriver
+ jdbc:oracle:thin:@100.100.100.100:1521:orcl
+ fake_user
+ fake_password
+ TRANSACTION_READ_COMMITTED
+
+
+ data/tpch1
+
+
+
+ tbl
+
+
+ 20
+
+
+ 1
+
+
+ true
+ unlimited
+ all
+
+
+ true
+ unlimited
+ even
+
+
+ true
+ unlimited
+ odd
+
+
+
+
+
+
+ odd
+ 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
+
+
+ even
+ 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
+
+
+
+ Q1
+ 1
+
+
+ Q2
+ 2
+
+
+ Q3
+ 3
+
+
+ Q4
+ 4
+
+
+ Q5
+ 5
+
+
+ Q6
+ 6
+
+
+ Q7
+ 7
+
+
+ Q8
+ 8
+
+
+ Q9
+ 9
+
+
+ Q10
+ 10
+
+
+ Q11
+ 11
+
+
+ Q12
+ 12
+
+
+ Q13
+ 13
+
+
+ Q14
+ 14
+
+
+ Q15
+ 15
+
+
+ Q16
+ 16
+
+
+ Q17
+ 17
+
+
+ Q18
+ 18
+
+
+ Q19
+ 19
+
+
+ Q20
+ 20
+
+
+ Q21
+ 21
+
+
+ Q22
+ 22
+
+
+
\ No newline at end of file
diff --git a/config/wiki_oracle.xml b/config/wiki_oracle.xml
new file mode 100644
index 000000000..ecf421b06
--- /dev/null
+++ b/config/wiki_oracle.xml
@@ -0,0 +1,48 @@
+
+
+
+
+ oracle
+ oracle.jdbc.driver.OracleDriver
+ jdbc:oracle:thin:@100.100.100.100:1521:orcl
+ fake_user
+ fake_password
+ TRANSACTION_READ_COMMITTED
+
+
+ 100
+
+
+ config/traces/wikipedia-100k.trace
+ 10
+ 10.1.
+
+
+ 64
+
+
+
+ unlimited
+ 0.07,0.07,7.6725,91.2656,0.9219
+
+
+
+
+
+
+ AddWatchList
+
+
+ RemoveWatchList
+
+
+ UpdatePage
+
+
+ GetPageAnonymous
+
+
+ GetPageAuthenticated
+
+
+
diff --git a/pom.xml b/pom.xml
index 7ff601e37..791d506b7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -115,6 +115,11 @@
openjpa-persistence-jdbc
1.0.0
+
+ com.oracle
+ ojdbc14
+ 10.2.0.4.0
+
org.hibernate.javax.persistence
hibernate-jpa-2.0-api
diff --git a/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-oracle-ddl.sql b/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-oracle-ddl.sql
new file mode 100644
index 000000000..02b82b46d
--- /dev/null
+++ b/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-oracle-ddl.sql
@@ -0,0 +1,77 @@
+BEGIN EXECUTE IMMEDIATE 'DROP TABLE nation CASCADE CONSTRAINTS PURGE'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;;
+BEGIN EXECUTE IMMEDIATE 'DROP TABLE region CASCADE CONSTRAINTS PURGE'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;;
+BEGIN EXECUTE IMMEDIATE 'DROP TABLE part CASCADE CONSTRAINTS PURGE'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;;
+BEGIN EXECUTE IMMEDIATE 'DROP TABLE supplier CASCADE CONSTRAINTS PURGE'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;;
+BEGIN EXECUTE IMMEDIATE 'DROP TABLE partsupp CASCADE CONSTRAINTS PURGE'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;;
+BEGIN EXECUTE IMMEDIATE 'DROP TABLE orders CASCADE CONSTRAINTS PURGE'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;;
+BEGIN EXECUTE IMMEDIATE 'DROP TABLE customer CASCADE CONSTRAINTS PURGE'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;;
+BEGIN EXECUTE IMMEDIATE 'DROP TABLE lineitem CASCADE CONSTRAINTS PURGE'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END;;
+
+CREATE TABLE nation ( n_nationkey INTEGER NOT NULL,
+ n_name CHAR(25) NOT NULL,
+ n_regionkey INTEGER NOT NULL,
+ n_comment VARCHAR(152));
+
+CREATE TABLE region ( r_regionkey INTEGER NOT NULL,
+ r_name CHAR(25) NOT NULL,
+ r_comment VARCHAR(152));
+
+CREATE TABLE part ( p_partkey INTEGER NOT NULL,
+ p_name VARCHAR(55) NOT NULL,
+ p_mfgr CHAR(25) NOT NULL,
+ p_brand CHAR(10) NOT NULL,
+ p_type VARCHAR(25) NOT NULL,
+ p_size INTEGER NOT NULL,
+ p_container CHAR(10) NOT NULL,
+ p_retailprice DECIMAL(15,2) NOT NULL,
+ p_comment VARCHAR(23) NOT NULL );
+
+CREATE TABLE supplier ( s_suppkey INTEGER NOT NULL,
+ s_name CHAR(25) NOT NULL,
+ s_address VARCHAR(40) NOT NULL,
+ s_nationkey INTEGER NOT NULL,
+ s_phone CHAR(15) NOT NULL,
+ s_acctbal DECIMAL(15,2) NOT NULL,
+ s_comment VARCHAR(101) NOT NULL);
+
+CREATE TABLE partsupp ( ps_partkey INTEGER NOT NULL,
+ ps_suppkey INTEGER NOT NULL,
+ ps_availqty INTEGER NOT NULL,
+ ps_supplycost DECIMAL(15,2) NOT NULL,
+ ps_comment VARCHAR(199) NOT NULL );
+
+CREATE TABLE customer ( c_custkey INTEGER NOT NULL,
+ c_name VARCHAR(25) NOT NULL,
+ c_address VARCHAR(40) NOT NULL,
+ c_nationkey INTEGER NOT NULL,
+ c_phone CHAR(15) NOT NULL,
+ c_acctbal DECIMAL(15,2) NOT NULL,
+ c_mktsegment CHAR(10) NOT NULL,
+ c_comment VARCHAR(117) NOT NULL);
+
+CREATE TABLE orders ( o_orderkey INTEGER NOT NULL,
+ o_custkey INTEGER NOT NULL,
+ o_orderstatus CHAR(1) NOT NULL,
+ o_totalprice DECIMAL(15,2) NOT NULL,
+ o_orderdate DATE NOT NULL,
+ o_orderpriority CHAR(15) NOT NULL,
+ o_clerk CHAR(15) NOT NULL,
+ o_shippriority INTEGER NOT NULL,
+ o_comment VARCHAR(79) NOT NULL);
+
+CREATE TABLE lineitem ( l_orderkey INTEGER NOT NULL,
+ l_partkey INTEGER NOT NULL,
+ l_suppkey INTEGER NOT NULL,
+ l_linenumber INTEGER NOT NULL,
+ l_quantity DECIMAL(15,2) NOT NULL,
+ l_extendedprice DECIMAL(15,2) NOT NULL,
+ l_discount DECIMAL(15,2) NOT NULL,
+ l_tax DECIMAL(15,2) NOT NULL,
+ l_returnflag CHAR(1) NOT NULL,
+ l_linestatus CHAR(1) NOT NULL,
+ l_shipdate DATE NOT NULL,
+ l_commitdate DATE NOT NULL,
+ l_receiptdate DATE NOT NULL,
+ l_shipinstruct CHAR(25) NOT NULL,
+ l_shipmode CHAR(10) NOT NULL,
+ l_comment VARCHAR(44) NOT NULL);
diff --git a/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-oracle-index-ddl.sql b/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-oracle-index-ddl.sql
new file mode 100644
index 000000000..152f633fc
--- /dev/null
+++ b/src/com/oltpbenchmark/benchmarks/tpch/ddls/tpch-oracle-index-ddl.sql
@@ -0,0 +1,26 @@
+create unique index c_ck on customer (c_custkey asc) ;
+create index c_nk on customer (c_nationkey asc) ;
+create unique index p_pk on part (p_partkey asc) ;
+create unique index s_sk on supplier (s_suppkey asc) ;
+create index s_nk on supplier (s_nationkey asc) ;
+create index ps_pk on partsupp (ps_partkey asc) ;
+create index ps_sk on partsupp (ps_suppkey asc) ;
+create unique index ps_pk_sk on partsupp (ps_partkey asc, ps_suppkey asc) ;
+create unique index ps_sk_pk on partsupp (ps_suppkey asc, ps_partkey asc) ;
+create unique index o_ok on orders (o_orderkey asc) ;
+create index o_ck on orders (o_custkey asc) ;
+create index o_od on orders (o_orderdate asc) ;
+create index l_ok on lineitem (l_orderkey asc) ;
+create index l_pk on lineitem (l_partkey asc) ;
+create index l_sk on lineitem (l_suppkey asc) ;
+--create index l_ln on lineitem (l_linenumber asc) ;
+create index l_sd on lineitem (l_shipdate asc) ;
+create index l_cd on lineitem (l_commitdate asc) ;
+create index l_rd on lineitem (l_receiptdate asc) ;
+--create unique index l_ok_ln on lineitem (l_orderkey asc, l_linenumber asc) ;
+--create unique index l_ln_ok on lineitem (l_linenumber asc, l_orderkey asc) ;
+create index l_pk_sk on lineitem (l_partkey asc, l_suppkey asc) ;
+create index l_sk_pk on lineitem (l_suppkey asc, l_partkey asc) ;
+create unique index n_nk on nation (n_nationkey asc) ;
+create index n_rk on nation (n_regionkey asc) ;
+create unique index r_rk on region (r_regionkey asc) ;