ORACLE数据库迁移计划

数据迁移计划 原因:
oracle数据库数据文件将磁盘空间占满导致数据无法写入,如果删除历史数据,表空间不会释放占用物理空间不会释放,所以磁盘依旧是满的,现在需要腾出部分空间,然后挂在新的盘符为数据存储。
需要解决的问题

  1. 删除部分历史数据后表空间不会释放
迁移计划 一、备份
二、数据文件迁移
所有的命令执行要在 sqlplus下执行
1. 进入sqlplus
//进入sqlplus oracle命令提示空间 sqlplus /nologs conn /as sysdba

2. 关闭数据库
//关闭数据库 shutdown immediate

3. 移动数据文件位置
比如 将D:\app\Administrator\admin\orcl\JCPT_CA.DBF 移动到 C:\Users\Administrator\Oracle\JCPT_CA.DBF

4. 启动数据库到 mount状态
//数据库例程开启 startup mount

5. 执行数据文件位置更改
//更改数据文件位置 alter database rename file 'D:\app\Administrator\admin\orcl\JCPT_CA.DBF' to 'C:\Users\Administrator\Oracle\JCPT_CA.DBF';

6. 启动数据库
alter database open;

7. 重启验证
//关闭数据库 shutdown immediate //启动数据库 startup

三、删除历史数据,释放空间(如果执行了第二步这步可不做)
此步骤主要是为了删除数据后 释放表空间占用的物理空间
1. 删除分区表中无用的历史数据
//查询所有分区表数据数据文件//按照时间删除部分无用表分区 -- update global indexes 如果数据量大 可能会耗时 alter table ‘表名’ drop partition ‘分区’-- UPDATE GLOBAL INDEXES; //

2. 查询表空间中每个数据文件的实际使用空间
select d.bytes total ,s.bytes free,s.tablespace_name tablespace_, d.file_name file_name,d.file_id file_id from DBA_FREE_SPACE s ,dba_data_files d whered.FILE_ID = s.file_idandd.tablespace_name = '表空间名称'

3. 重设每个数据文件的空间大小为实际使用大小
//根据上一步得到的使用空间 在以下位置释放表空间略大于实际使用空间即可 alter database datafile '~/jcpt.dbf' resize 500m;

4. 关闭数据文件的自动扩展
-- 扩建数据文件 alter tablespace JCPT add datafile 'D:/oracle/product/10.2.0/oradata/orcl/jcpt01.dbf' size 30048m AUTOEXTENDON NEXT 100M MAXSIZE UNLIMITED-- 关闭表空间自动扩展 alter database datafile '/u01/app/oracle/oradata/fzyz/TS_JOB12_IDX_001.DBF' autoextend off;

5. 扩展数据文件到新的盘符/位置
alter tablespace JCPT add datafile 'D:/oracle/product/10.2.0/oradata/orcl/jcpt01.dbf' size 30048m; 并把jcpt01文件按照3.3.2步骤设置成自动扩展大小。 或者一气呵成: alter tablespace JCPT add datafile 'D:/oracle/product/10.2.0/oradata/orcl/jcpt01.dbf' size 30048m AUTOEXTENDON NEXT 100M MAXSIZE UNLIMITED 这个步骤可能比较耗时,耐心等待

多少不凡,只因不甘
【ORACLE数据库迁移计划】原创文章

    推荐阅读