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 
    where  d.FILE_ID = s.file_id  and   d.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 
    AUTOEXTEND  ON 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 AUTOEXTEND  ON NEXT 100M MAXSIZE UNLIMITED
    这个步骤可能比较耗时,耐心等待

多少不凡,只因不甘

原创文章

你可能感兴趣的:(ORACLE数据库迁移计划)