2008-10-30 4 views
2

웹 응용 프로그램의 일부로 저장된 PL/SQL 프로 시저를 사용하여 테이블을 동기화합니다. 버튼을 누르면 동기화됩니다. PL/SQL은 사용자 A로 실행되지만 인덱스를 비활성화하고 스키마 B의 테이블 몇 개를 동기화해야합니다. 사용자 A에게 '인덱스를 변경하지 않고 인덱스 BindexName을 사용할 수 없게 변경'할 수 없습니다. 그리고 필사적으로 DBA도. ORA-01418 : 지정된 인덱스가 존재하지 않습니다. 이 문제는 다른 개발자의 샌드 박스에서 작동하지만 이유를 파악할 수 없습니다. 모든 제안을 주시면 감사하겠습니다.스키마에서 인덱스 변경

+0

마지막 게시물에 대해 나 자신보다 약간 앞서 있습니다. alter index가 실패하고 SQL이 테이블에서 모두 삭제되기 전에 종료됩니다. 그런 다음 삽입 작업을 시도하고 무결성 제약 조건에 실패합니다. – user32845

답변

1

역할을 통해 ALTER ANY INDEX 권한을 부여합니까? 아니면 사용자 A에게 직접 권한을 부여합니까?

역할 (예 : DBA)을 통해 부여 된 권한은 정의자 권한 저장 프로 시저 (기본값)에서 사용할 수 없습니다. 정의 자의 권한 저장 프로 시저에서는 사용자에게 직접 부여 된 권한 만 사용할 수 있습니다.

+0

이것은 사용자 A에게 sys로 직접 부여됩니다. – user32845

+0

"사용자 A에게 sys로"라는 문구에서 "as sys"가 무엇을 의미하는지 잘 모르겠습니다. 귀하가 성명서를 실행했다고 말하고 있습니까? userA에 대한 모든 변경 사항을 로그 아웃 했는데도 코드가 여전히 작동하지 않습니까? –

+0

예,이 명령문은 사용자 A로 실행됩니다. DBA_CONSTRAINTS WHERE UPPER (TABLE_NAME) = 'TABLE'에서 OWNER, CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, STATUS를 선택하십시오. 사용자 컨 스트레인 트 이름 컨 스트레인 트 유형 TABLE_NAME 상태 B BTABLE_FKEY R 테이블이 활성화 됨 – user32845

0

인덱스가 존재합니까? 한 번 이상, 나는 액면가로 오류 메시지를받지 않음으로써 시간을 잃었습니다.

0

색인을 삭제하고 다시 작성 했으므로 위의 문제가 해결 된 것으로 보입니다. 이제는 인덱스를 비활성화 할 수 있지만 사용자에게 인덱스를 바꾸기에 충분한 권한이 없다고 알려줍니다. 테이블 채우기가 완료되면 온라인으로 다시 작성합니다. 당신이 그토록 친절하다면 사용자는 그 작업을 위해 어떤 특권을 필요로합니까?

+0

재 구축시 발생하는 오류 번호는 무엇입니까? 인덱스를 작성중인 테이블 스페이스에 대해 ALTER ANY INDEX 권한과 할당량 만 있으면됩니다. Oracle 버전은 무엇입니까? 표준 b * 트리 인덱스입니까? –

관련 문제