oracle临时表空间可以迁移吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle临时表空间可以迁移吗相关的知识,希望对你有一定的参考价值。

SQL> shutdown immediate;
SQL> exit;
然后用oracle用户拷贝文件 [oracle@my]$ mv /dir1/lncrmbak/TEMP02.dbf /oradata/TEMP02.dbf拷贝完毕后再执行执行sqlplus / as sysdba,进入sqlplus SQL> startup mount; SQL> alter database rename file '/u01/app/oracle/oradata/sid/TEST.dbf' to '/u02/app/oracle/oradata/sid/TEST.dbf'; ERROR at line 1:ORA-01511: error in renaming log/data filesORA-01516: nonexistent log file, datafile, or tempfile "/dir1/lncrmbak/TEMP02.dbf"以上是操作过程 怀疑临时表空间不能迁移?请教各位是这样吗?我想迁移临时表空间应该怎么操作 谢谢

参考技术A 可以,不但可以移动到其它地方,还可以新建、更改默认临时表空间等。你这路径不对吧,移动的文件是"/dir1/lncrmbak/TEMP02.dbf",移动到"/oradata/TEMP02.dbf",rename file也应该是"原来的路径"到"移动到的路径"

Oracle中对临时表空间执行shrink操作

Oracle一个诡异的临时表空间不足的问题》中提到对临时表空间执行shrink space的操作,以前一直理解只有对表能做shrink space的操作,但从官方文档看,11g开始,就可以对临时表空间执行相同的操作。

可以简单测测,当前的临时表空间数据文件大小是512MB,

SQL> !ls -rlht /opt/oracle/oradata/BISALCDB/BISALPDB1/
total 1.2G
-rw-r----- 1 oracle oinstall 211M Jul 29 06:05 users01.dbf
-rw-r----- 1 oracle oinstall 5.1M Jul 29 06:05 tbs_32.dbf
-rw-r----- 1 oracle oinstall 201M Jul 29 06:05 tbs_32_01.dbf
-rw-r----- 1 oracle oinstall 321M Jul 29 15:57 sysaux01.dbf
-rw-r----- 1 oracle oinstall 311M Jul 29 16:27 system01.dbf
-rw-r----- 1 oracle oinstall 101M Jul 29 16:27 undotbs01.dbf
-rw-r----- 1 oracle oinstall 513M Jul 29 16:39 temp01.dbf

通过v$tempfile以及11g新引进的dba_temp_free_space视图,可以看到临时表空间的使用情况,

SQL> select file#,name,bytes/1024/1024 MB from v$tempfile;
     FILE# NAME                                                            MB
---------- ------------------------------------------------------- ----------
         3 /opt/oracle/oradata/BISALCDB/BISALPDB1/temp01.dbf              512


SQL> select * from dba_temp_free_space;
TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE SHARED           INST_ID
------------------------------ --------------- --------------- ---------- ------------- ----------
TEMP                                1610612736         3145728 1607467008 SHARED

执行收缩指令,

SQL> alter tablespace temp shrink space;
Tablespace altered.

可以看到临时表空间已经收缩至了2MB,

SQL> select file#,name,bytes/1024/1024 MB from v$tempfile;
     FILE# NAME                                                            MB
---------- ------------------------------------------------------- ----------
         3 /opt/oracle/oradata/BISALCDB/BISALPDB1/temp01.dbf        1.9921875


SQL> select * from dba_temp_free_space;
TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE SHARED           INST_ID
------------------------------ --------------- --------------- ---------- ------------- ----------
TEMP                                   6266880         3121152    3145728 SHARED

物理的数据文件同样收缩到2MB,

SQL> !ls -rlht /opt/oracle/oradata/BISALCDB/BISALPDB1/
total 1.2G
-rw-r----- 1 oracle oinstall 211M Jul 29 06:05 users01.dbf
-rw-r----- 1 oracle oinstall 5.1M Jul 29 06:05 tbs_32.dbf
-rw-r----- 1 oracle oinstall 201M Jul 29 06:05 tbs_32_01.dbf
-rw-r----- 1 oracle oinstall 321M Jul 29 15:57 sysaux01.dbf
-rw-r----- 1 oracle oinstall 311M Jul 29 16:27 system01.dbf
-rw-r----- 1 oracle oinstall 101M Jul 29 16:27 undotbs01.dbf
-rw-r----- 1 oracle oinstall 2.0M Jul 29 16:39 temp01.dbf

同样支持对临时数据文件的收缩,先增加个临时表空间数据文件,

SQL> alter tablespace temp add tempfile '/opt/oracle/oradata/BISALCDB/BISALPDB1/temp02.dbf' size 512m reuse autoextend on next 1m maxsize unlimited;
Tablespace altered.

初始大小是512MB,

SQL> !ls -rlht /opt/oracle/oradata/BISALCDB/BISALPDB1/
total 1.2G
-rw-r----- 1 oracle oinstall 211M Jul 29 06:05 users01.dbf
-rw-r----- 1 oracle oinstall 5.1M Jul 29 06:05 tbs_32.dbf
-rw-r----- 1 oracle oinstall 201M Jul 29 06:05 tbs_32_01.dbf
-rw-r----- 1 oracle oinstall 321M Jul 29 15:57 sysaux01.dbf
-rw-r----- 1 oracle oinstall 2.0M Jul 29 16:39 temp01.dbf
-rw-r----- 1 oracle oinstall 311M Jul 29 16:40 system01.dbf
-rw-r----- 1 oracle oinstall 101M Jul 29 16:40 undotbs01.dbf
-rw-r----- 1 oracle oinstall 513M Jul 29 16:40 temp02.dbf

从数据库端,可以看到其容量,

SQL> select file#,name,bytes/1024/1024 MB from v$tempfile;
     FILE# NAME                                                            MB
---------- ------------------------------------------------------- ----------
         3 /opt/oracle/oradata/BISALCDB/BISALPDB1/temp01.dbf        1.9921875
         5 /opt/oracle/oradata/BISALCDB/BISALPDB1/temp02.dbf              512


SQL> select * from dba_temp_free_space;
TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE SHARED           INST_ID
------------------------------ --------------- --------------- ---------- ------------- ----------
TEMP                                1616879616         6266880 1610612736 SHARED

对临时数据文件进行收缩,

SQL> alter tablespace temp shrink tempfile '/opt/oracle/oradata/BISALCDB/BISALPDB1/temp02.dbf';
Tablespace altered.

临时表空间已经进行了收缩,

SQL> select file#,name,bytes/1024/1024 MB from v$tempfile;
     FILE# NAME                                                            MB
---------- ------------------------------------------------------- ----------
         3 /opt/oracle/oradata/BISALCDB/BISALPDB1/temp01.dbf        1.9921875
         5 /opt/oracle/oradata/BISALCDB/BISALPDB1/temp02.dbf        1.9921875


SQL> select * from dba_temp_free_space;
TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE SHARED           INST_ID
------------------------------ --------------- --------------- ---------- ------------- ----------
TEMP                                  12533760         6242304    6291456 SHARED

临时数据文件,同样进行了收缩,

SQL> !ls -rlht /opt/oracle/oradata/BISALCDB/BISALPDB1/
total 1.2G
-rw-r----- 1 oracle oinstall 211M Jul 29 06:05 users01.dbf
-rw-r----- 1 oracle oinstall 5.1M Jul 29 06:05 tbs_32.dbf
-rw-r----- 1 oracle oinstall 201M Jul 29 06:05 tbs_32_01.dbf
-rw-r----- 1 oracle oinstall 2.0M Jul 29 16:39 temp01.dbf
-rw-r----- 1 oracle oinstall 101M Jul 29 16:42 undotbs01.dbf
-rw-r----- 1 oracle oinstall 321M Jul 29 16:43 sysaux01.dbf
-rw-r----- 1 oracle oinstall 311M Jul 29 16:43 system01.dbf
-rw-r----- 1 oracle oinstall 2.0M Jul 29 16:46 temp02.dbf

alter tablespace ... shrink还支持KEEP子句,可以指定收缩到的最小容量(MB),如果未指定,则会尽可能收缩至最小的容量,就像上面的操作。

具体操作信息,还可以参考官方文档《SQL Language Reference》的说明。

如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,

近期更新的文章:

如何检索IDC研究报告?

MySQL常见索引类型

Oracle一个诡异的临时表空间不足的问题

MySQL的TIMESTAMP数据类型

你知道雨的类型有几种?

近期的热文:

"红警"游戏开源代码带给我们的震撼

文章分类和索引:

公众号1000篇文章分类和索引

以上是关于oracle临时表空间可以迁移吗的主要内容,如果未能解决你的问题,请参考以下文章

oracle 11g解决临时表空间过大的问题

怎么修改mysql数据库临时表空间大小

临时表空间操作总结

Oracle临时表空间作用

Oracle临时表空间作用

6.2临时表--Oracle模式对象