BigTable[1]-like systems (HBase[2] for instance) allows a table to be distributed transparently accross multiple servers. This works as follows:

  1. Each server perform the read/writes operations on distinct partitions (shards) of the same table.
  2. The DBA does not need to explicitely specify the server holding the partition in his query.
  3. When the DBA run his query, the API will route the request to the proper server.
  4. (The main benefit is scale-out scalability for write operations)

My assumption is that Oracle can not do so, but I am not an Oracle expert. References to infirm or confirm this hypothesis are much appreciated.

[1] http://en.wikipedia.org/wiki/BigTable [2] https://hbase.apache.org/


The short answer is: NO, Oracle does not do this in the way you propose BUT:

there is a way to emulate this but don't forget that Oracle has a share everything architecture, meaning that all data is available for all instances on all nodes. Using services and application code that connects to specified services running on their own instances can use specified partitions of tables to partition the application. This is a big effort to create.

Another (BETTER) way is to use Active Data Guard and have your application perform all queries on a physical standby database. With Active Data Guard you can ensure that they always contain up to date data. If you need to do an update/insert/delete operation, do that on the single primary database. Doing so takes away the reading load from the primary and also enables the standby databases to use their own storage, even in their own Data Center. If you really want to scale out, this is the way to do that with Oracle. At any time you can exchange the role of a standby with the primary database allowing for maintenance, giving very good availability. There are several ways to select an instance on which to perform the queries, like round-robin but also based on location or load.

  • So you are saying you can promote a slave to master role (and vice versa)? Can you do this operation without system interruption ? – David Jun 4 '14 at 11:03
  • you can have max 1 primary database (the one having write). At the moment when you exchange roles, there will be a short disruption for the involved instances. The middle tier or the application needs to handle that. – ik_zelf Jun 4 '14 at 11:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.