技术开发 频道

利用exp备份历史数据

    【IT168 技术文档】通过exp传输表空间的特性对一些大库的历史数据进行备份,备份之后可以释放表空间及其文件,来用于存放新的数据。当需要使用历史数据时,可以利用imp的传输表空间特性将历史数据的备份导入到库中。

    测试:

    --创建测试表空间test和测试表test

SQL> create tablespace test datafile 'd:oracleoradatatest9test.dbf' size 10m autoextend on;

    表空间已创建。

SQL> create table test tablespace test as select * from dba_objects;

    表已创建。

SQL> insert into test select * from test;

    已创建6178行。

SQL> commit;

    提交完成。

SQL> select count(1) from test; COUNT(1) ---------- 12356

    --设置test表空间只读

SQL> alter tablespace test read only;

    表空间已更改。

    --按表空间传输模式exp导出test表空间,这里只是包含定义,并没有数据导出。

    D:oracleora92bin>exp transport_tablespace=y tablespaces=test file=test.dmp
    Export: Release 9.2.0.1.0 - Production on 星期五 6月 16 15:47:39 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    用户名: / as sysdba
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
    服务器使用 ZHS16CGB231280 字符集 (可能的字符集转换)
    注: 将不会导出表数据(行)
    关于导出可传输的表空间元数据...
    用于表空间 TEST...
    . 正在导出群集定义
    . 正在导出表定义
    . 正在导出表 TEST
    . 正在导出引用完整性约束条件
    . 正在导出触发器
    . 结束导出可传输的表空间元数据
    在没有警告的情况下成功终止导出。

    --手工备份test表空间对应的数据文件,如果是裸设备,则用dd。
    C:>copy d:oracleoradatatest9test.dbf test.dbf
    已复制 1 个文件。

    --删除test表空间,这样那些空间就可以被新的表空间利用了。

SQL> drop tablespace test including contents and datafiles;

    表空间已删除。

    --有朝一日,想使用历史数据了,可以把数据导入。这里的datafiles指定的是上面表空间对应数据文件的备份。

    D:oracleora92bin>imp transport_tablespace=y tablespaces=test datafiles='c:test.dbf' file=test.dmp
    Import: Release 9.2.0.1.0 - Production on 星期五 6月 16 15:51:45 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    用户名: / as sysdba
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    经由常规路径导出由EXPORT:V09.02.00创建的文件
    关于导入可传输表空间元数据...
    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
    导入服务器使用ZHS16CGB231280字符集 (可能的字符集转换)
    . 正在将SYS的对象导入到 SYS
    . 正在将SYSTEM的对象导入到 SYSTEM
    . 正在导入表 "TEST"
    成功终止导入,但出现警告。

    --查询,数据都恢复了。

SQL> conn system/oracle 已连接。 SQL> select count(1) from test; COUNT(1) ---------- 12356
0
相关文章