In-Database Archiving in Oracle Database 12c Release 1 (12.1)
Use the in-database archiving functionality to implement
oracle 12cconfigurationintermediate
by OracleDba
13 views
Use the in-database archiving functionality to implement
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
DROP TABLE tab1 PURGE;
-- Create the table with in-database archiving enabled.
CREATE TABLE tab1 (
id NUMBER,
description VARCHAR2(50),
CONSTRAINT tab1_pk PRIMARY KEY (id)
)
ROW ARCHIVAL;
-- Disable, the re-enable in-database archiving.
ALTER TABLE tab1 NO ROW ARCHIVAL;
ALTER TABLE tab1 ROW ARCHIVAL;
-- Populate the table with 1000 rows.
INSERT /*+ APPEND */ INTO tab1
SELECT level, 'Description of ' || level
FROM dual
CONNECT BY level <= 1000;
COMMIT;
-- Check the contents of the table.
SELECT COUNT(*) FROM tab1;
COUNT(*)
----------
1000
SQL>
COLUMN column_name FORMAT A20
COLUMN data_type FORMAT A20
SELECT column_id,
column_name,
data_type,
data_length,
hidden_column
FROM user_tab_cols
WHERE table_name = 'TAB1'
ORDER BY column_id;
COLUMN_ID COLUMN_NAME DATA_TYPE DATA_LENGTH HID
---------- -------------------- -------------------- ----------- ---
1 ID NUMBER 22 NO
2 DESCRIPTION VARCHAR2 50 NO
ORA_ARCHIVE_STATE VARCHAR2 4000 YES
SQL>
COLUMN ora_archive_state FORMAT A20
SELECT ora_archive_state, COUNT(*)
FROM tab1
GROUP BY ora_archive_state
ORDER BY ora_archive_state;
ORA_ARCHIVE_STATE COUNT(*)
-------------------- ----------
0 1000
1 row selected.
SQL>123456789101112
UPDATE tab1
SET ora_archive_state = '1'
WHERE id BETWEEN 751 and 1000;
COMMIT;
SELECT COUNT(*) FROM tab1;
COUNT(*)
----------
750
SQL>123456789101112131415161718192021222324252627282930313233343536373839
-- Make archived rows visible.
ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ALL;
SELECT COUNT(*) FROM tab1;
COUNT(*)
----------
1000
SQL>
COLUMN ora_archive_state FORMAT A20
SELECT ora_archive_state, COUNT(*)
FROM tab1
GROUP BY ora_archive_state
ORDER BY ora_archive_state;
ORA_ARCHIVE_STATE COUNT(*)
-------------------- ----------
0 750
1 250
2 rows selected.
SQL>
-- Make archived rows invisible again.
ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ACTIVE;
SELECT COUNT(*) FROM tab1;
COUNT(*)
----------
750
SQL>123456789101112131415161718
-- Make archived rows visible.
ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ALL;
UPDATE tab1
SET ora_archive_state = '0'
WHERE id BETWEEN 751 and 1000;
COMMIT;
-- Make archived rows invisible again.
ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ACTIVE;
SELECT COUNT(*) FROM tab1;
COUNT(*)
----------
1000
SQL>Please to add comments
No comments yet. Be the first to comment!