We have various levels of security (inside and outside
of Oracle database) that can be implemented according to one's requirements.
Mentioned here is a way of implementing security against structural changes or
Data Definition Language (DDL) changes. This security is put within the
database for logical objects.
What it means for the DBA
DDL commands are critical and cannot be rolled back. As a
norm, new developments/changes should be done on test boxes before promoting
them to Production. Such promotions to production can be done as scheduled
upgrades during off-peak hours or when a maintenance window is available as
system downtime. At all other times the system should be up and running as
DDL event security is aimed at preventing structural changes
when the site application is up and running. An application user may never fire
such commands explicitly or may not have access to do so, but then, this
security can be implemented in general and not aimed at a specific set of
users. For example, a script may be fired on the production database by the IT
Commands such as CREATE, ALTER, DROP and TRUNCATE can be
tracked and audited or prevented from executing. The requirement here is to
maintain the stability and availability of the system and prevent mishaps when
the users are working.
The idea is to track down DDL commands when they are fired.
This can be done using system event triggers introduced in Oracle 8i. Mentioned
below is a simple process that I use at my site. If you plan to set up
something similar, you can use the code below or modify it as per your needs.