oracle如何移动表空间?

Posted

tags:

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

我的oracle是安装在D:盘的,现在D盘的空间不够用了,
1、请问可以新建表空间在D盘吗?
2、如果可以,在使用和向表空间导入数据的时候要注意哪些问题?
3、麻烦大神们在E盘新建表空间给个详细的步奏和注意事项。
4、将D盘已有的表空间移动到E盘的详细步骤?

表空间是数据库里一个逻辑存储结构,其对应物理结构是数据文件,一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。

您所问的表空间在D盘、E盘的 实际上是数据文件所在的位置。
-- 以上是对于 表空间和数据文件的一个简单的感念,希望lz能先弄明白这个。

-- 移动表空间总的来说有两种办法。一种联机,一种脱机。分别介绍如下:
脱机(可以移动任何表空间中的数据文件,命令为alter database rename file)
SQL>shutdown
2:用系统命令移动数据文件,这里lz是win操作系统,可直接复制粘贴
3:sqlplus / as sysdbsa

SQL>startup mount
alter database rename file 'D:/xxxxx' to 'E:/xxxxx'
(注意在alter open之前不要退出)
SQL>alter database open;
二:联机(不可移动system表空间,回滚段和临时表空间中的数据文件,命令为alter tablespace )
SQL> conn / as sysdba

SQL> alter tablespace xxxx offline;

2:在操作系统层面上移动数据文件
3:alter tablespace xxxx rename datafile 'D:/xxxx' to 'E:/xxxxx';
4:alter tablespace xxxx online;
参考技术A 你只要往表空间添加数据文件就可以了,把新数据文件放在空闲的磁盘上。
移动到e盘,你只需要把D盘的文件移动到E盘,然后rename datafile就行了,告诉oracle新的文件位置就行了
参考技术B   具体的操作系统命令如下:
  D:\>IMP transport_tablespace=y datafiles= 'd:\localdb\local1.dbf'
  ,'d:\localdb\local2.dbf’ 
  用户名:internal/oracle@test as sysdba
  当执行完上述命令之后,会将表空间local和local2及其所包含的所有数据对象信息导入到目标数据库中。
参考技术C 不需要新建表空间,只做表空间数据文件迁移即可

第一步,将表空间offline
alter tablespace tablespace_name offline;
第二步,cp文件到新的目录并rename修改控制文件
cp /app3/oradb/shisl/plantation01.dbf /octopus/emc/shisl/plantation01.dbf
alter database rename file '/app3/oradb/shisl/plantation01.dbf' to '/octopus/emc/shisl/plantation01.dbf'
第三步,将相应表空间online
alter tablespace tablespace_name online;

Oracle移动数据文件

   由于oracle表空间数据文件规划问题导致当前数据文件所在文件系统空间不足,当其他文件系统空间充足情况下,可将数据文件移动到空间充足的文件系统下。本文主要描述Oracle表空间数据文件移动的操作步骤。

表空间数据文件移动操作步骤

1、查看当前待操作表空间DATATBS对应的数据文件的路径、状态。

SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name=DATATBS; 

2、将DATATBS表空间状态想修改为offline

SQL> alter tablespace datatbs offline; 

3、移动数据文件到指定的目录下。

SQL> host move /opt/oracle/oradata/datatbs.dbf /home/oracle/datatbs.dbf; 

4、重命名当前数据文件名为修改后的路径。

SQL> alter tablespace datatbs rename datafile /opt/oracle/oradata/datatbs.dbf to /home/oracle/datatbs.dbf; 

5、将表空间对应状态修改为online

SQL> alter tablespace datatbs online; 

6、操作完成。

以上是关于oracle如何移动表空间?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 11g 如何将表从一个表空间移动到另一个表空间

关于oracle 表空间的问题

如何收缩表空间

oracle数据库如何把表从一个表空间移到另一个表空间

Oracle移动数据文件

Oracle表空间管理