Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Alter table ... set unused column ... online (ora-04023)

Access.ViolationMay 27 2015 — edited May 27 2015

Hello.

I try use Edition-Base Redifinition (EBR) and I want set column unused as described in EBR documentation when executed DML operation in other session.

When I execute alter table ... set unused collumn ... online (Oracle 12c) then recive error code ora-04023.

The Database documentation to alter table describe

ONLINE

Specify ONLINE to indicate that DML operations on the table will be allowed while marking the column or columns UNUSED.

Do You know a solution for resolve ora-04023 error or it's oracle bug?

Thanks.

Test example bellow.

SELECT banner FROM v$version;

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

PL/SQL Release 12.1.0.2.0 - Production

CORE 12.1.0.2.0 Production

TNS for 64-bit Windows: Version 12.1.0.2.0 - Production

NLSRTL Version 12.1.0.2.0 - Production

CREATE TABLE test_table

( col_1  NUMBER(2)

, col_2  VARCHAR2(10)

);

CREATE OR REPLACE EDITIONING VIEW v#test_table_edition

AS

  SELECT col_1

       , col_2

    FROM test_table;

CREATE OR REPLACE NONEDITIONABLE VIEW v#test_table_nonedition

AS

  SELECT col_1

       , col_2

    FROM test_table;

INSERT INTO v#test_table_edition

VALUES (1, 'Test 1');

COMMIT;

INSERT INTO v#test_table_nonedition

VALUES (2, 'Test 2');

COMMIT;

SELECT * FROM v#test_table_edition;


     COL_1 COL_2

---------- ----------

         1 Test 1

         2 Test 2

SELECT * FROM v#test_table_nonedition;

     COL_1 COL_2

---------- ----------

         1 Test 1

         2 Test 2

ALTER TABLE test_table ADD (col_3 NUMBER);

ALTER TABLE test_table ADD (col_4 NUMBER);

SELECT t.column_name, t.data_type

  FROM user_tab_columns t

WHERE t.TABLE_NAME = 'TEST_TABLE'

ORDER BY t.COLUMN_ID;

COLUMN_NAME                    DATA_TYPE

------------------------------ ------------------------------

COL_1                          NUMBER

COL_2                          VARCHAR2

COL_3                          NUMBER

COL_4                          NUMBER

ALTER TABLE test_table SET UNUSED COLUMN col_4;

COLUMN_NAME                    DATA_TYPE

------------------------------ ------------------------------

COL_1                          NUMBER

COL_2                          VARCHAR2

COL_3                          NUMBER

SELECT * FROM v#test_table_edition;


     COL_1 COL_2

---------- ----------

         1 Test 1

         2 Test 2

SELECT * FROM v#test_table_nonedition;

     COL_1 COL_2

---------- ----------

         1 Test 1

         2 Test 2

ALTER TABLE test_table SET UNUSED COLUMN col_3 INVALIDATE ONLINE;

Table altered.

SELECT t.column_name, t.data_type

  FROM user_tab_columns t

WHERE t.TABLE_NAME = 'TEST_TABLE'

ORDER BY t.COLUMN_ID;

COLUMN_NAME                    DATA_TYPE

------------------------------ ------------------------------

COL_1                          NUMBER

COL_2                          VARCHAR2

SELECT * FROM v#test_table_edition;

ERROR at line 1:

ORA-04023: Object SELECT * FROM v#test_table_edition could not be validated or authorized

SELECT * FROM v#test_table_nonedition;

ERROR at line 1:

ORA-04023: Object SELECT * FROM v#test_table_nonedition could not be validated or authorized


SELECT object_name, object_type

  FROM user_objects

WHERE status='INVALID';

no rows selected

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 24 2015
Added on May 27 2015
7 comments
1,443 views