tags:

views:

74

answers:

1

I have a master database that is used for OLTP type applications. At the moment we have individual table replication for many tables to another database that is used as a reporting instance.

Soon, we are moving to a Data Guard Logical Standby database. What I cannot seem to track down from google is whether I can change the physical structure of the tables on the logical standby.

I would like to partition many of the large tables on the logical standby to make reporting easier - the ideal way to do this would be to partition the tables on the logical standby and then the SQL apply process can just update the tables as normal, but I cannot figure out if that is supported.

Does anyone know if it is possible to alter the table structure on the standby to implement partitioning?

+1  A: 

This should be possible. I would enable row movement on the logical standby partitioned tables in case your OLTP application updates the values of the partitioning key.

Since you are using the logical standby as a reporting database, why not leave the "copies" of the OLTP tables as-is and create materialized views around them? - you might pick up additional performance improvements from denormalization and aggregation. It is not necessarily the case that you will see performance improvements as a result of just partitioning the tables.

dpbradley
Many of the tables have 100M plus rows and I want to use partition-wise joins on them - its makes a massive difference in my tests.I agree I could create MViews on the OLTP tables, but it will require double the storage, so I am trying to figure out if we can partition directly. Do you know how you would go about altering the table structure on a logical standby? Just create tab_new partition by hash (col)... as select * from old_tab, then do a drop, recreate indexes and rename as on a master DB?
Stephen ODonnell
I understand re: hash partitions - I work so much with range partitions that I don't always consider other types. The CTAS/rename approach is one way to make the conversion - you also should look at an EXCHANGE PARTITION operation.
dpbradley