오라클 사용자 권한 따른 조회에 대해 질문드립니다 0 6 2,674

by 犬발자 [PL/SQL] [2016.01.20 14:13:02]


c#으로 DB 조회 프로그램을 개발하는 중인데

메인 메뉴 아래 하위 메뉴들이 존재 하는 구성이며

시스템
- ~SQL 조회
- ~관리
- ~관리

위 처럼 각각의 하위 메뉴는 별도의 데브익스프레스 그리드뷰 폼으로 이루어져 있습니다

최초 프로그램 접속시 DB접속 정보를 입력 합니다

그런데 여기서 하위 메뉴중 SQL조회는 클라이언트가 직접 SQL문을 작성하여

원하는 데이터값을 얻을수 있게 상단엔 에디트, 하단엔 그리드뷰를 만들어서

SELECT, 즉 조회만 할수 있게 만들려고 합니다

물론 문자열 처리로 SELECT 이외엔 다 브레이크 시키면 되지만

그렇게 하면 예외사항도 많고 코드도 길어져 생산성이 떨어질것 같습니다

그래서 DB단에서 오라클로 권한을 주고 싶은데 이미 최초 접속시 어드민 유저로 접속을 한 상태인데

다른 유저를 그 폼안에서만 작동하게끔 할수 있는 방법이 없을 까요??

새로 생성한 유저는
GRANT SELECT ANY TABLE TO 생성한 유저명
GRANT CREATE SESSTION TO 생성한 유저명
이런식으로 권한을 준 상태인데..

즉 이미 프로그램 admin사용자로 접속된 상태인데
하나의 폼만 오라클 SELECT ANY TABLE  권한을 어떻게 주고 싶습니다


어떻게 방법이 없을까요?
이 방법이 아니더라도 다른 좋은 로직이 있으시면 조언부탁드립니다


P.S 핵심은 프로그램 안의 비슷한 DB조회, 입력, 수정 폼들에서
하나의 폼만 텍스트에디트로 SQL쿼리문을 받아서 조회만 되는(Select)만 가능하게 하고 싶습니다

by 犬발자 [2016.01.20 14:13:08]

근데 새로 생성한 사용자에는 테이블이고 뭐고 텅텅 비어있습니다

어드민 계정에만 테이블, 패키지, 프로시저가 다있는데

조회가 가능 한가요?

SQL 쿼리문을 입력하면 다른 폼들 처럼 그 어드민 계정의 테이블이 조회가 되어야 하는데

계정을 바꿔버리면 SQL쿼리문을 따로 더 [새로 생성한 계정.테이블명] 이런식으로
해줘야 하는데 너무 어렵네요 ㅠ

 

 


by 마농 [2016.01.20 14:24:46]

보통 뷰를 만들어 사용자 계정에 조회 권한을 주고요
사용자 계정에서는 뷰만 조회합니다.
이때 어드민.뷰명 처럼 사용해야 하는데
이게 불편하면 시노님을 만들어 씁니다.


by 犬발자 [2016.01.20 14:32:58]

방금 검색해서 확인 해보니 시노님이 적당할것 같습니다

 

사용자한테서 쿼리문을 입력 받는거라 사용자한테 일일이 사용자계정명을 붙이라고 할수도 없습니다..

저희 회사에 DBA가 따로 없어 제가 DB는 초보라..^^;; 이번에 처음 알았는데 감사합니다^^


by 犬발자 [2016.01.20 14:48:27]

으앗 적용해보려고 하니 테이블마다 다 시노님을 지정해줘야 되더군요...

그 사용자가 가지고 있는 모든 테이블에 대해 참조할수있는 방법이 없을까요?

마치 다른 사용자 계정에서 그 사용자 계정으로 접속한거 마냥

별칭이나 계정명을 붙이지 않고 일반적인 SELECT FROM 쿼리문으로 조회가능하게 하고 싶습니다...


by 겸댕2후니 [2016.01.20 15:16:54]

쿼리로 시노님생성문을 일괄생성하여 스크립트를 돌리시는게 좋을 듯 합니다.

ex)

sqlplus user/password

set heading off

set feedback off

spool syn.sql

select 'create synonym ' ||table_name|| ' for user명.'||table_name||';'

from dba_tables

where -- 조건절추출, 시스템테이블제외

 

spool off

 

출력이 끝나면 확인 후, @syn.sql수행

 

- 현재 테스트 할 수가없어 대충 양식만 써드렸습니다.

 수정하여 사용하시기 바랍니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입