快速了解Oracle数据库容量大小的方法 (查看oracle 数据库大小)

随着互联网时代的到来,数据量越来越庞大,如何快速了解数据库容量大小成为IT从业者首当其冲的问题。Oracle数据库是世界上更大的商用数据库之一,其应用广泛,包括金融、医疗、等众多行业。本文将介绍几种。

1.使用Oracle SQL Developer

Oracle SQL Developer是一款免费的数据库开发工具,其包含了许多有用的功能,其中包括了。只需在SQL Developer中执行以下脚本:

SELECT SUM(BYTES)/1024/1024/1024 AS GB FROM DBA_DATA_FILES;

这将返回Oracle数据库中所有数据文件的总大小,以GB为单位。这是一个,只需要几秒钟就能得到结果。

2.使用Oracle Enterprise Manager

Oracle Enterprise Manager是Oracle公司提供的数据库管理工具,它提供了许多有用的功能,包括监控、性能调优、备份等等。在Oracle Enterprise Manager中,可以找到数据库容量报告。在报告中,可以看到数据库的总大小以及各个表空间的使用情况。这是一个很方便的方法,可以让你了解数据库容量大小以及各个表空间的使用情况。

3.使用Oracle命令行工具

除了SQL Developer和Enterprise Manager之外,还可以使用Oracle命令行工具来了解数据库容量大小。只需在命令行中执行以下脚本:

SELECT SUM(BYTES)/1024/1024/1024 AS GB FROM DBA_DATA_FILES;

这将返回Oracle数据库中所有数据文件的总大小,以GB为单位。与SQL Developer相比,这可能需要更长的时间来得到结果,但是在没有图形用户界面的环境下,这是一个很好的方法。

4.使用Oracle监控工具

如果你是一个Oracle DBA,那么你可能常常使用Oracle监控工具来监控数据库的健康状况。其中,有一个称为dbms_space.tab_space_usage的存储过程可以帮助你快速了解表空间的使用情况。只需执行以下脚本即可:

EXEC dbms_space.tab_space_usage(‘TABLESPACE_NAME’,true);

其中,TABLESPACE_NAME是要查询的表空间名称。执行后,将返回表空间的总大小、已用空间、剩余空间以及已用空间的百分比。这是一个很好的方法,可以帮助你了解表空间的使用情况。

以上介绍了四种,包括:使用Oracle SQL Developer、使用Oracle Enterprise Manager、使用Oracle命令行工具以及使用Oracle监控工具。这些方法都非常方便、快捷,可适用于不同的需求。如果你是一个Oracle DBA,那么这些方法将非常有用,可以帮助你快速了解数据库容量大小以及各个表空间的使用情况。

相关问题拓展阅读:

如何查看oracle数据库监听日志文件目录及大小

监听日志在$ORACLE_BASE/diag/tnslsnr/hostname/listener/trace目亮判脊录下冲握,文件名为listener.log

上面的hostname根据你的敬渗实际主机名而定

监听, 使用命令 lsnrctl,就可以看到状态。 >lsnrctl >status

如何查看oracle临时表空间当前使用了多少空间的大小

查看临时御猜表空镇猜型间 (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用户查看

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\10.2.0\ORADATA\TELEMT\TEMP01.DBF’ resize 100M;

3、扩展临时表空间:

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

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize 100m;

方法二、将临时数据文件设为自动扩展:

SQL> alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;

方法三、向临时表空间中添加数据文件:

SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/orcl/temp02.dbf’ size 100m;

4、创建临时表空间:

SQL> create temporary tablespace temp1 tempfile ‘/u01/app/oracle/oradata/orcl/temp11.dbf’ 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/temp02.dbf’ 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_used.tablespace_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_used.tablespace_name = temp_total.tablespace_name

ORDER BY B.TABLESPACE, B.SEGFILE#, B.SEGBLK#, B.BLOCKS;

希望能帮到您!

查看“oracle”临时表空间当前使用了多少空间,培握可按照以下程序。

SELECT d.tablespace_name “Name”配镇庆, d.status “Status”,

TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), ‘99,999,990.90’) “Size (M)”,

TO_CHAR (NVL (a.BYTES – NVL (f.BYTES, 0), 0) / 1024 / 1024,

‘.99’

) USE,

TO_CHAR (NVL ((a.BYTES – NVL (f.BYTES, 0)) / a.BYTES * 100, 0),

‘990.00’

) “Used %”

FROM SYS.dba_tablespaces d,

(SELECT   tablespace_name, SUM (BYTES) BYTES

FROM dba_data_files

GROUP BY

tablespace_name) a,

(SELECT   tablespace_name, SUM (BYTES) BYTES

FROM dba_free_space

GROUP BY tablespace_name) f

WHERE d.tablespace_name = a.tablespace_name(+)

AND d.tablespace_name = f.tablespace_name(+)

AND NOT (d.extent_management LIKE ‘LOCAL’ AND d.CONTENTS LIKE ‘TEMPORARY’)

UNION ALL

SELECT d.tablespace_name “Name”, d.status “Status”旅差,

TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), ‘99,999,990.90’) “Size (M)”,

TO_CHAR (NVL (t.BYTES, 0) / 1024 / 1024, ‘.99’) USE,

TO_CHAR (NVL (t.BYTES / a.BYTES * 100, 0), ‘990.00’) “Used %”

FROM SYS.dba_tablespaces d,

(SELECT   tablespace_name, SUM (BYTES) BYTES

FROM dba_temp_files

GROUP BY tablespace_name) a,

(SELECT   tablespace_name, SUM (bytes_cached) BYTES

FROM v$temp_extent_pool

GROUP BY tablespace_name) t

WHERE d.tablespace_name = a.tablespace_name(+)

AND d.tablespace_name = t.tablespace_name(+)

AND d.extent_management LIKE ‘LOCAL’

AND d.CONTENTS LIKE ‘TEMPORARY’;

先来说说临时表的概念。 临时表顾名思义,就是临时的,用完销毁掉的表。 数据既可以保存在临时的文件系统上,也可以保存在固定的磁盘文件系统上。 临时表有下面几种:

1全局临时表

这种临时表从数据库实例启动后开始生效,在数据库实例销毁后失效。在MySQL里面这种临时表对应的是内存表,即memory引擎。

2会话级别临时表

这种临时表在用户登录系统成功后生效,在用户退出时失效。在MySQL里的临时表指的就是以 create temporary table 这样的关键词创建的表。

3事务级别临时表

这种临时表在事务开始时生效,事务提交或者回滚后失效。 在MySQL里面没有这种临时表,必须利用会话级别的临时表间接实现。

4检索级别临时表

这种临时表在SQL语句执行之间产生,执行完毕后失效。 在MySQL里面这种临时表不是很固定,跟随MySQL默认存储引擎来变化。比如默认存储引擎是MyISAM,临时表的引擎就是MyISAM,并且文件生成形式以及数据运作形式和MyISAM一样,只是数据保存在内存里;如果默认引擎是INNODB,那么临时表的引擎就是INNODB,此时它的所有信息都保存在共享表空间ibdata里面。

MySQL 5.7对于InnoDB存储引擎的临时表空间做了优化。在MySQL 5.7之前,INNODB引擎的临时表都保存在ibdata里面,而ibdata的贪婪式磁盘占用导致临时表的创建与删除对其他正常表产生非常大的性能影响。在MySQL5.7中,对于临时表做了下面两个重要方面的优化:

MySQL5.7 把临时表的数据以及回滚信息(仅限于未压缩表)从共享表空间里面剥离出来,形成自己单独的表空间,参数为innodb_temp_data_file_path。

在MySQL5.7 中把临时表的相关检索信息保存在系统信息表中:information_schema.innodb_temp_table_info. 而MySQL 5.7之前的版宽判念本想要查看临时表的系统信息是没有太好的办法。

需要注意的一点慎困就是,虽然INNODB临时表有自己的表空间,但是目前还不能自己定义临时表空间文件冲亏的保存路径,只能是继承innodb_data_home_dir。此时如果想要拿其他的磁盘,比如内存盘来充当临时表空间的保存地址,只能用老办法,做软链。举个小例子:

我现在用的OS是 Ubuntu12.X,想用tmpfs文件系统充当临时表空间,

root@ytt-master-VirtualBox:/usr/local/mysql/data# ln -s/run/shm/ /usr/local/mysql/data/tmp_space2

root@ytt-master-VirtualBox:/usr/local/mysql/data#ls -l | grep ‘shm’

lrwxrwxrwx1 root root 9 Nov 13 10:28tmp_space2 -> /run/shm/

然后把

innodb_temp_data_file_path=tmp_space2/ibtmp2:200M:autoextend

添加到my.cnf里的下面一行

重启MySQL服务后,

mysql>select @@innodb_temp_data_file_path\G

***************************1. row ***************************

@@innodb_temp_data_file_path:tmp_space2/ibtmp2:200M:autoextend

1 rowin set (0.00 sec)

先写一个批量创建临时表的存储过程:

DELIMITER$$

USE`t_girl`$$

DROPPROCEDURE IF EXISTS `sp_create_temporary_table`$$

CREATEDEFINER=`root`@`localhost` PROCEDURE `sp_create_temporary_table`(

IN f_cnt INT UNSIGNED )

BEGIN

DECLARE i INT UNSIGNED DEFAULT 1;

WHILE i call sp_create_temporary_table(10);

QueryOK, 0 rows affected (0.07 sec)

如果在以前,我们只知道创建了10张临时表,但是只能凭记忆或者手工记录下来临时表的名字等信息。

现在可以直接从数据字典里面检索相关数据。

mysql> select * frominformation_schema.innodb_temp_table_info;

++++++-+

|TABLE_ID | NAME | N_COLS | SPACE| PER_TABLE_TABLESPACE | IS_COMPRESSED |

++++++-+

| 56 | #sql1705_2_9 | 5 | 36 | FALSE | FALSE |

| 55 | #sql1705_2_8 | 5 | 36 | FALSE |FALSE |

| 54 | #sql1705_2_7 | 5 | 36 | FALSE | FALSE |

| 53 | #sql1705_2_6 | 5 | 36 | FALSE | FALSE |

| 52 | #sql1705_2_5 | 5 | 36 | FALSE |FALSE |

| 51 | #sql1705_2_4 | 5 | 36 | FALSE | FALSE |

| 50 | #sql1705_2_3 | 5 | 36 | FALSE | FALSE |

| 49 | #sql1705_2_2 | 5 | 36 | FALSE |FALSE |

| 48 | #sql1705_2_1 | 5 | 36 | FALSE | FALSE |

| 47 | #sql1705_2_0 | 5 | 36 | FALSE | FALSE |

++++++-+

10rows in set (0.00 sec)

查看oracle 数据库大小的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于查看oracle 数据库大小,快速了解Oracle数据库容量大小的方法,如何查看oracle数据库监听日志文件目录及大小,如何查看oracle临时表空间当前使用了多少空间的大小的信息别忘了在本站进行查找喔。


数据运维技术 » 快速了解Oracle数据库容量大小的方法 (查看oracle 数据库大小)