2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 查看表空间 schema和表空间下所有表相关理解

查看表空间 schema和表空间下所有表相关理解

时间:2022-08-13 22:48:17

相关推荐

查看表空间 schema和表空间下所有表相关理解

数据字典:dba_users、dba_tables、dba_tablespaces、Dba_Segments

1.查看所有表空间

select * from Dba_Tablespaces;

呈现的信息表空间名称以及表空间的大小等。

2.查看表空间下所有的表

select TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME=‘表空间名’;

3.查看用户默认表空间

select username,default_tablespace from dba_users order by username;

3.1查看当前用户默认表空间

select * from user_users;

4.查看所有schema

select username from sys.dba_users;

5.查看schema下所有的表

select table_name from dba_tables where owner=‘schema名称’;

6. 统计ORACLE schema下所有表大小包含clob,blob

schema下的空间主要有两类表的空间和clob的空间。

SELECT Owner,SUM(Dx) dxFROM (SELECT Owner,SUM(Bytes) / 1024 / 1024 / 1024 AS DxFROM Dba_Segments/*WHERE (Owner, Segment_Name) IN (SELECT Owner,Table_NameFROM Dba_TablesWHERE Owner = '&schema')*/GROUP BY OwnerUNION ALLSELECT Lob.Owner,SUM(Seg.Bytes) / 1024 / 1024 / 1024 AS DxFROM Dba_LobsLob,Dba_Segments SegWHERE Lob.Segment_Name = Seg.Segment_Name--AND Lob.Owner = '&schema'GROUP BY Lob.Owner,Lob.Table_Name)GROUP BY OwnerORDER BY 1 DESC;

7.schema的理解

在Oracle中,一个用户就是一个Schema,表都是建立在Schema中的,也可以理解为每个用户拥有不同的表。一个用户想访问另外一个用户,也就是另外一个schema的表的时候,

可以用 username.tablename的形式来访问,完全不需要分布式事务。分布式事务不是给你做这个用的。

Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决。

Oracle在创建一个用户的同时会为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。

深入理解user和schema的区别

不同的schema之间它们没有直接的关系,不同的shcema之间的表可以同名, 也可以互相引用(但必须有权限),在没有操作别的schema的操作根权下, 每个用户只能操作它自己的schema下的所有的表。不同的schema下的同名的表, 可以存入不同的数据(即schema用户自己的数据)。 好比一个房子,里面放满了家具,对这些家具有支配权的是房子的主人(user),而不是房子(schema)。

你可以也是一个房子的主人(user),拥有自己的房子(schema)。可以通过alter session的方式

进入别人的房子。 这个时候,你可以看到别人房子里的家具(desc)。 如果你没有特别指定的话,你所做的操作都是针对你当前所在房子中的东西。 至于你是否有权限使用(select)、搬动(update)或者拿走(delete)这些家具就看这个房子的

主人有没有给你这样的权限了,或者你是整个大厦(DB)的老大(DBA)。

如果你想调用其他schema的对象(有权限的前提下),但并没有建synonym, 同时又不想把其他schema名字放入代码中,就可以首先使用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。