Home Database Mysql Tutorial Oracle 11g中Temp临时表空间、文件的新特性

Oracle 11g中Temp临时表空间、文件的新特性

Jun 07, 2016 pm 04:49 PM

临时表空间是Oracle体系结构中比较特殊的结构。通常情境下,数据库使用者只需要设置对应的临时表空间(到用户),临时段分配等工

临时表空间是Oracle体系结构中比较特殊的结构。通常情境下,数据库使用者只需要设置对应的临时表空间(到用户),临时段分配等工作都是系统自动完成。当临时数据不需要时,Oracle后台进程SMON也会负责将临时段回收。
 
在Oracle的备份恢复体系中,临时文件的地位比较低。在进行备份动作时,RMAN都不会进行临时文件恢复。在恢复启动过程中,如果发现临时文件不存在,通常Oracle也会自动将临时文件创建出来。

--------------------------------------分割线 --------------------------------------

 Oracle 表空间管理和优化

使用RMAN进行表空间TSPITR自动恢复

ORA-3233表空间相关问题处理

Oracle查看数据库表空间使用情况sql语句

Oracle 表空间使用率监控

--------------------------------------分割线 --------------------------------------
 

1、Temp漫谈 

Oracle临时表空间主要充当两个主要作用:临时表数据段分配和排序汇总溢出段。我们创建的临时表,在使用过程中,会有大量的数据段结构的分配。这个分配就是利用临时表空间。
 
排序汇总溢出的范围比较广泛。我们在SQL语句中进行order by/group by等操作,首先是选择PGA的内存sort area、hash area和bitmap area。如果SQL使用排序空间很高,单个server process对应的PGA不足以支撑排序要求的时候,临时表空间会充当排序段的数据写入。这样排序动作会从内存过程退化为外存储过程。
 
两个现象:如果我们的Temp表空间文件设置比较小,并且设置为不可自动拓展。同时我们又希望给一个很大数据表加索引,经常会遇到:create index语句长时间运行之后报错,说Temp表空间不能拓展,操作被停止。索引叶子节点是有序的,创建索引的过程也就伴随着数据库的排序动作。
 
另一个现象:如果我们的内存设置不合理,SQL经常包括很多“无意义”的“大排序”。这样会发现我们的Temp空间消耗比较大,一些SQL性能抖动比较明显。

合理的设置Temp空间管理策略,是应用系统架构的一个重要环节。 

2、给临时表指定表空间 

Oracle中,用户schema和表空间存储结构对应关系是很灵活的。如果用户有空间配额(Quota),我们是可以在schema中创建任何表空间的数据表的,是可以把对象放置在任何的表空间里面。
 
但是对于11g之前,,Temp表空间并不是这样的。我们创建用户之后,需要制定出这个用户schema对应的临时表空间。如果我们不指定,Oracle会选择系统默认临时表空间(通常是temp)作为这个用户的临时表空间。
 
至此以后,这个用户所有的临时段都是在这个临时表空间上进行分配。我们是没有能力指定某个临时表分配在其他临时表空间里面的。

我们到11g之后,Oracle提供了这样的自由。 

SQL> select * from v$version;

 

BANNER

-----------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

PL/SQL Release 11.2.0.3.0 - Production

CORE 11.2.0.3.0 Production

TNS for Linux: Version 11.2.0.3.0 - Production

NLSRTL Version 11.2.0.3.0 – Production

 

当前sys用户的默认表空间为TEMP。

 

SQL> select DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE from dba_users where username='SYS';
 
 

DEFAULT_TABLESPACE            TEMPORARY_TABLESPACE

------------------------------ ------------------------------

SYSTEM                        TEMP

 

此时,数据库中包括两个临时表空间。

 

SQL> select * from dba_temp_free_space;

 

TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE

--------------- --------------- --------------- ----------

TEMP                  481296384      481296384  480247808

TEMPTEST            5368709120        1048576 5367660544

 

我们可以创建出一个不属于TEMP默认临时表空间的临时表。

 

SQL> create global temporary table t_temp tablespace temptest as select * from t where 1=0;
 
Table created

 

此后的临时段分配,都是在temptest表空间上进行的。

 

SQL> insert into t_temp select * from t;

19360512 rows inserted

 

SQL> select * from dba_temp_free_space;

TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE

--------------- --------------- --------------- ----------

TEMP                  481296384      481296384  480247808

TEMPTEST            5368709120      2248146944 3120562176

 

那么,是不是和数据表一样,支持move操作呢?

 

SQL> create global temporary table t_temp tablespace temp as select * from dba_objects where 1=0;
 
create global temporary table t_temp tablespace temp as select * from dba_objects where 1=0
 
 

ORA-14451: unsupported feature with temporary table

 

看来,目前版本还没有支持move操作的临时表。

更多详情见请继续阅读下一页的精彩内容:

linux

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How do you alter a table in MySQL using the ALTER TABLE statement? How do you alter a table in MySQL using the ALTER TABLE statement? Mar 19, 2025 pm 03:51 PM

The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

How do I configure SSL/TLS encryption for MySQL connections? How do I configure SSL/TLS encryption for MySQL connections? Mar 18, 2025 pm 12:01 PM

Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

How do you handle large datasets in MySQL? How do you handle large datasets in MySQL? Mar 21, 2025 pm 12:15 PM

Article discusses strategies for handling large datasets in MySQL, including partitioning, sharding, indexing, and query optimization.

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? Mar 21, 2025 pm 06:28 PM

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

How do you drop a table in MySQL using the DROP TABLE statement? How do you drop a table in MySQL using the DROP TABLE statement? Mar 19, 2025 pm 03:52 PM

The article discusses dropping tables in MySQL using the DROP TABLE statement, emphasizing precautions and risks. It highlights that the action is irreversible without backups, detailing recovery methods and potential production environment hazards.

How do you represent relationships using foreign keys? How do you represent relationships using foreign keys? Mar 19, 2025 pm 03:48 PM

Article discusses using foreign keys to represent relationships in databases, focusing on best practices, data integrity, and common pitfalls to avoid.

How do you create indexes on JSON columns? How do you create indexes on JSON columns? Mar 21, 2025 pm 12:13 PM

The article discusses creating indexes on JSON columns in various databases like PostgreSQL, MySQL, and MongoDB to enhance query performance. It explains the syntax and benefits of indexing specific JSON paths, and lists supported database systems.

How do I secure MySQL against common vulnerabilities (SQL injection, brute-force attacks)? How do I secure MySQL against common vulnerabilities (SQL injection, brute-force attacks)? Mar 18, 2025 pm 12:00 PM

Article discusses securing MySQL against SQL injection and brute-force attacks using prepared statements, input validation, and strong password policies.(159 characters)

See all articles