Partitioning -- 13d : TRUNCATE and DROP Partitions and Global Indexes
A TRUNCATE or DROP Partition makes Global Indexes on a Partitioned Table UNUSABLE.You may be lucky if the target partition was empty, resulting in Oracle maintaining Global Indexes as valid. However,...
View ArticlePartitioning -- 14 : Converting a non-Partitioned Table to a Partitioned Table
Pre-12cRelease2, there were only three methods to convert a non-Partitioned Table to a Partitioned Table(a) Create a new, empty, Partitioned Table and copy (using INSERT .... AS SELECT ... ) all the...
View ArticleEveryone should read this
An excellent article that anyone promising, developing, maintaining or using any system that is non-trivial should read...
View ArticlePartitioning -- 15 : Online Modification of Partitioning Type (Strategy)
Oracle 18c introduces the ability to convert a Partitioned Table from one Type to another -- e.g. from Hash Partitioning to Range Partitioning. This is effectively a change of the Partitioning...
View ArticlePartitioning -- 16 : Hybrid Partitioning
Oracle 19c introduces Hybrid Partitioning whereby you can have external and internal Partitions co-existing. External Partitions are on storage (filesystem) outside the database.Let's say we have a...
View ArticleRecent Blog Series on Partitioning
A recent series of posts on Partitioning1. 1. Introduction (Aug-18)2. 2. Simple Range Partitioning (Aug-18)3. 3a. Indexes on a Partitioned Table (Aug-18)4. 3b. More Indexes on a Partitioned...
View Article2million PageViews
This blog has now achieved 2million PageViews :(The "drop" at the end is the count for only the first week of August 2019).Although this blog began in December 2006, the PageViews counts start with...
View ArticleBasic Replication -- 1 : Introduction
Basic Replication, starting with Read Only Snapshots has been available in Oracle since V7. This was doable with the "CREATE SNAPSHOT" command.In 8i, the term was changed from "Snapshot" to...
View ArticleBasic Replication -- 2a : Elements for creating a Materialized View
The CREATE MATERIALIZED VIEW statement is documented here. It can look quite complex so I am presenting only the important elements here. In this post, I begin with only the basic elements.(EDIT:...
View ArticleBlog Series on 12cR1 RAC
A series of posts in 2017 on 12cR1 RAC :1. 1. Grid Infrastructure Install (Dec-16)2. 2. Convert AdminManaged Database to PolicyManaged (Dec-16)3. 3. Convert PolicyManaged Database back to...
View ArticleBasic Replication -- 2b : Elements for creating a Materialized View
Continuing the previous post, what happens when there is an UPDATE to the source table ?SQL> select * from source_table; ID DATA_ELEMENT_1 DATA_ELEMENT_2 DATE_COL---------- ---------------...
View ArticleBasic Replication -- 3 : Multiple Materialized Views
You can define multiple Materialized Views against the same Source Table with differences in :a) the SELECT clause column listb) Predicates in the WHERE clausec) Joins to one or more other Source...
View ArticleBasic Replication -- 4 : Data Dictionary Queries
Now that we have two Materialized Views against a Source table, how can we identify the relationship via the data dictionary ?This is the query to the data dictionary in the database where the Source...
View ArticleBasic Replication -- 5 : REFRESH_METHOD : FAST or FORCE ?
In the previous blog post, I had a remark "We'll explore the implications of "REFRESH FAST" and just "REFRESH" alone in a subsequent blog post."This is in the context of whether it is a FORCE or FAST...
View ArticleBasic Replication -- 6 : COMPLETE and ATOMIC_REFRESH
Till 9i, if you did a COMPLETE Refresh of a Single Materialized View, Oracle would do a TRUNCATE followed by an INSERT.If you did a COMPLETE Refresh of a *group* of Materialized Views, Oracle would...
View ArticleBasic Replication -- 7 : Refresh Groups
So far, all my blog posts in this series cover "single" Materialized Views (even if I have created two MVs, they are independent of each other and can be refreshed at different schedules).A Refresh...
View ArticleBasic Replication -- 8 : REFRESH_MODE ON COMMIT
So far, in previous posts in this series, I have demonstrated Materialized Views that set to REFRESH ON DEMAND.You can also define a Materialized View that is set to REFRESH ON COMMIT -- i.e. every...
View ArticleBasic Replication -- 9 : BUILD DEFERRED
A Materialized View can be created with all the target rows pre-inserted (and subsequently refreshed for changes). This is the default behaviour.However, it is possible to define a Materialized View...
View ArticleBasic Replication -- 10 : ON PREBUILT TABLE
In my previous blog post, I've shown a Materialized View that is built as an empty MV and subsequently populated by a Refresh call.You can also define a Materialized View over an *existing*...
View ArticleBasic Replication -- 11 : Indexes on a Materialized View
A Materialized View is actually also a physical Table (by the same name) that is created and maintained to store the rows that the MV query is supposed to present.Since it is also a Table, you can...
View Article