关于临时表空间的一些整理

合集下载

ORACLE临时表空间总结

ORACLE临时表空间总结

ORACLE临时表空间总结临时表空间概念临时表空间⽤来管理数据库排序操作以及⽤于存储临时表、中间排序结果等临时对象,当ORACLE⾥需要⽤到SORT的时候,并且当PGA中sort_area_size⼤⼩不够时,将会把数据放⼊临时表空间⾥进⾏排序。

像数据库中⼀些操作: CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等都可能会⽤到临时表空间。

当操作完成后,系统会⾃动清理临时表空间中的临时对象,⾃动释放临时段。

这⾥的释放只是标记为空闲、可以重⽤,其实实质占⽤的磁盘空间并没有真正释放。

这也是临时表空间有时会不断增⼤的原因。

临时表空间存储⼤规模排序操作(⼩规模排序操作会直接在RAM⾥完成,⼤规模排序才需要磁盘排序Disk Sort)和散列操作的中间结果.它跟永久表空间不同的地⽅在于它由临时数据⽂件(temporary files)组成的,⽽不是永久数据⽂件(datafiles)。

临时表空间不会存储永久类型的对象,所以它不会也不需要备份。

另外,对临时数据⽂件的操作不产⽣redo⽇志,不过会⽣成undo⽇志。

创建临时表空间或临时表空间添加临时数据⽂件时,即使临时数据⽂件很⼤,添加过程也相当快。

这是因为ORACLE的临时数据⽂件是⼀类特殊的数据⽂件:稀疏⽂件(Sparse File),当临时表空间⽂件创建时,它只会写⼊⽂件头部和最后块信息(only writes to the header and last block of the file)。

它的空间是延后分配的.这就是你创建临时表空间或给临时表空间添加数据⽂件飞快的原因。

另外,临时表空间是NOLOGGING模式以及它不保存永久类型对象,因此即使数据库损毁,做Recovery也不需要恢复Temporary Tablespace。

Oracle_表空间的过大处理方法

Oracle_表空间的过大处理方法

--临时表空间满时的处理方法1.增加临时文件: 不建议设置为自增长导致把磁盘给撑满SQL> ALTER TABLESPACE TEMP ADD TEMPFILE'/oracle/oradata/itpuxdb/temp02.dbf'SIZEE 10M AUTOEXTEND OFF;2.修改临时文件: 可以将原来的数据文件改大一点如:SQL> ALTER DATABASE TEMPFILE'/oracle/oradata/itpuxdb/temp02.dbf'RESIZE100M;3.收缩Shrinking临时表空间SQL> ALTER TABLESPACE temp SHRINK SPACE KEEP20M; 收缩表空间SQL> ALTER TABLESPACE temp SHRINK TEMPFILE'/oracle/oradata/itpuxdb/temp02.dbf'; 收缩文件数据库重启后,会自动释放temp表空间默认临时表空间TEMP的过大的重建流程如果删除不了查询哪些sql在使用临时表空间,开启另外一个session查询SQL> selectername,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$sessionse,v$sql s where ='db_block_size'and su.session_addr=se.saddr ands.hash_value=su.sqlhash and s.address=su.sqladdr order by ername,se.sid;如果列出存在的,则通过以下语句杀掉这些sid与serial 【注意:1是系统进程不能乱杀】SQL> alter system kill session'187,12619';SYSTEM与SYSAUX表空间满了怎么办?1.添加表空间2.把system或者sysaux表空间的信息迁移到其它表空间。

mysql - 表空间碎片整理方法

mysql - 表空间碎片整理方法

mysql - 表空间碎片整理方法MySQL是一种常用的关系型数据库管理系统,用于存储和管理大量的数据。

在使用MySQL过程中,随着数据的不断插入和删除,表空间中的碎片也会逐渐增多。

碎片的存在会导致数据库性能下降,因此需要对表空间进行碎片整理。

1. 碎片的定义碎片是指表空间中已被删除的数据所占据的空间,这些空间无法被重新利用,导致表空间浪费。

碎片的存在会使得数据库查询、插入和删除等操作变慢,降低数据库性能。

2. 碎片整理的目的碎片整理的目的是将表空间中的碎片进行清理和整理,以提高数据库的性能。

整理后,表空间中的空闲空间将被合理利用,减少了查询时的磁盘寻道时间,提高了数据库的查询效率。

3. 碎片整理的方法(1)优化查询语句在进行碎片整理之前,可以通过优化查询语句来减少碎片的产生。

合理设计和使用索引,避免全表扫描和使用不必要的临时表,可以减少碎片的产生。

(2)重新组织表重新组织表是一种常用的碎片整理方法。

可以通过ALTER TABLE语句来重建表,将数据按照一定的规则重新组织和存储。

这样可以将碎片进行整理,提高表的存取效率。

(3)使用OPTIMIZE TABLE命令OPTIMIZE TABLE命令是MySQL提供的一种碎片整理工具。

该命令可以对指定的表进行碎片整理,优化表的存储结构。

执行OPTIMIZE TABLE命令后,MySQL会对表进行重建,将碎片整理为连续的空间。

(4)重建索引索引是提高查询效率的重要手段,但长时间使用会导致索引碎片的产生。

可以通过重建索引来进行碎片整理,提高索引的性能。

可以使用ALTER TABLE语句的ALTER INDEX子句来重建索引。

(5)定期清理无用数据定期清理无用数据是避免碎片产生的重要措施。

在MySQL中,使用DELETE语句删除数据时,并不会立即释放表空间。

可以通过使用TRUNCATE TABLE或DROP TABLE命令来彻底删除表和数据,释放表空间。

4. 碎片整理的注意事项(1)整理表空间前,建议先备份相关数据,以防止数据丢失。

Oracle10g的临时表空间占满之后的解决方法。

Oracle10g的临时表空间占满之后的解决方法。

Oracle10g的临时表空间占满之后的解决方法。

公司客户数据库用了一段时间之后,总是出现磁盘被占满的情况。

基本上这个情况要么就是undo表空间很大,要么就是临时表空间很大,这个时候就需要进行转储undo表空间或者临时表空间。

以下是解决方法。

---解决临时表空间Temp的方法TEMP文件尚未调整,还是16G,首先创建了一个新的TEMP文件并设定为缺省临时表空间SQL> create temporary tablespace TEMP3 TEMPFILE '/opt/oracle/oradata/cuss/TEMP2.dbf' size 20m reuse autoextend off;SQL>alter database default temporary tablespace "TEMP2"结果这个情况下做exp产生ORA-01403的错误,后来得知是因为TEMP临时表空间容量过小的原因重新创建一个TEMP3文件,初始大小1G,每次增长200M,最大限制为4G。

SQL> create temporary tablespace TEMP3 TEMPFILE'/opt/oracle/oradata/cuss/TEMP3.dbf' size 1000m reuse autoextend on next 200m maxsize 4000m;把缺省临时表空间指向这个新建的TEMP3。

SQL>alter database default temporary tablespace "TEMP3"删除原有的临时表空间文件和操作系统中的对应物理文件,释放磁盘空间SQL>drop tablespace temp2 including contents and datafiles;重新做exp导出,导出成功。

至此调整结束。

oracle中临时表用法

oracle中临时表用法

在Oracle 数据库中,临时表(Temporary Table)是一种在会话期间存在并可用的表,这种表在会话结束时自动删除。

临时表的主要作用是为了解决数据管理的问题及优化查询性能,可以大大减少数据的I/O 操作,提高查询的速度。

临时表提供了一个临时存储结果集的空间,在某些情况下,创建一个临时表来存储查询的结果集,可能要比多次进行复杂的连接查询更为高效。

常见的用法包括但不限于以下几种:1. 存储及处理大型数据集:对于数据存放不方便的情况,使用临时表可以提高查询速度并且减少与外部程序的交互。

2. 存储查询的中间结果:当多个表连接查询时,查询的结果可能是复杂的中间结果,此时可以使用临时表存储结果,以便后续的查询操作,这可以大大提高查询效率。

3. 缓存查询结果:将查询结果存储到临时表中,在下一次查询时可以直接从临时表中获取数据而不需要再次执行查询,减少了查询的时间。

在Oracle 中创建临时表的语法如下所示:```CREATE GLOBAL TEMPORARY TABLE 表名(列名数据类型,...)ON COMMIT {DELETE|PRESERVE} ROWS;```创建临时表的时候需要设置ON COMMIT 子句。

DELETE 这个选项表示当事务提交后删除临时表中所有的数据。

PRESERVE 这个选项则表示当事务提交后保留临时表中的数据。

使用GLOBAL 关键字创建的是全局临时表,可以被其他会话访问;如果使用的是SESSION 关键字,则创建的是会话级别的临时表,只能被当前会话访问。

临时表在使用结束之后,需要使用DROP TABLE 命令来删除。

例如:```DROP TABLE 表名;```需要注意的是,临时表的作用是暂时存储数据,使用后需要及时删除,否则可能会浪费存储空间和影响其他查询。

修改临时表空间大小的命令

修改临时表空间大小的命令

修改临时表空间大小的命令
要修改临时表空间的大小,可以使用ALTER DATABASE命令。

具体的命令格式如下:
ALTER DATABASE TEMPFILE '<tempfile_name>' RESIZE
<new_size>;
其中,'<tempfile_name>'是临时表空间的文件名,<new_size>是你想要设定的新的表空间大小。

这个命令会修改指定临时表空间的大小为新的大小。

另外,如果你想要增加临时表空间的大小,你也可以使用以下命令:
ALTER DATABASE TEMPFILE '<tempfile_name>' AUTOEXTEND ON NEXT <next_size> MAXSIZE <max_size>;
这个命令将会开启临时表空间的自动扩展功能,当表空间不足时会自动增加空间,直到达到最大大小为止。

需要注意的是,在执行这些命令之前,你需要有足够的权限来修改数据库的结构。

此外,在修改临时表空间大小时,也需要考虑到数据库的当前负载情况以及系统资源的可用性,避免对数据库的正常运行产生影响。

学习王二暖oracle笔记(25-31)

学习王二暖oracle笔记(25-31)

学习oracle笔记一、临时表空间 (3)1.目标 (3)2.临时表空间的作用 (3)3.临时表空间组 (3)4.临时表空间的操作 (3)二、UNDO表空间(undo撤销,redo重做) (5)1.目标 (5)2.UNDO管理方式的改变 (5)3.Undo表空间概念 (5)4.Undo相关的重要的参数 (6)5.Undo表空间的操作 (7)6.Oracle11G undo表空间的新特性 (8)三、逻辑备份与恢复 (8)1.目标 (8)2.备份与恢复简介 (8)3.故障类型 (9)4.传统的导出与导入实用程序 (9)5.导出 (11)6.导入 (12)7.导出导入三种方式 (14)8.可传输表空间 (14)9.oracle11G的数据泵 (15)10.Expdp重要的参数 (15)11.inmdp的重要参数 (19)四、数据装载 (20)1.目标 (20)2.数据的装载 (20)3.SQL*LOADER (21)4.外部表 (23)五、闪回flashback (25)1.目标 (25)2.9I的闪回查询 (25)3.10G中的闪回版本查询 (26)4.10G的闪回事务查询 (27)5.10G的闪回表 (27)6.闪回删除 (28)7.10G的闪回数据库 (29)六、物化视图 (30)1.目标 (30)2.问题的提出 (30)3.物化视图的简介 (31)4.物化视图的作用 (32)5.创建物化视图时需要的权限 (33)6.创建物化视图时的选项 (33)7.基于主键的物化视图 (34)8.基于rowid的物化视图 (36)七、使用物化视图和exp实现生产库的逻辑备份的例子 (37)1.问题的提出 (37)2.问题的解决 (37)一、临时表空间1.目标2.临时表空间的作用临时表空间在硬盘上3.临时表空间组4.临时表空间的操作查看表空间:Select * from v$tablespace;Select * from dba_tablespaces;查看数据文件:Select * from dba_data_files;查看临时数据文件:Select * from dba_temp_files;Select * from v$tempfile;查看默认的临时表空间:Select * from database_propertieswhere property_name=’DEFAULT_TEMP_TABLESPACE’;创建临时表空间,不属于组:Create temporary tablespace temp2 tempfile’F:\data\orcl\tem2a.dbf’ size 10M autoextend on;创建临时表空间,属于组:Create temporary tablespace temp3tempfile’F:\data\orcl\tem3a.dbf’size 10M autoextend ontablespace group temp_grp;查看临时表空间组:Select * from dba_tablespace_groups;把temp2加入到temp_grp组内:Alter tablespace temp2 tablespace group temp_grp;把temp2移出temp_grp组:Alter tablespace temp2 tablespace group ’’;给temp2表空间添加一个临时文件:Alter tablespacetemp2 addtempfile’F:\data\orcl\tem2b.dbf’size 10m autoextend on;修改系统默认的临时表空间为另一个临时表空间:Alter database default temporary tablespace temp2;修改系统默认的临时表空间为一个临时表空间组:Alter database default temporary tablespacetemp_grp;二、UNDO表空间(undo撤销,redo重做)1.目标2.UNDO管理方式的改变3.Undo表空间概念4.Undo相关的重要的参数查看undo相关信息:Show parameter undo;5.Undo表空间的操作增加一个undo表空间:Create undo tablespace undotbs2 datafile’F:\DATA\ORCL\undotbs201.dbf’ size 10m autoextend on;给undotbs2表空间增加一个undo数据文件:Alter tablespace undotbs2 add datafile’F:\DATA\ORCL\undotbs202.dbf’ size 10m;查看系统默认undo表空间:Show parameter undo;切换undo表空间:Alter system set undo_tablespace=undotbs2;启用rententiongarentee:Alter tablespace undotbs1 retention guarantee;查看表空间是否启用了rententiongarentee:Select * from dba_tablespaces;取消启用rententiongarentee:Alter tablespace undotbs1 retention no guarantee;查看undo表空间使用情况:Select * from v$undostat;Select to_char(begin_time,’yyyymmdd hh24:mi:ss’),to_char(end_time,’yyyymmdd hh24:mi:ss’),undoblks,txncount from v$undostat;6.Oracle11G undo表空间的新特性三、逻辑备份与恢复1.目标2.备份与恢复简介3.故障类型语句故障:不需要人工处理。

深入浅出谈Oracle临时表

深入浅出谈Oracle临时表

关于临时表上的DML活动,有以下结论: 活动,有以下结论: 关于临时表上的 活动
• 1、 INSERT 会生成很少甚至不生成undo/redo活动。因此,临 时表对insert/select型的应用很有用。 比如在处理web翻页时, 可以通过临时表来模拟cache返回结果。 • 2、 DELETE 在临时表上生成的redo与正常表上生成的redo同 样多。 • 3 、临时表的UPDATE会生成正常表UPDATE一半的redo。
在一个SESSION中(比如SQLPLUS登陆)插入上面3条记录,然后再以另外一个SESSION(用 SQLPLUS再登陆一次)登陆,当你select * from classes;的时候,classes表是空的,而你再第 一次登陆的SQLPLUS中select的时候可以查询到,这个时候你没有进行commit或者rollback之前 你可以对刚才插入的3条记录进行update、delete等操作,当你进行commit或者rollback的时候, 这个时候由于你的表是事务级的临时表,那么在插入数据的session也看不到数据了,这个时候 数据就已经被截断了。
什么时候使用临时表? 什么时候使用临时表?
• 1)、当某一个SQL语句关联的表在2张及以上,并且和一些小表 关联。可以采用将大表进行分拆并且得到比较小的结果集合存放 在临时表中。 • 2)、程序执行过程中可能需要存放一些临时的数据,这些数据在 整个程序的会话过程中都需要用的等等。
<Insert Picture Here>
事务级SQL操作 操作 事务级
• • • • • • • • • • SQL> insert into classes(Class_id,Class_Name,Class_Memo) values(1,'计算机','9608'); 1 row inserted SQL> insert into classes(Class_id,Class_Name,Class_Memo) values(2,'经济信息','9602'); 1 row inserted SQL> insert into classes(Class_id,Class_Name,Class_Memo) values(3,'经济信息','9603'); 1 row inserted SQL> update classes set class_memo ='' where class_id=3 ; 1 row updated SQL> select * from classes ; CLASS_ID CLASS_NAME CLASS_MEMO -------- ---------- -------------------------------------------------------------------------------1 计算机 9608 2 经济信息 9602 3 经济信息 SQL> delete from classes where class_id=3 ; 1 row deleted SQL> select * from classes ; CLASS_ID CLASS_NAME CLASS_MEMO -------- ---------- -------------------------------------------------------------------------------1 计算机 9608 2 经济信息 9602 SQL> commit; Commit complete SQL> select *from classes ; CLASS_ID CLASS_NAME CLASS_MEMO -------- ---------- -------------------------------------------------------------------------------SQL> 再重复插入一次,然后rollback。 SQL> Rollback ; Rollback complete SQL> select * from classes ; CLASS_ID CLASS_NAME CLASS_MEMO -------- ---------- -------------------------------------------------------------------------------SQL>
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.3 创 建临时 表的表 空间选 项
从Oracle Databas e11g 版 本1 开 始,可以 在创建全 局临时表 时指定 TABLES PACE子 句。 如果没有 指定表空 间,将在 默认的临 时表空间 中创建全 局临时表 。此外, 还会在与 临时表相 同的临时 表空间中 创建在临 时表中创 建的索引 。
set pagesize 50
col tablespa ce_name for a20
col "Tempfil e name" for a42
set linesize 300 Select f.tablesp ace_nam e,
d.file_na me "Tempfil e name", round((f. bytes_fre e+ f.bytes_u sed) / 1024 /1024, 2) "rotoutnadl (((f. bytes_fre e+ f.bytes_u sed) nvl(p.byt es_used, 0)) / 1024 / 1024, 2) "Free MB" , round(nvl (p.bytes_ used, 0)/ 1024 / 1024, 2)"Used MB", round((ro und(nvl(p .bytes_u sed, 0)/ 1024 /1024, 2)/round( (f.bytes_f ree + f.bytes_u sed) / 1024 / 1024, 2))*100,2 ) as"Used
------------------- --------------------------- ----------TEMP
2088960
1040384
1048576
SQL> select 2088960 /1024/10 24||'M' fromdual ;
2088960 /10 ---------1.99218 75M
从Oracle Databas e11g 版 本1 开 始,可使 用 ALTER
TABLES
PACESH
RINK
SPACE 命令收缩 临时表空 间,也可 以使用 ALTER
TABLES
PACE
SHRINK
TEMPFI LE 命令 收缩临时 文件。对 于这两个 命令,可 以指定可 选的 KEEP 子 句,该子 句定义了 表空间/
注:
可以在 DBA_TA BLES 中 查找用于 存储全局 临时表的 表空间。
如: CREATE TEMPO RARY TABLES PACE temp
TEMPFI LE 'tbs_tem p.dbf' SIZE 600m REUSEA UTOEXT END ON MAXSIZ UNLIMIT ED EXTENT MANAG EMENT LOCAL UNIFOR M SIZE 1m;
SQL> col file_nam e for a50 SQL> select file_nam e fromdba _temp_fil
FILE_NA ME ---------------------------------------------/u- 01/app /oracle/o radata/a nqing/te mp01.db f
如果忽略 KEEP 子 句,则只 要满足其 它存储属 性,数据 库就会尽 可能尝试 收缩表空 间/临时 文件(所 有当前使 用的区的 总空间) 。此操作 需联机执 行。但 是,如果 所分配的 当前使用 的一些区 超出了收 缩估计 值,系统 将等待这 些区被释 放以完成 收缩操作 。
注: ALTER
CREATE GLOBAL TEMPO RARY TABLE temp_ta ble (cvarcha r2(10))
ON COMMIT DELETE ROWS TABLES PACE temp;
二. 示例
2.1 查 看 dba_te mp_fr ee_sp ace
SQL> set lin 160
SQL> col tablespa ce_name for a20 SQL> col tablespa ce_size for 9999999 9S9Q9L9> col allocated _space for 9999999 9999 SQL> col free_spa ce for 9999999 9999
Oracle 11G清理 临时表空 间
分类: Oracle 2014-0411 08:46 1377人阅 读 评论 (0) 收藏 举报
目录 (?)[+]
1. 一 临 时表空间 收缩 1. 1 说 明 2. 2 DBA_TEMP _FREE_SP ACE视图 3. 3 创 建临时表 的表空间 选项 2. 二示 例 1. 1 查 看 dba_temp _free_sp ace 2. 2 执 行temp 表空间的 online shrink 操作 3. 3 shrink 数据文件 4. 4 keep 选 项说明
Tablespa ce altered.
SQL> select * from dba_tem p_free_s pace;
TABLES PACE_N AME TABLES PACE_S IZE ALLOCA TED_SP ACE FREE_S PACE ------------------- --------------------------- --------T-E--MP
--这里直 接被压到 2M了。 Temp 表 空间过小 对性能是 有影响 的,所以 在shrink 时,还是 建议使用 keep 指 定最小值 。
SQL> select 3156131 84/1024/ 1024||'M' from dual;
3156131 84/10 -----------300.992 1875M
SQL>
2.4 keep 选项说 明
KEEP 选 项用来指 定压缩时 表空间或 者数据文 件shrink 的最小 值,如果 没有执行 该命令, 那么表空 间或数据 文件将被 压缩到最 小值。
一. 临时 表空 间收 缩
1.1 说 明
关于 Oracle 的临时表 空间,之 前有整理 过一篇 Blog:
Oracle Temp 临 时表空间 http://b log.csdn .net/tia nlesoftw are/arti cle/deta ils/4697 417
以下操作 会占用大 量的 temporar y:
TABLES PACE_N AME TABLES PACE_S IZE ALLOCA TED_SP ACE FREE_S PACE ------------------- --------------------------- --------T-E--MP
3156131 84 1040384
3145728 00
SQL> alter tablespa ce temp shrink space;
Tablespa ce altered.
SQL> select * from dba_tem p_free_s pace;
TABLES PACE_N AME TABLES PACE_S IZE ALLOCA TED_SP ACE FREE_S PACE
PACE_N AME 表 空间的名 称TABLES
PACE_S IZE 表空 间的总大 小(以字 节为单 位) ALLOCA
TED_SP ACE 已 分配的总 空间(以 字节为单 位),包 括当前已 分配的且 正在使用 中的空间 以及当前 已分配的 且可重用 的空间
FREE_S
PACE 可用的总 空间(以 字节为单 位),包 括当前已 分配的、 可重用的 以及当前 未分配的 空间
1.2 DBA_T EMP_ FREE_ SPAC E视图
该字典视 图是在 Oracle 11g新增 加的视 图,用来 查看表空 间级别的 临时空间 使用率信 息。此信 息是从各 种现有视 图中导出 的。
(1) 列出 临时空间 使用率信 息
(2) 临时 表空间使 用率中心 点
列名 说明
TABLES
1、用 户执行 imp/exp 导入导出 操作时, 会使用大 量的 temporar y段
2、用 户在 rebuild index时
3、执 行create table ...... as 语句 时
4、移 动用户下 的数据到 别的表空 间时
大量的排 序操作可 能会导致 临时表空 间大量增 长。为了 提高性 能,对排 序区进行 物理分配 后,将在 内存中管 理它们以 避免以后 的物理回 收。结 果,磁盘 中包含一 个巨大的 临时文 件,直到 将其删除 。一种可 能的解决 方法是: 使用较小 的文件创 建新的临 时表空 间,并将 这个新的
5242880 00 7340032
5232394 24

SQL> select 5242880 00/1024/ 1024||'M' from dual;
5242 ---500M --这里的 Temp 表 空间是 500M。
2.2 执 行 temp 表空间 的 online shrink 操作:
SQL> alter tablespa ce temp shrink spaceke ep 400M;
SQL> alter tablespa ce temp shrinkte mpfile '/u01/app /oracle/o radata/a nqing/te mp01.db f' keep 300M;
Tablespa ce altered.
相关文档
最新文档