oracle临时表怎么建 oracle怎么创建临时表

Oracle临时表创建的基本语句是什么Oracle创建临时表oracle临时表怎么建的语法如下oracle临时表怎么建:
CREATE
GLOBAL
TEMPORARY
TABLE
table
"("
column
datatype
【oracle临时表怎么建 oracle怎么创建临时表】[DEFAULT
expr]
[{
NULL
|
NOT
NULL}]
[,
column
datatype
[DEFAULT
expr]
[
{NULL
|
NOT
NULL}
]...
")"
ON
COMMIT
{DELETE
|
PRESERVE
}
ROWS
;
在Oracle中,可以创建以下两种临时表:
1)
会话特有的临时表
CREATE
GLOBAL
TEMPORARY
(
)
ON
COMMIT
PRESERVE
ROWS;
2)
事务特有的临时表
CREATE
GLOBAL
TEMPORARY
(
)
ON
COMMIT
DELETE
ROWS;
CREATE
GLOBAL
TEMPORARY
TABLE
MyTempTable
oracle怎样建立一个临时表你这个#AA是临时表的表名吧,起表名不能用#这样的符号吧!
alter GLOBAL TEMPORARY TABLE AAA
ON COMMIT DELETE ROWS
AS
SELECT * FROM AA;
Oracle临时表创建的基本语句是什么?Oracle创建临时表的语法如下:
CREATE GLOBAL TEMPORARY TABLE table
"(" column datatype [DEFAULT expr] [{ NULL | NOT NULL}]
[, column datatype [DEFAULT expr] [ {NULL | NOT NULL} ]... ")"
ON COMMIT {DELETE | PRESERVE } ROWS ;
在Oracle中,可以创建以下两种临时表:
1) 会话特有的临时表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT PRESERVE ROWS;
2) 事务特有的临时表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
oracle中的临时表临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象 , 它和普通表有些类似,然而又有很大区别 。它只能存储在临时表空间,而非用户的表空间 。ORACLE临时表是会话或事务级别的,只对当前会话或事务可见 。每个会话只能查看和修改自己的数据 。
ORACLE临时表有两种类型:会话级的临时表和事务级的临时表 。
1)ON COMMIT DELETE ROWS
它是临时表的默认参数,表示临时表中的数据仅在事物过程(Transaction)中有效,当事物提交(COMMIT)后 , 临时表的暂时段将被自动截断(TRUNCATE),但是临时表的结构 以及元数据还存储在用户的数据字典中 。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留很多临时表的表结构和元数据 。
2)ON COMMIT PRESERVE ROWS
它表示临时表的内容可以跨事物而存在,不过,当该会话结束时 , 临时表的暂时段将随着会话的结束而被丢弃 , 临时表中的数据自然也就随之丢弃 。但是临时表的结构以及元数据还存储在用户的数据字典中 。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留很多临时表的表结构和元数据 。
1:会话级的临时表的数据和你当前会话有关系,当前SESSION不退出的情况下,临时表中的数据就还存在,临时表的数据只有当你退出当前SESSION的时候才被截断(TRUNCATE TABLE),如下所示:
会话级别的临时表创建:
复制代码
CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT PRESERVE ROWS;

CREATE GLOBAL TEMPORARY TABLE TMP_TEST ON COMMIT PRESERVE ROWS
AS
SELECT * FROM TEST;
操作示例:
SQL CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT PRESERVE ROWS;
Table created
SQL INSERT INTO TMP_TEST
SELECT 1, 'kerry' FROM DUAL;
1 row inserted
SQL COMMIT;
Commit complete
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- ----------------
1 kerry
SQL INSERT INTO TMP_TEST
SELECT 2, 'rouce' FROM DUAL;
1 row inserted
SQL ROLLBACK;
Rollback complete
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- ----------------------
1 kerry
SQL
复制代码
2:事务级的临时表(默认),这种类型的临时表与事务有关,当进行事务提交或者事务回滚的时候,临时表的数据将自行截断,即当COMMIT或ROLLBACK时,数据就会被TRUNCATE掉 , 其它的特性和会话级的临时表一致 。
事务级临时表的创建方法:
复制代码
CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT DELETE ROWS;

CREATE GLOBAL TEMPORARY TABLE TMP_TEST ON COMMIT DELETE AS SELECT * FROM TEST;
SQL CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT DELETE ROWS;
Table created
SQL INSERT INTO TMP_TEST
SELECT 1, 'kerry' FROM DUAL;
1 row inserted
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- ----------------------
1 kerry
SQL COMMIT;
Commit complete
SQL SELECT * FROM TMP_TEST;
IDNAME
---------- ------------------------
SQL
复制代码
3:关于临时表只对当前会话或事务可见 。每个会话只能查看和修改自己的数据 。
用DM用户登录数据库,打开SESSION 1后,创建临时表TMP_TEST
复制代码
CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT DELETE ROWS;

CREATE GLOBAL TEMPORARY TABLE TMP_TEST ON COMMIT DELETE AS SELECT * FROM TEST;
SQL CREATE GLOBAL TEMPORARY TABLE TMP_TEST
(
ID NUMBER ,
NAME VARCHAR2(32)
) ON COMMIT DELETE ROWS;
Table created
SQL INSERT INTO TMP_TEST
SELECT 1, 'kerry' FROM DUAL;
1 row inserted
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- ---------------------
1 kerry
SQL COMMIT;
Commit complete
SQL SELECT * FROM TMP_TEST;
ID NAME
---------- -----------------------
SQL
复制代码
用sys用户登录数据库,打开SESSION 2
SELECT * FROM DBA_TABLES WHERE TABLE_NAME='TMP_TEST' --可以查到临时表数据
SELECT * FROM DM.TMP_TEST; --查不到数据 , 即使TMP_TEST临时表存在数据 。
临时表与永久表区别
复制代码
SQL SELECT TABLE_NAME, TABLESPACE_NAME,"LOGGING",
"TEMPORARY", DURATION, "MONITORING"
FROM DBA_TABLES WHERE TABLE_NAME IN ('TMP_TEST', 'TEST') ;
TABLE_NAMETABLESPACE_NAME LOGGING TEMPORARY DURATIONMONITORING
------------- --------------------- --------- ----------- ---------
TESTTBS_EDS_DATAYESNYES
TMP_TESTNOYSYS$SESSIONNO
复制代码
oracle临时表空间删除和重建过程分享临时表空间用来管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象,当ORACLE里需要用到SORToracle临时表怎么建的时候oracle临时表怎么建 , 并且当PGA中sort_area_size大小不够时oracle临时表怎么建,将会把数据放入临时表空间里进行排序 。临时表空间存储大规模排序操作(小规模排序操作会直接在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 。
STEP1: Find the existing temp tablespace details
STEP2: Create another Temporary Tablespace TEMP1
STEP3: Move Default Database temp tablespace
STEP4: If any sessions are using temp space, then kill them.
STEP5: Drop the original temp tablespace.
Drop temp tablespace
If you want to change the name from TEMP1 to TEMP, then follow the same process as below.
STEP6: Create TEMP tablespace
STEP7: Make TEMP as default tablespace
STEP8: Drop temporary for tablespace temp1
关于oracle临时表怎么建和oracle怎么创建临时表的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读