- 浏览: 65845 次
- 性别:
- 来自: 江西
最新评论
oracle的临时表空间写满磁盘空间,解决改问题的具体步骤
以下的操作是用数据库的sys超级用户操作
刚开始打算把临时表空间的数据文件重新缩小就好了 执行: SQL> alter database tempfile 2 '/oracle/oms/oradata/temp/temp01.dbf' resize 10240M; 数据库报错,重新设置的空间大小不能满足需要。 看来需要重新建立新的临时表空间替换当前的表空间了
1、首先查看当前的数据库默认表空间:
SQL>select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; 确认当前的临时表空间为TEMP
2、查看目前临时表空间的大小:
SQL>select file_name,tablespace_name,bytes/1024/1024 "MB",autoextensible from dba_temp_files; 3、创建新的临时表空间:(先在其他的磁盘空间借用一下空间) SQL> create temporary tablespace temp02 2 tempfile '/oracle/oms/oradata/undo/temp02.dbf' 3 size 512M; 4、把新建的临时表空间却换成数据库的默认临时表空间
SQL> alter database default temporary tablespace temp02; 5、确认目前数据库的默认临时表空间 SQL>select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; 确认temp02为当前的数据库默认表空间
6、在删除temp临时表空间之前,先把运行在temp临时表空间的sql语句kill掉,这样的sql语句多为排序的语句
SQL>Select se.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))as Space, tablespace,segtype,sql_text from v$sort_usage su,v$parameter p,v$session se,v$sql s where p.name='db_block_size' and su.session_addr=se.saddr and s.hashvalue=su.sqlhash and s.address=su.sqladdr order by se.username,se.sid; 查询出来之后,kill掉这些sql语句:
SQL>alter system kill session '524,778'; (假如某一条运行的sql语句的SID为524,serial#为778) 确认在temp临时表空间中没有运行的sql语句之后,则可以删除temp临时表空间数据文件了
7、删除temp临时表空间
SQL> drop tablespace temp including contents and datafiles; 这样很快就可以删除了临时表空间的数据文件
8、现在temp02临时表空间占据了别人的磁盘空间,需要重新把临时表空间建立在原来的位置,重新建立temp临时表空间
SQL> create temporary tablespace temp 2 tempfile '/oracle/oms/oradata/temp/temp01.dbf' 3 size 512M autoextend on maxsize 15G; 新建一个512M的自动扩展临时表空间,最大的扩展为15G。
查看新建的temp临时表空间是否正确:
SQL>select file_name,tablespace_name,bytes/1024/1024,maxbytes/1024/1024,autoextensible from dba_temp_files; 9、把新建的temp临时表空间却换成数据库的默认临时表空间
SQL> alter database default temporary tablespace temp; 10、确认目前数据库的默认临时表空间 SQL>select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; 确认temp为当前的数据库默认表空间
11、目前把原来的temp临时表空间变成了512M,把剩余的磁盘空间空了出来,temp02临时表空间就没有用了,删除temp02临时表空间 SQL> drop tablespace temp02 including contents and datafiles; |
http://blog.csdn.net/shenzhen_mydream/archive/2008/10/10/3049281.aspx
==========================================================
Oracle中的表空间查询方法
提到表空间大家可能都不会陌生,它是数据库中最大的逻辑单位与存储空间单位,数据库系统通过表空间为数据库对象分配空间。表空间在物理上体现为磁盘数据文件,每一个表空间由一个或多个数据文件组成,一个数据文件只可与一个表空间相联系,这是逻辑与物理的统一。了解表空间和数据文件的的属性及使用率,是数据库管理员的一项重要职责。在本文中笔者将以oracle为例,详细介绍查询Oracle数据库表空间信息和数据文件信息的方法。希望能帮助大家更深入了解表空间的知识和应用。
一、如何查看Oracle数据库中表空间信息的方法
1、从Oracle数据库中工具入手:
使用oracle enterprise manager console工具,这是oracle的客户端工具,当安装oracle服务器或客户端时会自动安装此工具,在windows操作系统上完成oracle安装后,通过下面的方法登录该工具:开始菜单——程序——Oracle-OraHome92——Enterprise Manager Console(单击)——oracle enterprise manager console登录——选择‘独立启动’单选框——‘确定’ —— ‘oracle enterprise manager console,独立’ ——选择要登录的‘实例名’ ——弹出‘数据库连接信息’ ——输入’用户名/口令’ (一般使用sys用户),’连接身份’选择选择SYSDBA——‘确定’,这时已经成功登录该工具,选择‘存储’ ——表空间,会看到如下的界面,该界面显示了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。
2、从Oracle数据库中命令方法入手:
通过查询数据库系统中的数据字典表(data dictionary tables)获取表空间的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句:
select
a.a1 表空间名称,
c.c2 类型,
c.c3 区管理,
b.b2/1024/1024 表空间大小M,
(b.b2-a.a2)/1024/1024 已使用M,
substr((b.b2-a.a2)/b.b2*100,1,5) 利用率
from
(select tablespace_name a1, sum(nvl(bytes,0)) a2 from
dba_free_space group by tablespace_name) a,
(select tablespace_name b1,sum(bytes) b2 from
dba_data_files group by tablespace_name) b,
(select tablespace_name c1,contents c2,extent_management c3 from dba_tablespaces) c
where a.a1=b.b1 and c.c1=b.b1;
|
该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。
上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。
语句执行结果如下:
上面描述中分别介绍了查看Oracle数据库中表空间信息的工具方法和命令方法。
二、查询Oracle数据库中数据文件信息的方法
1、查看Oracle数据库中数据文件信息的工具方法:
使用上面介绍过的方法登录oracle enterprise manager console工具,选择‘存储’ ——数据文件,会看到如下的界面,该界面显示了数据文件名称,表空间名称,以”兆”为单位的数据文件大小,已使用的数据文件大小及数据文件利用率。
2、查看Oracle数据库中数据文件信息的命令方法:
通过查询数据库系统中的数据字典表(data dictionary tables)获取数据文件的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句:
select
b.file_name 物理文件名,
b.tablespace_name 表空间,
b.bytes/1024/1024 大小M,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name
|
上面描述中分别介绍了查看Oracle数据库中数据文件信息的工具方法和命令方法。
三、查看临时表空间和数据库文件的方法
在oracle数据库中,临时表空间主要用于用户在使用order by 、group by语句进行排序和汇总时所需的临时工作空间。要查询数据库中临时表空间的名称,大小及数据文件,可以查询数据字典dba_tablespaces及dba_data_files。命令如下:
select
a.talbespace_name 表空间名称,
b.bytes 大小bytes,
b.file_name 数据文件名
from dba_tablespaces a, dba_data_files b
Where a.talbespace_name=b.talbespace_name and a.contents=’TEMPORARY’;
|
查询结果如下:
从oracle 9i开始,可以创建Temporary tablespace类表空间,即“临时“表空间,这类表空间使用临时文件。临时文件的信息被存储在数据字典V$tempfile中。命令如下:
Select file#,status,name from V$tempfile;
查询数据字典V$tempfile结果如下:
在上面介绍的方法中,建议掌握命令方法,因为你的环境可能没有图形工具,而SQLPLUS一般情况下都是可以使用的,有了命令脚本,很容易得到表空间和数据文件的相关信息。另外,数据库管理员应该多整理命令脚本,在需要时直接执行脚本以提高工作效率。
在数据库管理员的日常工作中,应该经常查询表空间的利用率,按照数据库系统的具体情况估算表空间的增长量,当表空间的利用率超过90%时,要及时采取措施,如清理历史表、历史数据以释放空间,向表空间中添加新的数据文件,扩展现有数据文件大小等方法来降低表空间的利用率,避免表空间利用率接近100%时,将产生空间不够的错误。
http://database.51cto.com/art/200905/124877.htm
=======================================
怎样查看临时表空间的大小?
TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)",
NVL(t.bytes, 0)/1024/1024 ||'/'||NVL(a.bytes/1024/1024, 0) "Used (M)",
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';
发表评论
-
如何生成Oracle AWR报告
2009-10-15 22:50 5405如何生成Oracle AWR报告 (awrrpt) 2008 ... -
删除归档日志、更改归档模式
2009-08-02 07:34 1371http://e-ant.iteye.com/blog/354 ... -
相关命令
2009-05-15 17:52 754C:\Documents and Settings\Admin ... -
oracle锁表问题
2009-05-14 11:34 13761、Select * From v$locked_object ... -
oracle数据表建立索引
2009-04-08 22:04 1226给oracle数据表建立索引 按照一般的说法,一个数据表如果 ... -
pl_sql中用case when 语法
2008-12-30 16:29 1232用case when 条件 then xxx when.... ... -
oralce sql中数据类型转换
2008-12-29 13:46 1090cast(substr(s.GSN_NO,6) as inte ... -
oracle创建数据库脚本
2008-03-31 19:30 7142--1:导出数据库: exp username/passwor ... -
Oracle中Decode()函数使用技巧
2008-01-23 16:13 1183DECODE函数是ORACLE PL/SQL是功能强大 ... -
流水账
2007-08-27 19:04 10231、oracle中uuid生成方法: select SYS_g ... -
oracle基础
2007-08-24 11:06 1153一、 hash join概念 ...
相关推荐
本文将详细介绍如何在不重启数据库的情况下解决Oracle临时表空间写满磁盘空间的问题。 #### 问题背景 当检查AIX 5.3系统的磁盘空间时,发现临时表空间所在的数据文件已经达到20GB,并且已经占用了100%的磁盘空间。...
- 文件"不要让临时表空间影响数据库性能 - Oracle - 2.mht"可能详细讨论了临时表空间对数据库性能的具体影响及实例。 - 文件"不要让临时表空间影响数据库性能 - Oracle - 3.mht"可能提供了实际的配置和优化步骤,...
### Oracle 临时表空间详解 #### 一、Oracle表空间概览 在Oracle数据库系统中,数据被组织成多个逻辑单元,这些单元被称为表空间。每个表空间由一个或多个物理磁盘文件(称为数据文件)组成,并且是数据库中的最高...
这样,当表空间满时,数据文件会自动增大,但要注意设置合理的增长限制,避免无节制地占用磁盘空间。 6. **定期清理临时段**: - 清理会话:结束不再需要的会话,以释放它们占用的临时空间。 - 设置全局临时表:...
通过使用临时表空间组,可以确保有足够的空间供查询使用,从而避免出现磁盘排序等问题。 2. **多默认临时表空间:** 在数据库级别,管理员可以定义多个默认的临时表空间。这样,在创建新会话或用户时,可以自动分配...
以下是对"Oracle 创建表空间命令"以及"Oracle 创建用户及表空间,及用户权限分配"的详细解释。 首先,让我们了解如何创建Oracle用户。Oracle用户是数据库系统中的身份实体,用于访问和操作数据库资源。创建用户的...
- **存储空间**:虽然临时表在会话结束或事务提交后会被清理,但它们仍会占用内存和磁盘空间,因此需要合理使用,以避免资源浪费。 总结来说,Oracle存储过程中使用临时表是优化数据处理和提高性能的有效手段,正确...
在创建表空间和用户的过程中,管理员还需要关注Oracle的文件路径和文件系统的管理,确保数据库文件存储在适当的磁盘上,以优化性能并防止磁盘空间耗尽的问题。同样需要注意的是,这些操作应由具有相应权限的数据库...
- **减少磁盘I/O:** 由于数据存储在临时表空间,可以减少对永久表空间的读写操作,提高系统整体性能。 #### 六、注意事项 - **临时表空间管理:** 确保有足够的空间供临时表使用,特别是在高并发环境下。 - **...
然而,在某些情况下,表空间可能会出现所谓的“暴涨”现象,即短时间内迅速增大,这可能会导致磁盘空间不足等问题。因此,了解如何取消表空间的自动扩展功能对于避免此类问题至关重要。 #### 一、表空间自动扩展...
在 Oracle 数据库中,表空间可以分为三种类型:数据表空间、UNDO 表空间和临时表空间。 1. 数据表空间:用于存储数据库对象,如表、索引、视图等。 2. UNDO 表空间:用于存储Undo 信息,用于回滚事务。 3. 临时表...
### 一、Oracle临时表空间简介 Oracle数据库中的临时表空间主要用于存储临时对象,如排序操作、汇总统计、临时表等。这些操作在执行完毕后,数据会自动从临时表空间中清除,不会永久保存。然而,在高并发或大容量...
下面将详细介绍创建永久性表空间和临时表空间的方法。 ##### 2.1 创建永久性表空间 创建永久性表空间时,需要指定表空间的名称、数据文件的位置及大小等参数。 **示例代码:** ```sql CREATE TABLESPACE test_data...
以下将详细讲解如何在Oracle中创建表空间、临时表空间、用户以及授权,并讨论相关知识点。 1. 创建表空间: 创建表空间的目的是为数据库对象分配存储空间。在创建时,我们需要指定数据文件的位置、初始大小、自动...
- **临时表空间**:用于临时存储SQL查询的中间结果,例如排序和联接操作。 - **恢复表空间**:用于存放还原的数据文件,通常在数据库恢复过程中使用。 3. **创建表空间的步骤** 创建表空间的基本语法如下: ```...
3. 临时表空间(Temporary Tablespace):用于临时存储排序和聚合操作的结果。 4. 回滚表空间(Rollback Tablespace):存储事务回滚信息,用于恢复操作。 5. Undo表空间(Undo Tablespace):Oracle 9i之后引入,也...
解决策略是检查表空间的可用空间,并通过修改表空间的默认存储参数或改变用户的临时表空间设置来增加空间。使用`ALTER TABLESPACE`命令可以调整临时表空间的初始和后续扩展大小,或者通过`ALTER USER`命令为用户指定...
根据提供的文件信息,本文将详细解释Oracle中创建表空间、用户及权限授予的相关知识点。 ### Oracle 创建表空间 #### 1. 表空间概念 在Oracle数据库中,表空间是逻辑存储单元,它由一个或多个数据文件组成,用于...
表空间根据用途不同,可分为永久表空间(用于存储数据表和索引等)和临时表空间(用于临时操作,如排序、分组等)。表空间的大小决定了该表空间能存储的数据量。 #### 二、表空间扩充方法 **1. 添加数据文件** 当...
在Oracle数据库管理系统中,管理和释放磁盘空间是数据库管理员的重要任务。...此外,根据实际情况,可能还需要调整Oracle的归档日志模式、临时表空间、redo日志文件等设置,以优化磁盘空间的使用。