Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
Ranger 정잭을 저장하는 table은 x_policy 이다.
policy설정 정보는 policy_text 컬럼에 json형식으로 들어 있다.
1. Oracle의 경우 column이 속성이 clob이므로 다음과 같이 조회한다.
select id, dbms_lob.substr(policy_text, dbms_lob.getlength(policy_text),1) from x_policy where name = 'test';
2. json문자열을 추출하여 필요한 element를 수정후 다음과 같이 update한다.
예를들어, table을 여러개 지정하려면 table하위 values에 ["a","b","c"]로 지정한다
3. update x_policy set policy_text=to_clob('수정된 json문자열')
where id=12345;
로 x_policy table내용을 수정해준다, json문자열의 길이가 4000을 넘으면 오류가 발생하므로 to_clob('수정된 json문자열 일부') || to_clob('수정된 json문자열 일부') 와 같이 해주면 4000바이트 이성의 문자열도 update가능하다.