Since Oracle 11g we can place a table in read -only mode with the ALTER TABLE …READ ONLY statement. Read-Only tables are like normal tables, the only dissimilarity being it disallows any attempt to modify the data. Any DML (insert/update/delete/truncate) and certain DDL statement that affects the data are not allowed on these tables.
ALTER TABLE SALES_TEST READ ONLY;
To Alter a table to read-only mode you must have ALTER ANY TABLE privilege on the table.
If you try to insert a record into this table now,
INSERT INTO SALES_TEST VALUES (100);
Update operation not allowed on the table.
Even though the table is read –only mode, index creation statement is possible.
CREATE INDEX SALES_TEST_IND ON SALES_TEST (ID);
- To Revert back the table to READ/WRITE mode.
ALTER TABLE SALES_TEST READ WRITE;
Prior 11g Read-only mode could only be associated to database and tablespace level. Previously to make a table read-only we have to grant SELECT privilege to appropriate users on the table. But still the table will be available for read and write to the creator of the table. With the new Oracle 11g enhancement no DML will be allowed on the table even by the owner of the table.
- How To Check A Table Is In Read Only Or Not?
SELECT TABLE_NAME ,READ_ONLY FROM USER_TABLES WHERE TABLE_NAME=’SALES_TEST ‘
The best example for tables which makes sense in read-only mode is the configuration tables that are not to be modified after installation. The same is applicable for tables that store historical or reference data.
Operations like DML, TRUNCATION, DROP, and FLASHBACK are not permitted on READ ONLY TABLE.
Read the most discussed topics of DATAWAREHOUSECONCEPTS- TOP 10 TOPICS OF 2014