lockdown profile 12c之后的权限控制新特性

来源:这里教程网 时间:2026-03-03 16:08:27 作者:

  LOCKDOWN profile

有时候用户有这样的需求,我希望不能做这个用户不能做drop truncate等操作。在12c之前,需要通过trigger来实现,但是在12c及之后,可以用过 lockdown profile的特性,来实现权限的细粒化操作。不仅仅可以限制pdb中local用户的操作,甚至是sys等common user也能限制。且不仅仅是针对表,也可以针对数据库的某些操作,比如 alter system。整个流程如下,仅供参考,(测试环境为19c-linux7-rac)  

 1   创建lockdown profile ,并设置查看

CREATE LOCKDOWN PROFILE profile_name [FROM static_base_profile | INCLUDING dynamic_base_profile ]; 例子:SQL> CREATE LOCKDOWN PROFILE test_profile;Lockdown Profile created 限制alter system操作的profileSQL> ALTER LOCKDOWN PROFILE test_profile DISABLE STATEMENT=('ALTER SYSTEM');Lockdown Profile altered. 允许flush shared poolSQL> ALTER LOCKDOWN PROFILE test_profile ENABLE STATEMENT=('ALTER SYSTEM') CLAUSE=('FLUSH SHARED_POOL');Lockdown Profile altered. 禁止droptable SQL> ALTER LOCKDOWN PROFILE test_profile DISABLE STATEMENT=('DROP TABLE');  查看 SET LINESIZE 150 COL PROFILE_NAME FORMAT a20 COL RULE FORMAT a20 COL CLAUSE FORMAT a25 SELECT PROFILE_NAME, RULE, CLAUSE, STATUS FROM CDB_LOCKDOWN_PROFILES;

2 启用和查看pdb lockdown profile

SQL> show pdbs;    CON_ID CON_NAME      OPEN MODE  RESTRICTED---------- ------------------------------ ---------- ---------- 2 PDB$SEED   READ ONLY  NO 3 pdbtest       READ WRITE  YES SQL> alter session set container=pdbtest;Session altered.--为LEIPDB的PDB启用该lockdown profile SQL> alter system set PDB_LOCKDOWN = test_profile;System altered. SQL> SHOW PARAMETER PDB_LOCKDOWNNAME          TYPE    VALUE--------  -------- ----------pdb_lockdown       string   test_profile; 

 3.   查看和测试

 

SELECT * from DBA_LOCKDOWN_PROFILES

–在当前PDB下执行其他ALTER SYSTEM命令 SQL> alter system switch logfile;alter system switch logfile*ERROR at line 1:ORA-01031: insufficient privileges flush shared pool由于enable了。所以可以执行

SQL> alter system FLUSH SHARED_POOL;
System altered.

能创建表,但是无法drop表

4.
    
修改和删除

 如果想要解除的,也很简单。 Lockdown profile支持动态修改,修改完立即生效。ALTER LOCKDOWN PROFILE test_profile ENABLE STATEMENT=('ALTER SYSTEM'); 删除lockdown profileDROP LOCKDOWN PROFILE test_profile;

相关推荐