2009-05-25 3 views
0

직장에서 나는 Oracle 7.3 (예, 예)에 앉아 있습니다. 최근에 모든 테이블에서 SELECT 할 수있는 계정을 만들려고했지만 업데이트 나 삭제가 없습니다. 그러나 새 계정을 만들 때마다 이미 모든 응용 프로그램 테이블에 액세스 할 수 있습니다. 나는 그것을 세션을 만들기 위해서 떼어 냈다. 이것은 도움이되지 않았습니다 - 사용자는 여전히 어떤 테이블도 업데이트 할 수있었습니다!ORACLE 7.3 사용자 관리

그래서 공개 동의어가 테이블 (예 : 테이블 myTable123, 공개 동의어 myTable123)과 완전히 동일하다는 것을 알게되었습니다. 내가 그들 중 하나를 제거하고 사용자가 그 particualr 테이블을 선택할 수 없습니다. 그런 다음 새 테이블을 만들었고 분명히 새 사용자가 볼 수 없었습니다. 사용자가 액세스 할 수 있기를 기대하면서 해당 테이블에 공용 동의어를 추가했습니다. 새로운 사용자는 볼 수 없었습니다. GRANT가 주어지지 않았기 때문에 의미가 있습니다. 뭔가 다른 것이 있어야합니다 ....

저는 오라클 전문가가 아니며,이 문제의 최하점까지 도달하려고 노력하고 있습니다 만, 지금까지는 행운이 없습니다. 제안 사항을 도와주세요. 건배! Damo

답변

5

tuinstoel에 따르면 공용 동의어는 무시할 수 있습니다. 권한에 영향을 미치지 않습니다.

이 가능하여 원래의 테이블이 작성 될 때 작성자에 새로운 사용자를 의미 [권한] "모든"로 폭 넓은 될 수

grant [permissions] on [table] to public 

, 자동으로 부여 될 권한을했다는 것을 그 테이블들.

select * from ALL_TAB_PRIVS where table_name = '[one of your problem tables]' 

반환 무엇을합니까?

BTW - Oracle 7.3.3을 사용하지 않음 - 권한 부여 모델에서 많이 변경되지 않았다고 가정합니다.

+0

호보, 답변 해 주셔서 감사합니다! 네가 못질했다고 생각해. 나는 이번 주에 휴가를 보내고 있지만, 직장에 돌아 가면 곧 확인 할 것입니다. 감사합니다. Damo –

1

오라클 7.3은 단지 오래된 것이 아니라 아주 아주 오래된 것입니다. 12 세 또는 13 세입니다.

공개 syn을 만들거나 삭제해도 테이블에 액세스 할 수있는 사람의 권한은 변경되지 않습니다. 공용 동의어를 작성하는 유일한 이유는 스키마 이름 앞에 접두어를 붙이지 않고 테이블에 액세스 할 수있게하는 것입니다.

이전 사용자는 '모든 테이블 업데이트'및 '모든 테이블 선택'또는 'dba'와 같은 권한이 있다고 생각합니다.

+0

14 세라고 생각합니다. 문서에 저작권이 있습니다. 1995. – RussellH