On Oracle 10g, The command "
ALTER TABLE TABLE_NAME ENABLE ROW MOVEMENT" make the dependent objects be 
INVALID status. So, we need to recompile the dependent objects or wait for compilation automatic when objects are called.
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
PL/SQL Release 10.2.0.4.0
CORE    10.2.0.4.0
TNS for Linux: Version 10.2.0.4.0
NLSRTL Version 10.2.0.4.0
SQL> select object_name, object_type, status from dba_objects where object_name like '%TB01';
OBJECT_NAME                    OBJECT_TYPE         STATUS
------------------------------ ------------------- -------
V_TB01                         VIEW                VALID
TB01                           TABLE               VALID
PRC_TB01                       PROCEDURE           VALID
SQL>  alter table tb01 enable row movement;
Table altered.
SQL>  select object_name, object_type, status from dba_objects where object_name like '%TB01';
OBJECT_NAME                    OBJECT_TYPE         STATUS
------------------------------ ------------------- -------
V_TB01                         VIEW                INVALID
TB01                           TABLE               VALID
PRC_TB01                       PROCEDURE           INVALID
SQL> select * from v_tb01;
SQL> exec PRC_TB01;
SQL> select object_name, object_type, status from dba_objects where object_name like '%TB01';
OBJECT_NAME                    OBJECT_TYPE         STATUS
------------------------------ ------------------- -------
V_TB01                         VIEW                VALID
TB01                           TABLE               VALID
PRC_TB01                       PROCEDURE           VALID
This is the issue, when we need to use 
"enable row movement" command, But on Oracle 11g has changed.
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
PL/SQL Release 11.1.0.6.0
CORE    11.1.0.6.0      Production
TNS for Linux: Version 11.1.0.6.0
NLSRTL Version 11.1.0.6.0
SQL>  select object_name, object_type, status from dba_objects where object_name like '%TB01';
OBJECT_NAME                    OBJECT_TYPE         STATUS
------------------------------ ------------------- -------
V_TB01                         VIEW                VALID
TB01                           TABLE               VALID
PRC_TB01                       PROCEDURE           VALID
SQL> alter table tb01 enable row movement;
Table altered.
SQL> select object_name, object_type, status from dba_objects where object_name like '%TB01';
OBJECT_NAME                    OBJECT_TYPE         STATUS
------------------------------ ------------------- -------
V_TB01                         VIEW                VALID
TB01                           TABLE               VALID
PRC_TB01                       PROCEDURE           VALID
4 comments:
thanks for share.
Looks like things are change in 11GR2
HR@ORACOS>
CREATE OR REPLACE PROCEDURE p_test_table (
test_sql out varchar2) is
BEGIN
select substr(sqltext,5) into test_sql from test_table where rownum=1;
dbms_output.put_line(test_sql);
END p_test_table;
2 3 4 5 6 7 /
Procedure created.
HR@ORACOS> create or replace view v_test_table as select * from test_table;
View created.
HR@ORACOS> select owner,object_name,status from dba_objects where object_name like '%TEST_TABLE%';
OWNER OBJECT_NAME STATUS
------------------------------ --------------- -------
HR V_TEST_TABLE VALID
HR P_TEST_TABLE VALID
HR TEST_TABLE VALID
HR@ORACOS> alter table test_table enable row movement;
Table altered.
HR@ORACOS> select owner,object_name,status from dba_objects where object_name like '%TEST_TABLE%';
OWNER OBJECT_NAME STATUS
------------------------------ --------------- -------
HR V_TEST_TABLE VALID
HR P_TEST_TABLE VALID
HR TEST_TABLE VALID
Looks like things are changed on 11GR2
HR@ORACOS> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
HR@ORACOS>
CREATE OR REPLACE PROCEDURE p_test_table (
test_sql out varchar2) is
BEGIN
select substr(sqltext,5) into test_sql from test_table where rownum=1;
dbms_output.put_line(test_sql);
END p_test_table;
2 3 4 5 6 7 /
Procedure created.
HR@ORACOS> create or replace view v_test_table as select * from test_table;
View created.
HR@ORACOS> select owner,object_name,status from dba_objects where object_name like '%TEST_TABLE%';
OWNER OBJECT_NAME STATUS
------------------------------ --------------- -------
HR V_TEST_TABLE VALID
HR P_TEST_TABLE VALID
HR TEST_TABLE VALID
HR@ORACOS> alter table test_table enable row movement;
Table altered.
HR@ORACOS> select owner,object_name,status from dba_objects where object_name like '%TEST_TABLE%';
OWNER OBJECT_NAME STATUS
------------------------------ --------------- -------
HR V_TEST_TABLE VALID
HR P_TEST_TABLE VALID
HR TEST_TABLE VALID
@Coskan Gundogar
Thank You for your comment
Post a Comment