--表空间(数据文件)的迁移
--【在线的操作方法-移动表空间的数据文件的路径(更改表空间数据文件的路径)】
1.首先确定数据文件的状态 要为OFFLINE
SQLselect tablespace_name,status,contents from dba_tablespaces;
2.将该表空间修改为OFFLINE 【以users表空间为例】
SQLalter tablespace USERS offline;
SQLselect tablespace_name,status,contents from dba_tablespaces;  --查看表空间状态确定修改成功
3.移动数据文件 到新的路径
[oracle@xxx ~]$ host copy /oracle/oradata/itpuxdb/itpux01.dbf /oracle/oradata/itpuxdb/itpux02.dbf;
4.重新命名 该表空间的新路径和名称 (告诉数据库)
SQLalter tablespace users rename datafile '/oracle/oradata/itpuxdb/itpux01.dbf' to '/oracle/oradata/itpuxdb/itpux001.dbf';
5.修改表空间的状态为 ONLINE 状态
SQLalter tablespace users online;
-------------------------------------------------------------------------------------
--【离线的操作方法-移动数据文件-到其它目录】
1.关闭数据库 启动到模式下
SQLshutdown immediate
SQL>  startup mount
2. 移动数据文件
[oracle@xxx ~]$  host copy /oracle/oradata/itpuxdb/itpux01.dbf /oracle/oradata/itpuxdb/itpux02.dbf 
3. 重新命名(这里写更改数据库 因为数据库没有起来就没有表空间)
SQLalter database rename file '/oracle/oradata/itpuxdb/itpux01.dbf'
to '/oracle/oradata/itpuxdb/itpux001.dbf'
4. 打开数据库
SQLalter database open 
5. 检查状态
SQLselect * from dba_data_files where tablespace_name='ITPUX01';   
----------------------------------------------------------------------------------
1.copy数据文件到其它目录【因为根目录撑爆,在数据库挂掉的情况下】
2.启动startup mount;
3.在mount模式下执行这两条命令
alter database rename file '/oracle/app/oracle/oradata/ywxt1/undotbs01.dbf' to '/oradata/undotbs01.dbf';
alter database rename file '/oracle/app/oracle/oradata/ywxt1/temp01.dbf' to '/oradata/temp01.dbf';
4.启动数据库
startup
-------------------------------------------------------------------------------------
--把表和索引 迁移其它的表空间
1.查询该对象存放在哪个表空间
select segment_name,tablespace_name,extents,blocks from dba_segments where owner='SCUSER'
2.查询该对象是索引,还是表
select object_id,object_name,object_type,status,created from dba_objects where owner='SCUSER'
3.查询索引或者表 存放在哪个表空间
select index_name,table_name,tablespace_name,status from dba_indexes where owner='SCUSER'
4.移动表到另一个表空间
alter table scuser.table01 move tablespace scdata02
5.查询该表是否移动到该表空间
select segment_name,tablespace_name,extents,blocks fromsql数据库迁移另一个硬盘 dba_segments where
owner='SCUSER'
6.检查表是否有效(状态为 VALID 是有效)
select object_id,object_name,object_type,status,created from dba_objects where owner='SCUSER'
7.重建索引 并且将索引移动到另一个表空间
alter index scuser.idx_table01_id rebuild tablespace scdata02
8.查询索引对应的表空间
select index_name,table_name,tablespace_name,status from dba_indexes where owner='SCUSER'
9.如果表空间里面表有大字段?
alter table USER.RESUME move lob(INTRO) store as(tablespace USER);