오라클에서는 테이블 파티션이 떨어질 때 왜 공개 동의어가 유효하지 않습니까?

StackOverflow https://stackoverflow.com/questions/441021

문제

누군가 다음 행동이 왜 발생하는지 말해 줄 수 있습니까 (Oracle 10.2) :

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> 

파티션이 삭제 된 후 동의어가 유효하지 않으며 그 이유를 해결할 수 없습니다.

어떤 생각에 감사합니다.

도움이 되었습니까?

해결책

나는 Oracle 10.2로 그것을 테스트했으며 동의어는 실제로 유효하지 않지만 다른 사용자가 동의어를 사용하여 동의어를 사용하면

part_test에서 count (*)를 선택하십시오.

Oracle은 동의어를 자동으로 컴파일하고 동의어가 유효 해집니다.

패키지, 절차 및 기능과 동일합니다. 당신이 그것들을 실행하고 그것들이 유효하지 않으면, Oracle은 자동으로 컴파일하려고합니다.

다른 팁

11.1.0.6은 고정 된 버그 일 수 있습니다. 그것은 필요한 것이 있었을 수도 있지만 (예 : 동의어를 기반으로 한 견해를 재평가하기위한 것입니다 ...) 개선 된 기술이 사용 된 곳.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top