Oracle 查看表空间大小及其扩展

  在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段、区、块等逻辑结构。从物理结构上看是放在数据文件中。一个表空间可由多个数据文件组成。系统中默认创建的几个表空间:SYSTEM,SYSAUX,USERS,UNDOTBS1,EXAMPLE,TEMP还有用户自己建立的表空间,可以对其进行分成三类

  永久表空间                存放永久性数据,如表,索引等。

  临时表空间                不能存放永久性对象,用于保存数据库排序,分组时产生的临时数据。

  UNDO表空间             保存数据修改前的镜象。

我们可以通过下面几个系统视图查看基本信息:

--包含数据库中所有表空间的描述信息

SELECT * FROM DBA_TABLESPACES

--包含当前用户的表空间的描叙信息

SELECT * FROM USER_TABLESPACES

--包含从控制文件中获取的表空间名称和编号信息

SELECT * FROM V$TABLESPACE;

查看数据文件

--包含数据文件以及所属的表空间的描述信息

SELECT * FROM DBA_DATA_FILES

--包含临时数据文件以及所属的表空间的描述信息

SELECT * FROM DBA_TEMP_FILES

--包含从控制文件中获取的数据文件的基本信息,包括它所属的表空间名称、编号等

SELECT * FROM V$DATAFILE

--包含所有临时数据文件的基本信息

SELECT * FROM V$TEMPFILE

可以使用以下脚本查看数据库表空间使用情况:

SQL1:

SELECT DBF.TABLESPACE_NAME,

DBF.TOTALSPACE "总量(M)",

DBF.TOTALBLOCKS AS 总块数,

DBF.TOTALSPACE-DFS.FREESPACE "使用量(M)",

DBF.TOTALBLOCKS-DFS.FREEBLOCKS AS 使用块数,

DFS.FREESPACE "剩余总量(M)",

DFS.FREEBLOCKS "剩余块数",

(DFS.FREESPACE / DBF.TOTALSPACE) * 100 "空闲比例"

FROM (SELECT T.TABLESPACE_NAME,

SUM(T.BYTES) / 1024 / 1024 TOTALSPACE,

SUM(T.BLOCKS) TOTALBLOCKS

FROM DBA_DATA_FILES T

GROUP BY T.TABLESPACE_NAME) DBF,

(SELECT TT.TABLESPACE_NAME,

SUM(TT.BYTES) / 1024 / 1024 FREESPACE,

SUM(TT.BLOCKS) FREEBLOCKS

FROM DBA_FREE_SPACE TT

GROUP BY TT.TABLESPACE_NAME) DFS

WHERE TRIM(DBF.TABLESPACE_NAME) = TRIM(DFS.TABLESPACE_NAME);

SQL2:

SELECT A.TABLESPACE_NAME,

A.BYTES/ 1024 / 1024 TOTAL,

B.BYTES/ 1024 / 1024 USED,

C.BYTES/ 1024 / 1024 FREE,

(B.BYTES * 100) / A.BYTES "% USED ",

(C.BYTES * 100) / A.BYTES "% FREE "

FROM SYS.SM$TS_AVAIL A, SYS.SM$TS_USED B, SYS.SM$TS_FREE C

WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME

AND A.TABLESPACE_NAME = C.TABLESPACE_NAME;

SQL3:

SELECT Total.name "Tablespace Name",

Free_space,

(total_space - Free_space) Used_space,

total_space

FROM (select tablespace_name, sum(bytes / 1024 / 1024) Free_Space

from sys.dba_free_space

group by tablespace_name) Free,

(select b.name, sum(bytes / 1024 / 1024) TOTAL_SPACE

from sys.v_$datafile a, sys.v_$tablespace B

where a.ts# = b.ts#

group by b.name) Total

WHERE Free.Tablespace_name = Total.name;

如果发现表空间快满了,则需要增加相应的表空间。增加表空间可以按照以下步骤:

1.此表空间是大文件表空间

oracle引入了大文件表空间的概念,正常表空间的数据文件可以有很多个,每个大小最大为32G,而大文件表空间的数据文件只有一个,所以如果该表空间是大文件表空间的话,则无法增加数据文件,只能增加文件大小。

select bigfile from dba_tablespaces where tablespace_name=‘表空间名称‘-----------------返回 YES 则是大文件表空间,返回NO,就是普通的表空间(小文件的)。一般来说大数据文件表空间都是自动扩展的,不需要手动增加大小,select * from dba_data_files------------里面有个autoextensible 字段,表示是否自动扩展;maxblocks  表示每次自动扩展多大
如若不是,则需要增加数据文件大小来增加表空间先查看表空间的名字及文件所在位置:

select tablespace_name, file_id, file_name,

round(bytes/(1024*1024),0) total_space

from dba_data_files

order by tablespace_name

增大所需表空间大小:

alter database datafile ‘表空间位置‘resize 新的尺寸

例如:

alter database datafile ‘\oracle\oradata\test.dbf‘ resize 4000m

2.此表空间是普通文件表空间

此类型的表空间增加有2种方法,一种是为表空间增加数据文件,另一种方法是增加表空间原有数据文件尺寸。

两种方法,一种是为表空间增加数据文件:

代码如下:

alter tablespace users add datafile ‘/opt/oracle/oradata/esop/test02.dbf‘ size 200M;

另一种方法是增加表空间原有数据文件尺寸:

代码如下:

alter database datafile ‘/opt/oracle/oradata/esop/test01.dbf‘ resize 200M;

一般情况下,表空间增长都设置为自动,可以用参数设置

增加表空间的方式增加:

alter tablespace 表空间名称 add datafile 表空间存放路径  size 表空间大小 autoextend on next 增长的大小 maxsize 空间最大值(如果不限制空间最大值就用unlimited)

修改表空间的方式增加:

alter database datafile 表空间文件路径 AUTOEXTEND(自动扩展) ON NEXT 表空间满后增加的大小

增加完后可以再用上述的脚本再进行查询可以发现表空间大小的改变!

 
时间: 2024-08-02 11:02:19

Oracle 查看表空间大小及其扩展的相关文章

oracle查看表空间大小及使用情况

SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", (total - free) "表空间使用大小", total / (1024 * 1024 * 1024) "表空间大小(G)", free / (1024 * 1024 * 1024) "表空间剩余大小(G)", (total - free) / (1024

如何查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件

要查看Oracle数据库表空间大小,是否需要增加表空间的数据文件,在数据库管理中,磁盘空间不足是DBA都会遇到的问题,问题比较常见. --1.查看表空间已经使用的百分比 Sql代码 select   a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024   "used MB",b.bytes/1024/1024 "free MB",round(((a.by

zbb20170816 oracle Oracle 查看表空间、数据文件的大小及使用情况sql语句

oracle Oracle 查看表空间.数据文件的大小及使用情况sql语句 --表空间 --1G=1024MB --1M=1024KB --1K=1024Bytes --1M=11048576Bytes --1G=1024*11048576Bytes=11313741824Bytes SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", (total - free) &qu

[转载]Oracle修改表空间大小

Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据的原因.如果在建立数据库时没有设置, Oracle 默认的表空间大小为400M,当数据库中数据量达到这个值,再向数据库中导入数据就会报错.解决方法是 扩展表空间.可以选择将表容量扩大,比如扩展到5G,或者当表空间不够时每次自动增加一定的容量,如每次自增200M. 下面列出详细过程: 1.通过sql

Oracle 查看表空间的大小及使用情况sql语句

SQL1: --1.查看表空间的名称及大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name; --2.查看表空间物理文件的名称及大小 SELECT tablespace_name,

Oracle修改表空间大小

使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据的原因.如果在建立数据库时没有设置, Oracle 默认的表空间大小为400M,当数据库中数据量达到这个值,再向数据库中导入数据就会报错.解决方法是 扩展表空间.可以选择将表容量扩大,比如扩展到5G,或者当表空间不够时每次自动增加一定的容量,如每次自增200M. 下面列出详细过程: 1.通过sql plus 命令登录数据库.

oracle 查看表空间以及日志文件等系统文件

--1.查看表空间的名称及大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name; --2.查看表空间物理文件的名称及大小  SELECT tablespace_name, file_

oracle查看表空间和物理文件大小

查看各表空间的使用情况 select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB", round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used" from (select tablespace_name

Oracle查看表空间使用情况

 查看表空间使用情况 select upper(f.tablespace_name) "表空间名", d.tot_grootte_mb "表空间大小(m)", d.tot_grootte_mb - f.total_bytes "已使用空间(m)", to_char(round((d.tot_grootte_mb - f.total_bytes) / d.tot_grootte_mb * 100, 2), '990.99') "使用比