생계/OERR2019. 6. 6. 17:29

- 'USER_A' : 테이블 'TAB_A' 를 소유

- 'USER_B' : 'TAB_A' 를 참조하는 view 'VW_B' 를 소유

- 'USER_C' : 'VW_B' 에 대한 권한을 받으려는 유저

 

  위의 상황에서 아래와 같이 일반적 방식으로 권한을 주면 발생하는 에러.

  grant select on USER_B.VIEW_B to USER_C;

  => ORA-01720 발생

 

 아래와 같이 참조되는 테이블(TAB_A)을 뷰의 오너 인 USER_B 에게 with grant option 으로 권한을 먼저 줘야한다. 

  grant select on USER_A.TAB_A to USER_B with grant option;

  grant select on USER_B.VIEW_B to USER_C; 

 문제는 해결될 수 있으나 프로그램의 복잡도가 증가하므로

 A 소유 테이블로 B 소유 뷰가 만들어 지고, 이를 다시 C에게 권한을 주는 일이 없도록 가이드 하는 것이 중요.

 

반응형

'생계 > OERR' 카테고리의 다른 글

ora-2396 ora-0  (0) 2022.03.16
ORA-00257 archiver error 원인 및 조치  (0) 2022.01.25
ORA-4023 에러  (0) 2019.06.04
ORA-27086: unable to lock file - already in use  (0) 2018.11.02
oracle silent 설치 중 에러 ins-35344 stack size  (0) 2018.05.03
Posted by 돌고래트레이너
생계/Oracle2019. 6. 4. 11:17

 

'ABC_DEF' 같은 중간에 언더바('_')가 들어간 패턴의 데이터를 검색하고 싶다면 어떻게 해야할까

 

like 에서 "_" (언더바) 는 한 글자를 의미한다. 

그래서 like '%_%'  이렇게 하면 길이가 한자리 이상의 모든 데이터가 나온다.

이러한 경우를 위해 오라클에서는 ESCAPE 문을 제공한다. 

 

where column_a like '%#_DEF' ESCAPE '#'  이렇게 하면 '_DEF' 로 끝나는 데이터들이 추출이 된다.

사용하려는 특수문자 앞에 아무 문자나 넣어주고 뒤에 ESCAPE 라고 써주고 뺄 문자를 명시해주면 된다.

즉 # 을 안쓰고 다른 문자를 써도 결과는 동일하다. 

where column_a like '%A_DEF' ESCAPE 'A'

은 위의 쿼리와 결과가 동일하다. 

 

아래는 SYS_ 로 시작하는 문자를 검색하는 간단한 예제이다.

 

 

 

반응형

'생계 > Oracle' 카테고리의 다른 글

오라클 로그인 특수문자 입력  (0) 2020.01.30
권한 확인 SQL  (0) 2019.08.29
tnsnames.ora 를 통한 DB 접속 테스트  (0) 2018.11.05
오라클 flashback as of timestamp 테스트  (0) 2018.10.23
다른 owner 의 테이블 truncate  (0) 2018.05.31
Posted by 돌고래트레이너
생계/OERR2019. 6. 4. 11:04

ADG 구성에서 stand by DB 에서 많이 알려진 버그.

stand by 에서 특정 뷰를 조회하면 ora-4023 에러가 발생한다. 

oracle 에 SR 진행하면 결론은 버그패치를 권고한다. 

문제를 완전해결하는 방법은 버그패치이지만 그닥 서비스에 영향이 없고

버그패치가 부담스럽다면 

alter system flush shared_pool  를 실행한다. 

 

 

반응형
Posted by 돌고래트레이너