查看的方法和详细的 *** 作步骤如下:
1、首先,因为oracle在Linux系统下运行,所以必须连接到Linux系统,如下图所示,然后进入下一步。
2、其次,完成上述步骤后,连接成功,进入Oracle控制台。
输入命令“sqlplus / as sysdba”,如下图所示,然后进入下一步。
3、接着,完成上述步骤后,在sql命令行上,输入以下代码,如下图所示,然后进入下一步。
4、最后,完成上述步骤后,就可以查看相应的结果了,如下图所示。这样,问题就解决了。
select
bfile_name 物理文件名,
btablespace_name 表空间,
bbytes/1024/1024 大小M,
(bbytes-sum(nvl(abytes,0)))/1024/1024 已使用M,
substr((bbytes-sum(nvl(abytes,0)))/(bbytes)100,1,5) 利用率
from dba_free_space a,dba_data_files b
where afile_id=bfile_id
group by btablespace_name,bfile_name,bbytes
order by btablespace_name
该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。
上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。
工具/原料
CRT
方法/步骤
因为oracle运行在Linux系统下,首先,要连接Linux系统。
连上后,进行oracle控制台。输入命令:sqlplus/assysdba;
在oracle命令行中,输入:
selectt1name,t2name
fromv$tablespacet1,v$datafilet2
wheret1ts#=t2ts#;
这样就可以查看oracle数据库的表空间数据文件位置了。
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 used
FROM GV_$TEMP_SPACE_HEADER
GROUP BY tablespace_name) temp_used,
(SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total
FROM dba_temp_files
GROUP BY tablespace_name) temp_total
WHERE temp_usedtablespace_name = temp_totaltablespace_name
ORDER BY BTABLESPACE, BSEGFILE#, BSEGBLK#, BBLOCKS;
希望能帮到您!
--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;
总有一款适合你!
一 查询某个表所在表空间的简单方法
PostgreSQL 提供类似" \ "命令很方便得到相关信息,命令如下:
skytf=> \d test_2
Table "skytftest_2"
Column | Type | Modifiers
--------+-----------------------+-----------
id | integer |
obj_id | integer | not null
name | character varying(64) |
Indexes:
"idx_hash_name" hash (name)
"idx_test_2" btree (id, obj_id)
Tablespace: "tbs_skytf_idx"
备注:如果这个表的表空间为当前数据库的默认表空间,那么上面则不会显示 Tablespace 信息,
相反,则会显示这张有的表空间,例如上面的表 test_2 的表空间为 tbs_skytf_idx,而
表空间 "tbs_skytf_idx" 不是数据库 skytf 的默认表空间, 那么如何查询数据库的默认
表空间呢,可以通过以下命令查询。
--11 查询数据库的默认表空间
skytf=> select datname,dattablespace from pg_database where datname='skytf';
datname | dattablespace
---------+---------------
skytf | 14203070
(1 row)
skytf=> select oid,spcname from pg_tablespace where oid=14203070;
oid | spcname
----------+-----------
14203070 | tbs_skytf
(1 row)
备注:通过以上查出数据库 skytf 的默认表空间为 tbs_skytf。
二 批量查询数据库表和索引的表空间
--21 查询表和索引所在的表空间
select relname, relkind, relpages,pg_size_pretty(pg_relation_size(aoid)), tbspcname
from pg_class a, pg_tablespace tb
where areltablespace = tboid
and arelkind in ('r', 'i')
order by arelpages desc;
备注:上面只取了部分结果,这个查询能够查询表和索引所处的表空间,但是有一点需要注意,这个查询
仅显示表空间不是数据库默认表空间的数据库对像,而我们通常需要查出位于数据库默认表空间的
对像,显然上面的查询不是我们想要的,接下来看另一个查询。
--22 查询位于默认数据库表空间的对像
select relname, relkind, relpages,pg_size_pretty(pg_relation_size(aoid)),reltablespace,relowner
from pg_class a
where arelkind in ('r', 'i')
and reltablespace='0'
order by arelpages desc;
备注:这个查询加入限制条件 reltablespace='0',即可查找出位于当前数据库默认表空间的
数据库表和索引。 通常这才是我们想要的结果,接下来可以把部分表转移到其它表空间上去,转移
的方法可以用 "ALTER TABLE move tablespace "或者重建索引移表空间等方法,这里不详细介绍。
--23 查询在某个表空间上的对像
select relname, relkind, relpages,pg_size_pretty(pg_relation_size(aoid)),reltablespace,relowner
from pg_class a, pg_tablespace tb
where arelkind in ('r', 'i')
and areltablespace=tboid
and tbspcname='tablespace_name'
order by arelpages desc;
--24 手册上对于 pgclass 视图的 reltablespace 字段解释
The tablespace in which this relation is stored If zero, the database is default tablespace is
implied (Not meaningful if the relation has no on-disk file)
以上就是关于怎么察看Oracle 数据库表空间的使用情况全部的内容,包括:怎么察看Oracle 数据库表空间的使用情况、如何查询Oracle表空间和数据文件信息、oracle怎么查表空间的路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)