关于数据库备份

来源:互联网 发布:瞻博网络工厂 编辑:程序博客网 时间:2024/05/21 22:29

Oracle数据

任务描述

描述:将用户oa中的OA表空间的表,导入到用户tddc_ywjg中的表空间TDDC_YWJG中

方法(针对小数据量)

采用exp与IMP导出导入命令进行

10g以后大量数据采用数据泵(EXPDP和IMPDP命令

原理

以exp命令导出的.dmp文件中指定了其表空间,如果直接以imp命令导入的话,相应的数据表格等还会储存在原来的表空间中

  我们首先将原表空间名改为要转入的表空间名,这样.dmp文件中指定的表空间就是要转入的表空间了,最后再将名字换回来导入,由于只导出导入数据库会丢失序列等信息,所以采取用户导出的方式

过程

1、查询原表空间物理路径

select file_name, tablespace_name from dba_data_files;

2新建表空间(与原表空间路径相同),用户,授权

createtablespace TDDC_YWJG

datafile'E:\APP\ADMINISTRATOR\ORADATA\GOLF\ TDDC_YWJG.DBF'

size 500m

autoextend on

next 100mmaxsize unlimited

extentmanagement local; 

 

create usertddc_ywjg identified by tddc_ywjg

defaulttablespace TDDC_YWJG

 

grant dbaconnect,resource to tddc_ywjg;

grantcreatesequence,selectanysequencetotddc_ywjg

 

2、修改表空间名称(将OA换成TDDC_YWJG

alter tablespaceTDDC_YWJG rename toTDDC_YWJG_bak;

alter tablespaceOA rename to TDDC_YWJG;

3、导出

exp oa/oa@192.9.30.33/orcl file=E:\database\sequence.dmp log= E:\database\sequence.log

4、把名字改回去

alter tablespaceTDDC_YWJG rename toOA;

alter tablespaceTDDC_YWJG_bak rename toTDDC_YWJG;

5导入

imp tddc_ywjg/tddc_ywjg@192.9.30.33/orclfile=E:\database\sequence.dmp log= E:\database\isequence.log full=y

错误方法

1、查询原表空间物理路径

select file_name, tablespace_name from dba_data_files;

2、新建表空间(与原表空间路径相同),用户,授权

如上

3、执行命令:

导出:

EXPoa/oa@192.9.30.33/orcl tablespaces=OA file=E:\database\OA.dmp ignore=y

导入

imptddc_ywjg/tddc_ywjg@192.9.30.33/orcl file=E:\database\OA2.dmp FULL=Y ignore=y

错误结果

表空间tddc_ywjg为空,表空间OA多了一份

出现的问题

1、客户端精简版(instantclient_11_2)是没有exp与imp命令

安装客户端完整版

2、客户端安装:

安装程序进行到最后

[INS-20802]Oracle Net Configuration Assistant 失败

不出现监听配置

方法:管理员身份运行安装程序setup.exe

3、导出成功终止,但有警告

显示如下:

经查证警告是由于服务器与客户端编码不一致导致,不影响最后导入结果,在结尾加ignore=y就不会出现了。

4、关于空表不能导出的问题

空表不能导入导出,需要给空表添加一些数据,11G中有个新特性,当表无数据时,不分配segment,以节省空间

解决方法:

查找空表

select 'altertable '||table_name||' allocate extent;' from user_tables where num_rows=0

把查询结果导出,就是把语句复制出来单独运行,即给空表分配segment

如:alter table ACT_HI_ATTACHMENT allocate extent;

5、导出表空间丢失序列等信息

EXP oa/oa@192.9.30.33/orcltablespaces=TDDC_YWJG file=E:\database\TDDC_YWJG.dmp

IMP tddc_ywjg/ tddc_ywjg@192.9.30.33/orcl tablespaces=TDDC_YWJG file=E:\database\TDDC_YWJG.dmp

问题:只将表导入了,缺少序列等内容

解决:以用户的方式导出导入

6、关于数据泵

需要以SYSDB身份建立目录才可导出

导入导出语法总结

1、导出:exp

完全导出

Exp  username/password@service  BUFFER=64000 file=储存路径\xx.dmp  ignore =y

导出用户:

Expusername/password@service BUFFER=64000 file=储存路径\xx.dmp owner=username   ignore=y

导出表:

Expusername/password@service BUFFER=64000 file=储存路径\xx.dmp owner=username tables=table_name ignore =y

导出表空间

Expusername/password@service BUFFER=64000 file=储存路径\xx.dmp owner=username tablespace=tablespace_name ignore=y

2、导入imp

完全导入

Imp  username/password@service  BUFFER=64000 file=储存路径\xx.dmp  full=y

导入用户

imp  username/password@service BUFFER=64000 file=储存路径\xx.dmp      

fromuser=username  touser=username  full=y

导入表

Imp  username/password@service  BUFFER=64000 file=储存路径\xx.dmptables=table_name  full=y

导入表空间

Imp  username/password@service  BUFFER=64000 file=储存路径\xx.dmp tablespace=tablespace_name  full=y