oracle 基本查询等操作 超、凢脫俗 2022-06-02 06:05 183阅读 0赞 1.查看所有用户: **select** \***from** dba\_users; **select** \***from** all\_users; **select** \***from** user\_users; 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): **select** \***from** dba\_sys\_privs; **select** \* **from** user\_sys\_privs; (查看当前用户所拥有的权限) 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限 **select** \***from** role\_sys\_privs; 4.查看用户对象权限: **select** \***from** dba\_tab\_privs; **select** \***from** all\_tab\_privs; **select** \***from** user\_tab\_privs; 5.查看所有角色: **select** \***from** dba\_roles; 6.查看用户或角色所拥有的角色: **select** \***from** dba\_role\_privs; **select** \***from** user\_role\_privs; 7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限) **select** \***from** V$PWFILE\_USERS 8.SqlPlus中查看一个用户所拥有权限 **select** \* **from** dba\_sys\_privs **where** grantee='username'; 其中的username即用户名要大写才行。 比如: SQL>**select** \* **from** dba\_sys\_privs **where** grantee='TOM'; 9、Oracle删除指定用户所有表的方法 **select** 'Drop table '||table\_name||';' **from** all\_tables **where** owner='要删除的用户名(注意要大写)'; 10、删除用户 **drop** user user\_name **cascade**; 如:**drop** userSMCHANNEL **CASCADE** 11、获取当前用户下所有的表: **select** table\_name**from** user\_tables; 12、删除某用户下所有的表数据: **select** 'truncatetable ' || table\_name **from** user\_tables; 13、禁止外键 ORACLE数据库中的外键约束名都在表user\_constraints中可以查到。 其中constraint\_type='R'表示是外键约束。 启用外键约束的命令为:**alter table** table\_nameenable **constraint**constraint\_name 禁用外键约束的命令为:**alter table** table\_namedisable **constraint**constraint\_name 然后再用SQL查出数据库中所以外键的约束名: **select** 'altertable '||table\_name||' enable constraint '||constraint\_name||';' **from**user\_constraints **where** constraint\_type='R' **select** 'altertable '||table\_name||' disable constraint '||constraint\_name||';' **from**user\_constraints **where** constraint\_type='R' 14、ORACLE禁用/启用外键和触发器\--启用脚本 **SET** SERVEROUTPUT**ON SIZE** 1000000 **BEGIN** **for** c in (**select** 'ALTERTABLE '||TABLE\_NAME||' ENABLE CONSTRAINT '||constraint\_name||' ' **as** v\_sql **from**user\_constraints **where** CONSTRAINT\_TYPE='R') loop DBMS\_OUTPUT.PUT\_LINE(C.V\_SQL); **begin** **EXECUTE** IMMEDIATEc.v\_sql; exception **when** others **then** dbms\_output.put\_line(sqlerrm); **end**; **end** loop; **for** c in (**select** 'ALTERTABLE '||TNAME||' ENABLE ALL TRIGGERS ' **AS**v\_sql **from** tab **where** tabtype='TABLE') loop dbms\_output.put\_line(c.v\_sql); **begin** **execute** immediatec.v\_sql; exception **when** others **then** dbms\_output.put\_line(sqlerrm); **end**; **end** loop; **end**; / **commit**; \--禁用脚本 **SET** SERVEROUTPUT**ON SIZE** 1000000 **BEGIN** **for** c in (**select** 'ALTERTABLE '||TABLE\_NAME||' DISABLE CONSTRAINT '||constraint\_name||' ' **as** v\_sql **from**user\_constraints **where** CONSTRAINT\_TYPE='R') loop DBMS\_OUTPUT.PUT\_LINE(C.V\_SQL); **begin** **EXECUTE** IMMEDIATEc.v\_sql; exception **when** others **then** dbms\_output.put\_line(sqlerrm); **end**; **end** loop; **for** c in (**select** 'ALTERTABLE '||TNAME||' DISABLE ALL TRIGGERS ' **AS**v\_sql **from** tab **where** tabtype='TABLE') loop dbms\_output.put\_line(c.v\_sql); **begin** **execute** immediatec.v\_sql; exception **when**others **then** dbms\_output.put\_line(sqlerrm); **end**; **end** loop; **end**; / **commit**;
还没有评论,来说两句吧...