代码之家  ›  专栏  ›  技术社区  ›  Jamie Love

在Oracle中,为什么删除表分区时公共同义词变得无效

  •  3
  • Jamie Love  · 技术社区  · 16 年前

    SQL> create table part_test (
            i int primary key,
            d date
    )
    partition by range (d) (partition part_test_1 values less than (to_date('  2    3    4    5  1980-01-01', 'yyyy-mm-dd')));
    
    create public synonym part_test for part_test;
    
    select object_name, object_type, status from all_objects where object_name = 'PART_TEST';
    
    alter table part_test add partition part_test_2 values less than (to_date('1981-01-01', 'yyyy-mm-dd'));
    
    select object_name, object_type, status from all_objects where object_name = 'PART_TEST';
    
    alter table part_test drop partition part_test_1;
    
    select object_name, object_type, status from all_objects where object_name = 'PART_TEST';
    
    drop public synonym part_test;
    drop table part_test;
    
    Table created.
    
    SQL> SQL> 
    Synonym created.
    
    SQL> SQL> 
    OBJECT_NAME                    OBJECT_TYPE         STATUS
    ------------------------------ ------------------- -------
    PART_TEST                      TABLE               VALID
    PART_TEST                      TABLE PARTITION     VALID
    PART_TEST                      SYNONYM             VALID
    
    SQL> SQL> 
    Table altered.
    
    SQL> SQL> 
    OBJECT_NAME                    OBJECT_TYPE         STATUS
    ------------------------------ ------------------- -------
    PART_TEST                      TABLE               VALID
    PART_TEST                      TABLE PARTITION     VALID
    PART_TEST                      TABLE PARTITION     VALID
    PART_TEST                      SYNONYM             VALID
    
    SQL> SQL> 
    Table altered.
    
    SQL> SQL> 
    OBJECT_NAME                    OBJECT_TYPE         STATUS
    ------------------------------ ------------------- -------
    PART_TEST                      TABLE               VALID
    PART_TEST                      TABLE PARTITION     VALID
    PART_TEST                      SYNONYM             INVALID
    
    SQL> SQL> 
    Synonym dropped.
    
    SQL> 
    Table dropped.
    
    SQL> 
    

    删除分区后,同义词变得无效,我不知道为什么。

    谢谢你的想法。

    2 回复  |  直到 12 年前
        1
  •  6
  •   tuinstoel    16 年前

    从零件测试中选择计数(*);

    Oracle会自动编译同义词,同义词将变为有效。

        2
  •  2
  •   Gary Myers    16 年前

    它不在11.1.0.6中 这可能是一个已经修复的bug。这可能是必要的(例如,基于同义词重新验证视图…),但使用了改进的技术。