Database/Oracle
ORACLE|권한(Grant) 자동화
어느가을빛
2011. 8. 5. 14:34
# <유저A>의 객체를 <유저B>에게 권한 부여
BEGIN
FOR REC IN (SELECT OBJECT_NAME, OBJECT_TYPE
FROM ALL_OBJECTS
WHERE OWNER='유저A'
AND OBJECT_TYPE IN ('TABLE','VIEW','PROCEDURE','FUNCTION','PACKAGE')
)
LOOP
BEGIN
IF REC.OBJECT_TYPE IN ('TABLE', 'VIEW') THEN
EXECUTE IMMEDIATE 'GRANT INSERT, UPDATE, DELETE, SELECT ON 유저A.' || REC.OBJECT_NAME || ' TO 유저B';
ELSIF REC.OBJECT_TYPE IN ('PROCEDURE', 'FUNCTION', 'PACKAGE') THEN
EXECUTE IMMEDIATE 'GRANT EXECUTE ON 유저A.' || REC.OBJECT_NAME||' TO 유저B';
END IF;
EXECUTE IMMEDIATE 'CREATE SYNONYM 유저B.' || REC.OBJECT_NAME || ' FOR 유저A.' || REC.OBJECT_NAME;
EXCEPTION
WHEN OTHERS THEN NULL;
END;
END LOOP;
END;