一. 查看DB 实际使用磁盘数量
我们可以通过DBA_DATA_FILES这张表来查看整个表空间的大小。
SQL> desc dba_data_files;
Name Null? Type
----------------------------------------- -------- ----------------------------
FILE_NAME VARCHAR2(513)
FILE_ID NUMBER
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS NUMBER
STATUS VARCHAR2(9)
RELATIVE_FNO NUMBER
AUTOEXTENSIBLE VARCHAR2(3)
MAXBYTES NUMBER
MAXBLOCKS NUMBER
INCREMENT_BY NUMBER
USER_BYTES NUMBER
USER_BLOCKS NUMBER
ONLINE_STATUS VARCHAR2(7)
我们可以通过bytes字段和Blocks 字段来判断。
查看整个DB 表空间大小:
SQL> select sum(bytes)/1024/1024 "MB" from dba_data_files;
MB
----------
16790
从这里,我们可以说我们的数据库大小在17G所有。 即占用的空间。
查看整个DB 空闲空间量:
SQL> select sum(bytes)/1024/1024 "MB" from dba_free_space;
MB
----------
10872.5
所有表空间的空闲空间是10872.5MB。
通过dba_data_files 不能直接得出使用量。实际数据量的计算需要用上面的2个值相减:16790-10872.5. 所以,我们DB 实际数据存储量在6G左右。
二. 深入研究
2.1 dba_free_space 表
该表描述了数据库中所有表空间的空闲extents。 在我的BLog:
表空间(tableSpace) 段(segment) 盘区(extent) 块(block) 关系
http://blog.csdn.net/tianlesoftware/archive/2009/12/08/4962476.aspx
讲了segment,extent 和 block的关系。 我们的数据文件对应segment。 而segment 是由一些列extent组成。 每个extent又是由block组成。
所以通过dba_free_space 查询的结果,实际是表空间对应的每个extent的空闲量。
注意:
对于本地管理的表空间,当数据文件或者整个表空间offline, dba_free_space 不会显示任何extent的信息。
SQL>create tablespace dave datafile '/u01/app/oracle/oradata/dave/dave01.dbf' size 50m;
SQL> select * from dba_free_space;
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
--------------- ---------- ---------- ---------- ---------- ------------
SYSTEM 1 17617 65536 8 1
SYSTEM 1 64641 16777216 2048 1
SYSTEM 1 66705 9306112 1136 1
UNDOTBS1 2 33 65536 8 2
UNDOTBS1 2 49 65536 8 2
UNDOTBS1 2 65 65536 8 2
UNDOTBS1 2 97 65536 8 2
UNDOTBS1 2 161 65536 8 2
UNDOTBS1 2 185 131072 16 2
UNDOTBS1 2 209 65536 8 2
UNDOTBS1 2 225 5570560 680 2
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
--------------- ---------- ---------- ---------- ---------- ------------
UNDOTBS1 2 1033 13303808 1624 2
UNDOTBS1 2 2665 1310720 160 2
UNDOTBS1 2 2953 29360128 3584 2
UNDOTBS1 2 6665 90177536 11008 2
UNDOTBS1 2 17801 71303168 8704 2
UNDOTBS1 2 26633 17760256 2168 2
UNDOTBS1 2 28809 5242880 640 2
UNDOTBS1 2 29577 4194304 512 2
UNDOTBS1 2 30217 70254592 8576 2
UNDOTBS1 2 38921 84869120 10360 2
USERS 4 57 4784128 584 4
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
--------------- ---------- ---------- ---------- ---------- ------------
DAVE 5 9 52363264 6392 5
23 rows selected.
SQL> alter database datafile 5 offline;
Database altered.
SQL> select * from dba_free_space;
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
--------------- ---------- ---------- ---------- ---------- ------------
SYSTEM 1 17617 65536 8 1
SYSTEM 1 64641 16777216 2048 1
SYSTEM 1 66705 9306112 1136 1
UNDOTBS1 2 33 65536 8 2
UNDOTBS1 2 49 65536 8 2
UNDOTBS1 2 65 65536 8 2
UNDOTBS1 2 97 65536 8 2
UNDOTBS1 2 161 65536 8 2
UNDOTBS1 2 185 131072 16 2
UNDOTBS1 2 209 65536 8 2
UNDOTBS1 2 225 5570560 680 2
TABLESPACE_NAME FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
--------------- ---------- ---------- ---------- ---------- ------------
UNDOTBS1 2 1033 13303808 1624 2
UNDOTBS1 2 2665 1310720 160 2
UNDOTBS1 2 2953 29360128 3584 2
UNDOTBS1 2 6665 90177536 11008 2
UNDOTBS1 2 17801 71303168 8704 2
UNDOTBS1 2 26633 17760256 2168 2
UNDOTBS1 2 28809 5242880 640 2
UNDOTBS1 2 29577 4194304 512 2
UNDOTBS1 2 30217 70254592 8576 2
UNDOTBS1 2 38921 84869120 10360 2
USERS 4 57 4784128 584 4
22 rows selected.
SQL>
offline 之后,就没有显示Dave 的相关信息了。
在上面的查询结果,我们看到UNDOTBS 有很多记录。 这个就是我们之前说的,dba_free_space 会显示表空间下所有extent 的空闲状况。 当表空间比较大时,这里的extent 的记录也就会很多。
dba_free_space 字段的含义:
Column
|
Datatype
|
Description
|
TABLESPACE_NAME
|
VARCHAR2(30)
|
Name of the tablespace containing the extent
|
FILE_ID
|
NUMBER
|
File identifier number of the file containing the extent
|
BLOCK_ID
|
NUMBER
|
Starting block number of the extent
每个extent 开始的block number
|
BYTES
|
NUMBER
|
Size of the extent (in bytes)
|
BLOCKS
|
NUMBER
|
Size of the extent (in Oracle blocks)
|
RELATIVE_FNO
|
NUMBER
|
Relative file number of the file containing the extent
--extent 管理的数据文件号
|
还有一点,就是这里的BYTES 和 Blocks 是对应的关系。 我们看一个具体的例子。 从上面的结果中拉一条记录过来:
TABLESPACE_NAME BYTES BLOCKS
--------------- ---------- ----------
UNDOTBS1 13303808 1624
BLOCKS 显示的该extent中空闲的block 数量。
BYTES 显示的是这些block对应的空间大小。
BYTES=BLOCKS*块的大小
SQL> show parameter db_block_size
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
即每个块是8k。
BYTES=BLOCKS*块的大小
1624*8*1024=13303808
2.2 dba_data_files
该表显示的是DB 所有数据文件的信息。是个整体概念。
Column
|
Datatype
|
NULL
|
Description
|
FILE_NAME
|
VARCHAR2(513)
|
|
Name of the database file
|
FILE_ID
|
NUMBER
|
NOT NULL
|
File identifier number of the database file
|
TABLESPACE_NAME
|
VARCHAR2(30)
|
NOT NULL
|
Name of the tablespace to which the file belongs
|
BYTES
|
NUMBER
|
|
Size of the file in bytes
|
BLOCKS
|
NUMBER
|
NOT NULL
|
Size of the file in Oracle blocks
|
STATUS
|
VARCHAR2(9)
|
|
File status: AVAILABLE or INVALID (INVALID means that the file number is not in use, for example, a file in a tablespace that was dropped)
|
RELATIVE_FNO
|
NUMBER
|
|
Relative file number
|
AUTOEXTENSIBLE
|
VARCHAR2(3)
|
|
Autoextensible indicator
|
MAXBYTES
|
NUMBER
|
|
Maximum file size in bytes
|
MAXBLOCKS
|
NUMBER
|
|
Maximum file size in blocks
|
INCREMENT_BY
|
NUMBER
|
|
Number of Oracle blocks used as autoextension increment
|
USER_BYTES
|
NUMBER
|
|
The size of the file available for user data. The actual size of the file minus the USER_BYTES value is used to store file related metadata.
|
USER_BLOCKS
|
NUMBER
|
|
Number of blocks which can be used by the data
|
ONLINE_STATUS
|
VARCHAR2(7)
|
|
Online status of the file:
SYSOFF
SYSTEM
OFFLINE
ONLINE
RECOVER
|
三. 查看表空间使用率的一个SQL
SELECT D.TABLESPACE_NAME,
SPACE||'M' "SUM_SPACE(M)",
BLOCKS "SUM_BLOCKS",
SPACE - NVL (FREE_SPACE, 0)||'M' "USED_SPACE(M)",
ROUND( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2)||'%' "USED_RATE(%)",
FREE_SPACE||'M' "FREE_SPACE(M)"
FROM ( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,
SUM (BLOCKS) BLOCKS
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) D,
( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
UNION ALL --如果有临时表空间
SELECT D.TABLESPACE_NAME,
SPACE||'M' "SUM_SPACE(M)",
BLOCKS SUM_BLOCKS,
USED_SPACE||'M' "USED_SPACE(M)",
ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2)||'%' "USED_RATE(%)",
NVL (FREE_SPACE, 0)||'M' "FREE_SPACE(M)"
FROM ( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,
SUM (BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE,
ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
ORDER BY 1;
---------------------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977(满) DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群: 83829929 DBA5群: 142216823
聊天 群:40132017
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请
分享到:
相关推荐
Oracle到Oracle的数据同步是一个常见的需求,特别是在企业级应用中,为了保证多个数据库实例间的数据一致性,需要进行实时或定时的数据同步。在这个场景中,我们关注的是如何在两个不同的Oracle数据库之间实现数据表...
这种迁移不仅可以充分利用大数据平台的分布式计算能力,还能显著降低成本并提高数据处理效率。本文旨在详细介绍如何使用 Kettle(Pentaho Data Integration,PDI)进行 Oracle 数据库到 Hive 的数据迁移过程。 ####...
以下是对Oracle数据类型的详细总结,特别是字符和二进制串类型。 首先,我们来看字符类型。Oracle提供了四种基本的字符数据类型:`CHAR`,`NCHAR`,`VARCHAR2`,以及`NVARCHAR2`。`CHAR`和`NCHAR`是固定长度的数据...
1. **Oracle数据导入导出** Oracle提供了多种数据导入导出工具,包括`expdp`(Export Data Pump)和`impdp`(Import Data Pump)以及传统的`exp`和`imp`。Data Pump工具提供了更快的速度和更大的灵活性,支持并行...
18. **DESTROY**: 覆盖表空间数据文件,默认为 `N`。 19. **INDEXFILE**: 将表/索引信息写入指定文件。 20. **SKIP_UNUSABLE_INDEXES**: 跳过不可用索引维护,默认为 `N`。 21. **ANALYZE**: 执行转储文件中的...
表空间(tablespace)是Oracle数据库中的逻辑存储单元,它由一个或多个数据文件组成,用于存放所有的数据对象。当表或者索引等对象被创建时,它们会分配在表空间中的一个或多个页上。 在存储数据时,Oracle数据库还...
- 数据库则是指所有数据的实际物理存储区域,包括各种文件如数据文件、重做日志文件和控制文件等。 #### 三、Oracle内存结构 Oracle 11g的内存结构主要分为两大部分:系统全局区(SGA)和个人全局区(PGA)。 1....
在实际应用中,这个脚本可能会保存为`.py`文件,例如`GetAllTableRecordCount.py`,并包含以上提到的ADO连接和SQL查询逻辑。运行此脚本后,用户可以得到一个按照表大小排序的表列表,方便进行性能分析和优化。 对于...
### Oracle基本数据类型详解 #### 一、概述 Oracle 数据库提供了多种数据类型来满足不同的需求,这些数据...了解并合理选择合适的 Oracle 数据类型,不仅可以提高应用程序的性能,还可以减少存储成本和维护工作量。
4. **数据存储与管理**:Oracle采用表空间(Tablespaces)和数据文件(Datafiles)来存储数据。学习如何创建、管理表空间和数据文件,以及如何设置存储参数,对优化数据库性能至关重要。 5. **安全性与权限**:...
在Oracle中,数据类型是定义数据库中字段或变量所能存储的数据种类的关键元素,而存储方式则关乎如何在磁盘上保存这些数据以及如何优化空间利用率。以下是对Oracle数据类型及存储方式的深入探讨。 ### 第一部分:...
Oracle数据库中常用的数据类型主要包括字符类型、数字类型、日期时间类型以及LOB类型等,每一种数据类型适用于特定的数据存储需求。 1. 字符类型 - CHAR类型是固定长度的,用于存储定长的字符串,最多2000个字符。...
在对“Oracle全文检索技术在海量数据挖掘中的应用.pdf”这一文档内容进行梳理后,可以...通过对这些知识点的学习和应用,可以更好地理解Oracle数据库全文检索技术的原理和优势,以及它在数据挖掘领域的实际使用价值。
理解数据库处理时间的基本准则,如I/O延迟、CPU利用率和网络延迟,有助于优化系统性能。 27. **入侵防护**: 了解常见的Oracle入侵手段,如SQL注入,加强权限控制和审计,以防范安全风险。 28. **数据库优化**: ...
在Oracle数据库中,表空间是存储数据的主要逻辑结构,它由一个或多个数据文件组成,决定了数据库的存储容量。表空间分为几种类型,包括永久表空间、临时表空间和回滚表空间,每种都有其特定的用途。 1. **SYSTEM表...
### 强制释放Oracle数据连接方案 在日常的数据库管理工作中,我们经常遇到数据库连接超限的情况,这通常是由于大量的数据库连接未被正确关闭或回收所导致的。本文将详细介绍如何查看并调整Oracle数据库的连接数量...
Navicat是一款强大的数据库管理工具,它为IT专业人员提供了便捷的方式来管理和操作多种...在实际操作中,理解系统环境、Navicat版本和Oracle客户端的关系至关重要,这对于顺利使用Navicat连接Oracle数据库至关重要。
本篇文章将深入探讨Oracle数据类型及其重要性。 首先,Oracle数据类型大致可以分为四大类:数值型、字符型、日期/时间型和二进制型。数值型数据类型包括整数类型(如NUMBER、INTEGER、BINARY_INTEGER)和浮点类型...
以下是关于Oracle基本数据类型的详细说明: 1. **Char(n)**:这是一个定长字符串数据类型,长度可设置为1到2000字节。无论实际存储的数据是否占满指定长度,Oracle都会分配足够的空间。如果未指定长度,默认为1个...
2. **准备数据文件**:根据控制文件的要求,整理好数据文件,确保数据格式正确。 3. **运行sqlldr命令**:在命令行中输入`sqlldr`命令,指定控制文件、数据文件和其他选项,启动数据导入。 4. **检查日志和坏文件**...