{"id":5,"date":"2014-01-26T22:00:52","date_gmt":"2014-01-26T22:00:52","guid":{"rendered":"http:\/\/oracle-internals.com\/blog\/?page_id=5"},"modified":"2020-04-21T20:45:02","modified_gmt":"2020-04-21T20:45:02","slug":"projects","status":"publish","type":"page","link":"http:\/\/oracle-internals.com\/blog\/projects\/","title":{"rendered":"My Projects"},"content":{"rendered":"<p><strong>Overview<\/strong><br \/>\nThis page contains information about my personal proof-of-concept implementations for features I&#8217;ve researched. These projects are purely for personal and academic research; they are not designed to be commercialized.<\/p>\n<p>While I may release binaries of these projects, <span style=\"text-decoration: underline;\">do not ask me for unreleased binaries or source code.<\/span><\/p>\n<p><strong>Hacking My Site<br \/>\n<\/strong>Please don&#8217;t waste time trying to hack this site looking for unreleased binaries or code &#8211; you won&#8217;t find any. I\u2019m not dumb enough to store source code on an insecure server :) People have tried in the past and done nothing but cause me grief with my hosting provider. Please. Just don&#8217;t.<\/p>\n<hr \/>\n<p><strong>Redwood: A UPL Compiler Frontend Compatible with PL\/SQL<\/strong><br \/>\nA frontend for my LLVM-based optimizing Universal Procedural Language Compiler that enables the compilation of a subset of Oracle PL\/SQL (7-12c).<\/p>\n<p><strong>GEMINI\/NEXTGRES Gateway: Database Network Protocol Proxy<\/strong><br \/>\nGEMINI, and its predecessor NEXTGRES Gateway, was a network proxy capable of emulating the Oracle Database network protocol. It was a longtime research project presented at IOUG Collaborate, Oracle OpenWorld, NYOUG, SEOUG, and OakTable World conferences. As a proxy, it enabled applications written to connect to Oracle Database to connect to a non-Oracle database transparently. Performance-wise, this worked OK for OLTP applications but, as it was written to use ODBC, there was significant overhead due to poorly-written ODBC drivers and the multiple type conversions required.<\/p>\n<p><strong>libodbcoci: Drop-in Replacement Library for the Oracle Call Interface<\/strong><br \/>\nlibodbcoci, the Oracle Call Interface Compatible Client Library Driver for ODBC, is a drop-in replacement library. It was written to allow applications written with a subset of OCI calls to execute against a non-Oracle database.<\/p>\n<p><strong>libimpexp: Import\/Export File Manipulation Library<\/strong><br \/>\nlibimpexp is a C-based library that permits reading\/writing old Oracle Database import and export files (7-10g). This was originally written to dump a SQL Server database directly into an export file compatible with Oracle Database. A while later, I expanded it to be able to import an export file into an ODBC-compatible database.<\/p>\n<p><strong>libmsb: Message Binary File Manipulation Library<\/strong><br \/>\nlibmsb is a C-based library that permits reading\/writing of Oracle message binary (MSB) file. This was originally written for fun.<\/p>\n<p><strong>CLOUT: The Clever Little Oracle (Database) Unloading Tool<\/strong><br \/>\nCLOUT is my own, C-based, proof-of-concept Data UnLoad (DUL) utility. It was designed for Oracle Database 7-12c. This was written to test my understanding of Oracle Database file formats.<\/p>\n<p><strong>CFDW: CLOUT-based Foreign Data Wrapper for Postgres<\/strong><br \/>\nBased on CLOUT, this is a Postgres (9-12) foreign data wrapper extension that can read Oracle data files directly. This was written to allow for joining data between a Postgres table and Oracle Database data files at rest. It also aided in copying data from an OLTP Oracle Database into Postgres for offline OLAP-style querying.<\/p>\n<p><strong>CVT: CLOUT-based Virtual Table for SQLite<\/strong><br \/>\nBased on CLOUT, this is a SQLite virtual table implementation that can read Oracle data files directly. This was written after CFDW and was designed to allow for a quick-and-dirty query functionality of Oracle Database data files at rest.<\/p>\n<p><strong>Mercury Distributed Cache for Oracle<\/strong><br \/>\nMercury is a distributed cache management system that supplements the Oracle buffer cache with optimized network-based data block storage to reduce the amount of read-related disk I\/O which must be performed when working with large-scale databases.\u00a0 It is written in C and is actively being developed.\u00a0 More information can be found on the  page. This is a research tool and it is not commercially available.<\/p>\n<p><strong>Nakano: REDO Log-based Replication<\/strong><br \/>\nNakano is a log-based transactional replication system for Oracle. It is written in C and consists of three parts, capture, transformation, and application. This is a research tool and it is not commercially available.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview This page contains information about my personal proof-of-concept implementations for features I&#8217;ve researched. These projects are purely for personal and academic research; they are not designed to be commercialized. While I may release binaries of these projects, do not ask me for unreleased binaries or source code. Hacking My Site Please don&#8217;t waste time [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>My Projects - Oracle Internals<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/oracle-internals.com\/blog\/projects\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"My Projects - Oracle Internals\" \/>\n<meta property=\"og:description\" content=\"Overview This page contains information about my personal proof-of-concept implementations for features I&#8217;ve researched. These projects are purely for personal and academic research; they are not designed to be commercialized. While I may release binaries of these projects, do not ask me for unreleased binaries or source code. Hacking My Site Please don&#8217;t waste time [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/oracle-internals.com\/blog\/projects\/\" \/>\n<meta property=\"og:site_name\" content=\"Oracle Internals\" \/>\n<meta property=\"article:modified_time\" content=\"2020-04-21T20:45:02+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@jonahharris\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/oracle-internals.com\/blog\/projects\/\",\"url\":\"https:\/\/oracle-internals.com\/blog\/projects\/\",\"name\":\"My Projects - Oracle Internals\",\"isPartOf\":{\"@id\":\"https:\/\/oracle-internals.com\/blog\/#website\"},\"datePublished\":\"2014-01-26T22:00:52+00:00\",\"dateModified\":\"2020-04-21T20:45:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/oracle-internals.com\/blog\/projects\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/oracle-internals.com\/blog\/projects\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/oracle-internals.com\/blog\/projects\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/oracle-internals.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"My Projects\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/oracle-internals.com\/blog\/#website\",\"url\":\"https:\/\/oracle-internals.com\/blog\/\",\"name\":\"Oracle Internals\",\"description\":\"Researching the Inner Workings of the World&#039;s Most Powerful Database\",\"publisher\":{\"@id\":\"https:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/oracle-internals.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4\",\"name\":\"Jonah Harris\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/oracle-internals.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/1.gravatar.com\/avatar\/a6d16ed0f510e8de0929f129471dc1e5?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/1.gravatar.com\/avatar\/a6d16ed0f510e8de0929f129471dc1e5?s=96&d=mm&r=g\",\"caption\":\"Jonah Harris\"},\"logo\":{\"@id\":\"https:\/\/oracle-internals.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jonahharris\/\",\"https:\/\/x.com\/jonahharris\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"My Projects - Oracle Internals","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/oracle-internals.com\/blog\/projects\/","og_locale":"en_US","og_type":"article","og_title":"My Projects - Oracle Internals","og_description":"Overview This page contains information about my personal proof-of-concept implementations for features I&#8217;ve researched. These projects are purely for personal and academic research; they are not designed to be commercialized. While I may release binaries of these projects, do not ask me for unreleased binaries or source code. Hacking My Site Please don&#8217;t waste time [&hellip;]","og_url":"https:\/\/oracle-internals.com\/blog\/projects\/","og_site_name":"Oracle Internals","article_modified_time":"2020-04-21T20:45:02+00:00","twitter_card":"summary_large_image","twitter_site":"@jonahharris","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/oracle-internals.com\/blog\/projects\/","url":"https:\/\/oracle-internals.com\/blog\/projects\/","name":"My Projects - Oracle Internals","isPartOf":{"@id":"https:\/\/oracle-internals.com\/blog\/#website"},"datePublished":"2014-01-26T22:00:52+00:00","dateModified":"2020-04-21T20:45:02+00:00","breadcrumb":{"@id":"https:\/\/oracle-internals.com\/blog\/projects\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/oracle-internals.com\/blog\/projects\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/oracle-internals.com\/blog\/projects\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/oracle-internals.com\/blog\/"},{"@type":"ListItem","position":2,"name":"My Projects"}]},{"@type":"WebSite","@id":"https:\/\/oracle-internals.com\/blog\/#website","url":"https:\/\/oracle-internals.com\/blog\/","name":"Oracle Internals","description":"Researching the Inner Workings of the World&#039;s Most Powerful Database","publisher":{"@id":"https:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/oracle-internals.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/oracle-internals.com\/blog\/#\/schema\/person\/549d9c522c3960b062618b600bb762a4","name":"Jonah Harris","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/oracle-internals.com\/blog\/#\/schema\/person\/image\/","url":"http:\/\/1.gravatar.com\/avatar\/a6d16ed0f510e8de0929f129471dc1e5?s=96&d=mm&r=g","contentUrl":"http:\/\/1.gravatar.com\/avatar\/a6d16ed0f510e8de0929f129471dc1e5?s=96&d=mm&r=g","caption":"Jonah Harris"},"logo":{"@id":"https:\/\/oracle-internals.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/jonahharris\/","https:\/\/x.com\/jonahharris"]}]}},"_links":{"self":[{"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/pages\/5"}],"collection":[{"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":11,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/pages\/5\/revisions"}],"predecessor-version":[{"id":154,"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/pages\/5\/revisions\/154"}],"wp:attachment":[{"href":"http:\/\/oracle-internals.com\/blog\/wp-json\/wp\/v2\/media?parent=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}