Oracle数据库怎么查询所有用户下自定义数据类型的表

Oracle数据库怎么查询所有用户下自定义数据类型的表,第1张

select from all_tables u where uowner='ZHHY_USER';-- ZHHY_USER是数据库用户

select from all_tab_columns c where cOWNER='ZHHY_USER';

使用该语句的前提是该用户要具有查询系统表的权限

使用具有dba权限的帐号登录数据库

执行命令"select

username

from

dba_users"

官方文档对dba_users的定义:DBA_USERS

describes

all

users

of

the

database因此可以如此查询。

1、创建测试表,

create table test_cols(id varchar2(20),remark varchar2(20),ex_filed1 varchar2(20),ex_filed2 varchar2(20));

2、编写sql,查看系统视图,可以看到该用户下所有表的字段信息,select from user_tab_cols;

3、编写sql,查询刚创建的表,字段信息,select from user_tab_cols t where table_name = 'TEST_COLS';

4、编写sql,查询该表的字段数,这样对于字段较多的表,结果更明显;

 select count(distinct column_name) from user_tab_cols t where table_name = 'TEST_COLS'

DBA用CREATE USER语句创建用户格式:CREATE USER userIDENTIFIED BY password范例:CREATE USER scottIDENTIFIED BY tiger使用系统权限一旦一个用户被创建,DBA能够授予指定的系统权限给一个用户格式:GRANT privileg [,privilege]TO user [,user |role ,PUBLIC];应用程序的开发者,例如,可能有下面典型的用户权限CREATE SESSIOIN 连接到数据库CREATE TABLE 在用户的方案中创建表CREATE SEQUENCE 在用户的方案中创建序列CREATE VIEW 在用户的方案中创视图CREATE PROCEDURE在用户的方案中创建存储过程,函数或包授予系统权限DBA能够授予用户指定的系统权限GRANT create session,create table, create sequence,create viewTO scott;创建角色并且授予权限给角色示例1、创建角色CREATE ROLE manager;2、授予权限给一个角色GRANT create table,create view TO manager;3、授予一个角色给用户GRANT manager TO DEHAAN,KOCHHAR;

(1)查看权限,sys用户有对其他用户增删改的权限才行。如果没有,还确实需要用sys用户 *** 作,那么请用dba用户授权。

(2)如果权限没问题,那么在增删改的时候只要加上用户名就可以了。比如,用户a的table表。那么就是 insert into atable values ('''''''''''),删改也类似。

ORACLE下有三个视图

DBA_TABLES 拥有DBA角色的用户可以查看系统中的所有表

USER_TABLES 登录数据库的当前用户拥有的所有表

ALL_TABLES 登录数据库的当前用户有权限查看的所有表

类似的,除了表,还有视图、存储过程、同义词等等对象,使用[DBA|USER|ALL]_TABLES可以查看到你想要的对象

可直接在 v$session视图中查询。

语句如:

select  from v$session where username='用户名';

其中用户名应为英文大写字母。如图:

以下为视图各字段说明:

SADDR - session address

SID - session identifier 常用于链接其他列

SERIAL# - SID有可能会重复,当两个session的SID重复时,SERIAL#用来区别session(说白了某个session是由sid和serial#这两个值确定的)

AUDSID - audit session id。可以通过audsid查询当前session的sid。select sid from v$session where audsid=userenv('sessionid');

PADDR - process address,关联v$process的addr字段,通过这个可以查询到进程对应的session

USER# - 同于dba_users中的user_id,Oracle内部进程user#为0

USERNAME - session's username。等于dba_users中的username。Oracle内部进程的username为空。

COMMAND - session正在执行的sql id,1代表create table,3代表select。

TADDR - 当前的transaction address。可以用来关联v$transaction中的addr字段。

LOCKWAIT - 可以通过这个字段查询出当前正在等待的锁的相关信息。sid + lockwait与v$loc中的sid + kaddr相对应。

STATUS - 用来判断session状态。Active:正执行SQL语句。inactive:等待 *** 作。killed:被标注为杀死。

SERVER - 服务类型。

SCHEMA# - schema user id。Oracle内部进程的schema#为0。

SCHEMANAME - schema username。Oracle内部进程的为sys。

OSUSER - 客户端 *** 作系统用户名。

PROCESS - 客户端process id。

MACHINE - 客户端machine name。

TERMINAL - 客户端执行的terminal name。

PROGRAM - 客户端应用程序。比如ORACLEEXE或sqlplusexe

TYPE - session类型。

SQL_ADDRESS,SQL_HASH_VALUE,SQL_ID,SQL_CHILD_NUMBER - session正在执行的sql状态,和v$sql中的address,hash_value,sql_id,child_number对应。

PREV_SQL_ADDR,PREV_HASH_VALUE,PREV_SQL_ID,PREV_CHILD_NUMBER - 上一次执行的sql状态。

MODULE,MODULE_HASH,ACTION,ACTION_HASH,CLIENT_INFO - 应用通过DBMS_APPLICATION_INFO设置的一些信息。

FIXED_TABLE_SEQUENCE - 当session完成一个user call后就会增加的一个数值,也就是说,如果session挂起,它就不会增加。因此可以根据这个字段来监控某个时间点以来的session性能情况。例如,一个小时前某个session的此字段数值为10000,而现在是20000,则表明一个小时内其user call较频繁,可以重点关注此session的performance statistics。

ROW_WAIT_OBJ# - 被锁定行所在table的object_id。和dba_object中的object_id关联可以得到被锁定的table name。

ROW_WAIT_FILE# - 被锁定行所在的datafile id。和v$datafile中的file#关联可以得到datafile name。

ROW_WAIT_BLOCK# - 同上,对应块。

ROW_WAIT_ROW# - session当前正在等待的被锁定的行。

LOGON_TIME - session logon time

以上就是关于Oracle数据库怎么查询所有用户下自定义数据类型的表全部的内容,包括:Oracle数据库怎么查询所有用户下自定义数据类型的表、oracle数据库怎么查询用户名、oracle数据库怎么查询某个表有多少个字段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9520670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存