请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

欣东微医疗技术论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 87|回复: 0

Oracle移动表空间数据文件

[复制链接]

455

主题

557

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
37489
QQ
发表于 2017-9-15 15:21:24 | 显示全部楼层 |阅读模式
    为防止数据文件不够,增加表空间,把不常使用的大表迁移上去
1 在home/oracle下新建表空间
create tablespace users_ext datafile '/home/oracle/ora_data/users_ext.dbf' size 16384m autoextend on;
2 查询文件大小,准备转移空间
select segment_name, sum(bytes)/1024/1024 Mbytes from user_segments where segment_type='TABLE' group by segment_name
order by mbytes desc

3 查看表空间占用
select a.tablespace_name, total, free, total-free as used, substr(free/total * 100, 1, 5) as "FREE%", substr((total - free)/total * 100, 1, 5) as "USED%" from
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a,
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by a.tablespace_name;
4 迁移表空间和索引
alter table hsp.FEE_DETAIL_HIS_OLD move tablespace users_ext;
alter index hsp.SYS_C0014275 rebuild tablespace users_ext;
alter table hsp.DRUG_DYNAMIC_STOCK_LOG move tablespace users_ext;
alter index hsp.SYS_C0014251 rebuild tablespace users_ext;

另外,一个表空间可以对应多个表空间文件,语法如下
create tablespace tb_test01 datafile '/home/oracle/ora_data/tb_test01_01.dbf' size 100M autoextend on;
再添加一个数据文件:
alter tablespace tb_test01 add datafile '/home/oracle/ora_data/tb_test01_02.dbf' autoextend on;

实现把用户表空间中的数据文件从某一个路径移动到另一个路径
一、针对可offline的非系统表空间
本例移动oracle的USERS表空间,将其从/home/u01/app/oracle/oradata/oracle/users01.dbf 移动到/home/oracle/oracle_data/

1.查看要改变的表空间的数据文件信息
   
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='USERS';

2.将目标表空间设置为脱机状态   
SQL>alter tablespace USERS offline;

3.再次查看目标表空间的状态,确保其已经是脱机状态
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='USERS';

4.将原来的数据文件移动(或复制)到新的路径
SQL> host mv /home/u01/app/oracle/oradata/oracle/users01.dbf /home/oracle/oracle_data/
host mv /home/u01/app/oracle/oradata/oracle/users02.dbf /home/oracle/oracle_data/

5.修改该表空间的数据文件路径   
SQL> alter tablespace USERS rename datafile '/home/u01/app/oracle/oradata/oracle/users01.dbf'  to '/home/oracle/oracle_data/users01.dbf';
SQL> alter tablespace USERS rename datafile '/home/u01/app/oracle/oradata/oracle/users02.dbf'  to '/home/oracle/oracle_data/users02.dbf';

6.查看该表空间修改后的信息,确保信息无误
SQL>select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='USERS';

7.修改该表空间为在线状态
SQL>alter tablespace USERS online;

8.查看该表空间最后结果
SQL>  select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='USERS';

   

备注:本方法对SYSAUX、EXAMPLE表空间也适用

二、系统表空间移动
该方法需要数据库处于mount状态
1.关闭运行中的数据库
SQL> shutdown immediate

2.启动数据库到mount状态   
SQL> startup mount

3.移动系统表空间(SYSTEM表空间)的数据文件   
SQL> host mv /home/u01/app/oracle/oradata/oracle/SYSTEM01.DBF /home/oracle/oracle_data/

4.修改该表空间的数据文件路径   
SQL> alter database rename file '/home/u01/app/oracle/oradata/oracle/SYSTEM01.DBF' to '/home/oracle/oracle_data/SYSTEM01.DBF';

5.启动数据库,打开实例   
SQL> alter database open;

6.查看表空间修改结果
   
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='SYSTEM';

备注:本方法对UNDOTBS1、TEMP表空间也适用。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|eastwill.org  

GMT+8, 2017-10-23 01:11 , Processed in 0.023100 second(s), 11 queries , Apc On.

Powered by Eastwill! X3.2

© 2001-2013 Eastwill Inc.

快速回复 返回顶部 返回列表