oracle元数据查询存储过程源表,oracle元数据查询

环境:

window server 2019

oracle19c

pl/sql developer 14.0.1 x64位

参考:

oracle19.3安装和配置

说明:

"ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA.

USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息

ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息

DBA_*:有关整个数据库中对象的信息

(这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)

一、查看用户

查看当前登录用户名、创建时间、默认表空间、临时表空间:

select * from user_users;

e708d71925ba4f9ce419e5adcc822691.png

查询全部的用户信息(信息有限,不能查看默认表空间等):

select * from all_users;

35f989df95a77d35f21debaddd6699bb.png

查看全部的用户(信息全,需要dba角色):

select * from dba_users;

7f595e8674f35d236f1aa6770d97e45e.png

查看用户是否以dba身份登录:

select SYS_CONTEXT('USERENV','ISDBA') from dual;

84a5628df653fa669855ca20dfb7099b.png

a0326694755cadb0c3d62402fe2366fc.png

二、查看角色

查看所有的角色(需要已授权dba角色):

select * from dba_roles;

6d467710c2dfe898f8fe325df323af3a.png

查看当前用户拥有的角色:

select * from user_role_privs;

d67136031d152b6130eba163ed994b98.png

查看哪些用户有sysdba或sysoper系统权限(需要dba角色):

select * from V$PWFILE_USERS

e9888362899bd7b284702464f7fe234f.png

查看角色的授予情况:

select * from dba_role_privs;

d4a6dce9db21f4feb781d33d1c269ba6.png

三、查看权限

用户的权限分两类:系统权限和对象权限。

系统权限是针对用户设定的。而对象权限是用来控制用户访问其他用户模式对象的。

查看所有的系统权限:

select * from system_privilege_map;

aa48b126aa5ca015ef5ce3d0196020ed.png

查看直接授予给当前用户的系统权限:

select * from user_sys_privs;

bf6f34924f0601dab5414f4aefb3ecfd.png

查看当前用户可以使用的权限信息(将解析拥有的角色对应的权限):

select * from session_privs

fd51f40f205472a622271830826f6147.png

查看已经授予所有用户的系统权限信息(需要dba角色):

select * from dba_sys_privs

3f4092dbb52f0b7a9aac0e755e2ecc0f.png

查看当前用户的对象权限:

select * from user_tab_privs;

3d0b56bfb8da6e83cae5b92968760043.png

查看所有授予的对象权限(需要dba角色):

select * from dba_tab_privs;

707e4845798e535c759cc65a2e816a90.png

四、查询当前登录数据库信息

查看当前登录的数据库名:

select SYS_CONTEXT('USERENV','DB_NAME') from dual;

1befda463e65a2260d6da60b3f0ecee5.png

查看当前登录的实例名称:

select SYS_CONTEXT('USERENV','INSTANCE_NAME') from dual;

b181fe1d6e0ceed14cb69c27ccfc14be.png

五、查看当前用户创建的表

查看当前用户的所有表:

select * from user_tables;

35bf34c583a0b28b5c84935c102e3480.png

查看当前用户的表的表结构:

SELECT *

FROM USER_TAB_COLUMNS T, USER_COL_COMMENTS C

WHERE T.TABLE_NAME = C.TABLE_NAME

AND T.COLUMN_NAME = C.COLUMN_NAME

AND T.TABLE_NAME = UPPER('test1')

e57a6100b1321ac541cc4412a3bfd4db.png

六、查看当前用户创建的视图

查看当前用户的所有视图:

select * from user_views;

c0e634fc0256ddd0ca6e1c81506c4544.png

注意:仅给test1授予connect和resource角色并不能给test2创建视图的权限,我这里使用dba账户执行grant create view to test2;将创建视图的权限给了test2,可以查看最终的权限效果:

37c964740cddae4e0d0caf48c7f8f7ca.png

七、查看当前用户创建的存储过程

查看当前用户创建的所有存储过程:

准备存储过程:

/*****

** 创建加、减、乘、除计算的存储过程

**输入参数: 数字1,数字2,计算类型

**输出参数: 数字3

*****/

create or replace procedure Proc_Test

(

--定义输入、输出参数--

num_A in integer,

num_B in integer,

numType in integer,

num_C out integer

)

as

--定义变量--

-- numCount integer;

-- numStr varchar(20);

begin

--判断计算类型--

if numType=1 then

num_C := num_A + num_B;

elsif numType=2 then

num_C := num_A - num_B;

elsif numType=3 then

num_C := num_A * num_B;

elsif numType=4 then

num_C := num_A / num_B;

else

--其它处理

dbms_output.put_line('其它处理');

end if;

end;

-- 调用存储过程

declare num_C integer;

begin

--调用存储过程---

Proc_Test(3,4,3,num_C);

dbms_output.put_line('输出结果:'|| num_C );

end;

上面存储过程的调用结果:

01672dd34419f5b6a3d3f4928ade216d.png

select * from user_procedures;

a5d59a4ee05ffe77b717dd922b029a11.png

查看存储过程定义语句:

select * FROM user_source WHERE NAME ='PROC_TEST' ORDER BY line;

1a0374dd371adcc4f9b6950080e1da63.png

八、查看当前用户创建的序列

准备序列:

create sequence t_user_id_seq start with 1 increment by 1;

select * from user_sequences;

28dd8c1aa68a0bfa789dba6ff95d3984.png

九、查看当前用户创建的触发器

参照:《oracle创建触发器》

这里,我们使用上面创建的序列结合触发器实现表列自增的效果,准备表:

create table t_user (

id number(10),

name varchar2(20) not null,

phone_Number varchar2(20),

email_Address varchar2(200) not null,

home_Address varchar2(200) not null,

constraint pk_user primary key (id)

);

创建触发器:

create or replace trigger t_user_trigger

before insert on t_user

for each row

when(new.id is null)

begin

select t_user_id_seq.nextval into:NEW.ID from dual;

end;

测试自增效果:

e0982abae8b4a880315be2a9929f00a1.png

注意:由于当前用户仅授予了connect、resource、create view权限,所以还不能插入数据到表t_user中,此时我们使用dba账户执行grant unlimited tablespace to test2后就可以插入了。

查看创建的触发器:

select * from user_triggers;

049f547455c4ddac5e4bd3ecc1723a58.png

查看触发器语句及其他信息:

0a466a73ff233650f20adee5e71935da.png

十、查看当前用户创建的函数

准备函数:

CREATE OR REPLACE FUNCTION func_add (

x int,

y int

) RETURN int IS

res int;

BEGIN

return x+y;

END;

调用:

DECLARE results NUMBER;

BEGIN

results :=func_add(2,3);

DBMS_OUTPUT.PUT_LINE('输出: 2+3='||results);

END;

输出:

ef069db917e50f70e81f3a8096c900ee.png

查看函数:

select * from USER_OBJECTS where OBJECT_TYPE='FUNCTION';

db8f589a9437bfdaf44ef8ec54e699e6.png

查看函数语句:

select * from USER_SOURCE where TYPE='FUNCTION' and NAME='FUNC_ADD'

c998831e30415de6073bd348911d6b2a.png

十一、查看当前用户创建的索引

select * from user_indexes;

c68a4f23afd572ada9d90299f205e98b.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值