Introduction
What is the Developer Role?
In oracle database 23c a new role has been introduced. The idea is, this role will have all of the permissions required to perform a developer function. So if you create a user ID for a developer to create and test their code, instead of granting them individual privilege's or a group of different roles, you instead grant them the DB_DEVELOPER_ROLE.
According to the manual, "The DB_DEVELOPER_ROLE role provides most of the system privileges, object privileges, predefined roles, PL/SQL package privileges, and tracing privileges that an application developer needs."
What permissions does the DB_DEVELOPER_ROLE have?
On my platform, Oracle 23c with no patches applied, I have the following permissions associated with the role
| Permission | Type of Permission |
|---|
| SELECT SYS.DBA_PENDING_TRANSACTIONS | Object |
| EXECUTE SYS.JAVASCRIPT | Object |
| READ SYS.V_$PARAMETER | Object |
| READ SYS.V_$STATNAME | Object |
| EXECUTE CTXSYS.CTX_ANL | Object |
| EXECUTE CTXSYS.CTX_DDL | Object |
| EXECUTE CTXSYS.CTX_ENTITY | Object |
| EXECUTE CTXSYS.CTX_OUTPUT | Object |
| EXECUTE CTXSYS.CTX_THES | Object |
| EXECUTE CTXSYS.CTX_ULEXER | Object |
| INSERT CTXSYS.DR$DICTIONARY | Object |
| DELETE CTXSYS.DR$DICTIONARY | Object |
| SELECT CTXSYS.DR$DICTIONARY | Object |
| UPDATE CTXSYS.DR$DICTIONARY | Object |
| INSERT CTXSYS.DR$THS | Object |
| INSERT CTXSYS.DR$THS_BT | Object |
| INSERT CTXSYS.DR$THS_FPHRASE | Object |
| UPDATE CTXSYS.DR$THS_PHRASE | Object |
| INSERT CTXSYS.DR$THS_PHRASE | Object |
| EXECUTE CTXSYS.DRIENTL | Object |
| EXECUTE CTXSYS.DRITHSL | Object |
| READ XDB.JSON$USER_COLLECTION_METADATA | Object |
| CREATE ANALYTIC VIEW | System |
| CREATE ATTRIBUTE DIMENSION | System |
| CREATE CUBE | System |
| CREATE CUBE BUILD PROCESS | System |
| CREATE CUBE DIMENSION | System |
| CREATE DIMENSION | System |
| CREATE DOMAIN | System |
| CREATE HIERARCHY | System |
| CREATE JOB | System |
| CREATE MATERIALIZED VIEW | System |
| CREATE MINING MODEL | System |
| CREATE MLE | System |
| CREATE PROCEDURE | System |
| CREATE SEQUENCE | System |
| CREATE SESSION | System |
| CREATE SYNONYM | System |
| CREATE TABLE | System |
| CREATE TRIGGER | System |
| CREATE TYPE | System |
| CREATE VIEW | System |
| DEBUG CONNECT SESSION | System |
| EXECUTE DYNAMIC MLE | System |
| FORCE TRANSACTION | System |
| ON COMMIT REFRESH | System |
| CREATE SEQUENCE | System |
| CTXAPP | Role |
| SODA_APP | Role |
| EXECUTE XDB.DBMS_SODA_ADMIN | Role |
| EXECUTE XDB.DBMS_SODA_USER_ADMIN | Role |
It is a rather eclectic set of permissions, some of which I must admit, I have never heard of. But for most developers I would imagine this is more than enough.
However, you do need to keep in mind, that if a developer has these permissions, he is likely to develop code that uses these permissions. In which, case you may need to ensure your production system has a matching set of permissions. For most security conscious DBAs, this may make you fell uncomfortable as it goes against the principle of "least amount of privileges".
Published 3rd October 2023





