oracle数据库如何查看表的表分区的信息(每个表分区的名字和所属表空间)

oracle数据库如何查看表的表分区的信息(每个表分区的名字和所属表空间),第1张

USER_TAB_PARTITIONS:可查看分区表的名字、归属表空间以及表的详细分区情况。

USER_PART_TABLES:可查看用户所有的分区表,以及分区方式。

希望能帮到你。

1、查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;select status,enabled, name, bytes/1024/1024 file_size from v_$tempfile;--sys用户查看2、缩小临时表空间大小

alter database tempfile 'D:\ORACLE\PRODUCT\1020\ORADATA\TELEMT\TEMP01DBF' resize 100M;3、扩展临时表空间:

方法一、增大临时文件大小:

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01dbf’ resize 100m;方法二、将临时数据文件设为自动扩展:

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01dbf’ autoextend on next 5m maxsize unlimited;方法三、向临时表空间中添加数据文件:

SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02dbf’ size 100m;4、创建临时表空间:

SQL> create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/temp11dbf’ size 10M;5、更改系统的默认临时表空间:

--查询默认临时表空间

select from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';--修改默认临时表空间

alter database default temporary tablespace temp1;所有用户的默认临时表空间都将切换为新的临时表空间:

select username,temporary_tablespace,default_ from dba_users;--更改某一用户的临时表空间:

alter user scott temporary tablespace temp;6、删除临时表空间

删除临时表空间的一个数据文件:

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp02dbf’ drop;删除临时表空间(彻底删除):

SQL> drop tablespace temp1 including contents and datafiles cascade constraints;7、查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小dba_temp_files视图的bytes字段记录的是临时表空间的总大小SELECT temp_usedtablespace_name,

total - used as "Free",

total as "Total",

round(nvl(total - used, 0) 100 / total, 3) "Free percent"FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 usedFROM GV_$TEMP_SPACE_HEADER

GROUP BY tablespace_name) temp_used,

(SELECT tablespace_name, SUM(bytes) / 1024 / 1024 totalFROM dba_temp_files

GROUP BY tablespace_name) temp_total

WHERE temp_usedtablespace_name = temp_totaltablespace_nameORDER BY BTABLESPACE, BSEGFILE#, BSEGBLK#, BBLOCKS;

1查看scott用户的默认表空间、临时表空间

select username,default_tablespace,temporary_tablespace

from dba_users

where username = 'SCOTT';

2查看scott用户的系统权限

select username,privilege,admin_option

from user_sys_privs

where username = 'SCOTT';

3查看赋予scott用户的对象权限

select grantee,owner, table_name, tgrantor, tprivilege, tgrantable, thierarchy

from dba_tab_privs t

where tgrantee = 'SCOTT' ;

GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY

SCOTT SYS DUMP_DIR SYS WRITE NO NO

SCOTT SYS DUMP_DIR SYS READ NO NO

这里主要是赋予了scott用户对目录dump_dir的读写权限

查询 dba_tab_privs就是查询赋予这个用户(角色)的对象权限

用下面这种方式查询获取不到结果

select

from user_tab_privs t

没有记录

但是执行下面命令后

grant select on emp to sys;

select

from user_tab_privs t

GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY

SYS SCOTT EMP SCOTT SELECT NO NO

可以得到结论,这个视图查询的只是通过这个用户自己赋予出去的对象权限,而不是别人赋予他的,注意跟dba_tab_privs的差别

4查看授予了scott的角色权限

select tgrantee,tgranted_role, tadmin_option, tdefault_role

from dba_role_privs t

where tgrantee = 'SCOTT';

GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE

SCOTT RESOURCE NO YES

SCOTT CONNECT NO YES

或者

select

from user_role_privs t

USERNAME GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE OS_GRANTED

SCOTT CONNECT NO YES NO

SCOTT RESOURCE NO YES NO

这里授予了scott用户resource、connect角色拥有的权限,并且不能将这些权限赋给其他人

5查看scott用户使用了哪些表空间

select ttable_name, ttablespace_name

from dba_all_tables t

where towner = 'SCOTT' ;

TABLE_NAME TABLESPACE_NAME

DEPT USERS

EMP USERS

BONUS USERS

SALGRADE USERS

TEST USERS

SYS_EXPORT_SCHEMA_01 TEST_TBS

这个是由scott用户用expdp从源端数据库导出数据时的job_name,dba_all_tables查出的是跟用户的对象以及相关对象,文档是这么说的:

1DBA_ALL_TABLES describes all object tables and relational tables in the database

Its columns are the same as those in ALL_ALL_TABLES

2ALL_ALL_TABLES describes the object tables and relational tables accessible to the current user

3USER_ALL_TABLES describes the object tables and relational tables owned by the current user

Its columns (except for OWNER) are the same as those in ALL_ALL_TABLES

查看的方法和详细的 *** 作步骤如下:

1、首先,因为oracle在Linux系统下运行,所以必须连接到Linux系统,如下图所示,然后进入下一步。

2、其次,完成上述步骤后,连接成功,进入Oracle控制台。

 输入命令“sqlplus / as sysdba”,如下图所示,然后进入下一步。

3、接着,完成上述步骤后,在sql命令行上,输入以下代码,如下图所示,然后进入下一步。

4、最后,完成上述步骤后,就可以查看相应的结果了,如下图所示。这样,问题就解决了。

用具有dba权限的用户,执行下面的命令,查询目前表空间的使用率

select from dba_tablespace_usage_metrics;

可以将这个查询结果每天保存一次,就能观察到表空间的增长状况了。

oracle数据库中,查询素有表空间的名称只需要一条sql语句即可:

select tablespace_name  from user_tablespaces;

结果输出如下图:

在上式的sql中,“user_tablespaces”即为表空间信息所在表,所需的表空间信息需要从该表中获取,“tablespace_name”即为表空间名称,

如果希望查询所有表空间名称和其他相关信息,可以将使用如下sql语句:

select from user_tablespaces;

结果输出如下:

扩展资料:

针对表空间,还有其他的查询可供参考:

1、查看表空间的名称及对应大小

SELECT ttablespace_name, round(SUM(bytes / (1024 1024)), 0) ts_size FROM

dba_tablespaces t, dba_data_files d WHERE ttablespace_name =

dtablespace_name GROUP BY ttablespace_name;

输出结果如下:

2、查看表空间物理文件的名称及大小

SELECT tablespace_name, file_id, file_name, round(bytes / (1024 1024), 0) total_space

FROM dba_data_files ORDER BY tablespace_name;

输出结果为:

3、查询当前用户所有表名及其所属表空间

select table_name 表名 ,tablespace_name 所使用表空间 from user_tables;

输出结果为:

打字太费劲了。

第一个是db2的日志问题。db2数据库的日志有两种模式,一种是循环日志,一种是归档模式。你的说法有问题,如果是循环日志的话,根据你的数据库里配置的三个参数,主日志文件和辅助日志文件数及日志大小文件,总的日志大小不会超过(总日志文件数与日志大小的乘积),然后是循环使用的,也就是说,如果数据库进行一次事务 *** 作时,先生成第一个主日志文件(受日志文件大小参数)控制,不足时生成第二个主日志文件,当一次事务超过所有的主日志文件时,才会创建辅助日志文件),然后下次覆盖第一个,依次循环,所以循环日志模式,日志文件大小不是无限增大的。只有在归档模式下才会不断产生日志文件,这种模式的好处是数据库可以恢复到任意时点。查看数据库日志的模式时,可以在db2=>命令行下connect to db name 然后 db2=> get db cfg for dbname

会看到有如下几个参数与日志有关系:

启用的恢复的日志保留 (LOGRETAIN) = OFF

启用的日志记录的用户出口 (USEREXIT) = OFF

日志文件大小(4KB) (LOGFILSIZ) = 1024

主日志文件的数目 (LOGPRIMARY) = 13

辅助日志文件的数目 (LOGSECOND) = 4

已更改的至日志文件的路径 (NEWLOGPATH) =

日志文件路径 = D:\DB2\NODE0000\SQL00002\SQLOGDIR\

溢出日志路径 (OVERFLOWLOGPATH) =

镜像日志路径 (MIRRORLOGPATH) =

首个活动日志文件 =

可以看出这里的数据库是运行于循环日志模式,第一个参数是off,如果是on则处于归档模式。下边有日志文件的路径,如果是归档模式,还可以查看到首个活动日志文件,则可以备份归档日志后,删除活动日志以前的归档日志文件。因此你说的按天的日志不知道是什么意思。更改上述参数采用 update db cfg using

第二个问题:db2的数据库数据是存储在表里的,表是位于表空间的,表空间对应的表空间容器物理文件存储在文件系统上。随着数据量的增大,分区容量不够时,一种方法是备份数据库,然后使用[重定向]还原数据库,将数据库的表空间容器重定向到一个存储量大的目录或者磁盘上。另一种方法是,直接为该表空间增加新的表空间容器,就可以了。比较简单,在此不在详述。

查看表空间信息时db2=>connect to dbname

db2=>list tablespaces

看到用户定义的表空间的编号,一般是3以后的。

然后

db2=>list tablespace containers for 3

可以查看3号表空间对应的表空间容器信息,一个表空间可以有多个表空间容器,这些表空间容器可以位于不同的磁盘和文件目录上,这样可以解决某个硬盘或者目录容量不足的问题。

给表空间增加容器的方法就不用讲了,直接alter tablespace语句就行了。

--1、查看表空间的名称及大小

select

ttablespace_name,

round(sum(bytes/(10241024)),0)

ts_size

from

dba_tablespaces

t,

dba_data_files

d

where

ttablespace_name

=

dtablespace_name

group

by

ttablespace_name;

--2、查看表空间物理文件的名称及大小

select

tablespace_name,

file_id,

file_name,

round(bytes/(10241024),0)

total_space

from

dba_data_files

order

by

tablespace_name;

3查看所有表空间使用情况

select

bfile_id

文件ID号,

btablespace_name

表空间名,

bbytes/1024/1024||'M'字节数,

(bbytes-sum(nvl(abytes,0)))/1024/1024||'M'

已使用,

sum(nvl(abytes,0))/1024/1024||'M'

剩余空间,

round(100

-

sum(nvl(abytes,0))/(bbytes)100,2)||

'%'

占用百分比

from

dba_free_space

a,dba_data_files

b

where

afile_id=bfile_id

group

by

btablespace_name,bfile_id,bbytes

order

by

bfile_id;

总有一款适合你!

以上就是关于oracle数据库如何查看表的表分区的信息(每个表分区的名字和所属表空间)全部的内容,包括:oracle数据库如何查看表的表分区的信息(每个表分区的名字和所属表空间)、如何查看临时表空间的大小和剩余空间、怎么查看sys用户的永久表空间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存