日期:2014-05-16 浏览次数:20443 次
导入导出实用程序用于实施数据库的逻辑备份和恢复
导出实用将数据库中的对象定义和数据备份到一个操作系统二进制文件中
导入使用程序读取二进制导出文件并将对象和数据载入数据库中
导出额导入实用程序的特点有:
1.可以按时间保存表结构和数据
2.允许导出指定的表,并重新导入到新的数据库中
3.可以吧数据库迁移到另外一台异构服务器上
4.在两个不同版本的Oracle数据库之间传输数据
5.在联机状态下进行备份和恢复
6.可以重新组织表的存储结构,减少链接及磁盘碎片
调用导入导出的三种方法:
在命令执行程序的参数和参数值
已交互的方式提示用户逐个输入参数的值
允许用户将运行参数和参数值存储在参数文件中,以便重复使用参数
导入导出数据库对象的四种模式:完全数据库、表、用户、表空间
导入导出整个数据库的所有对象
导入导出一个或多个指定的表或表空间
导入导出一个用户模式中的所有对象
导入导出一个或多个指定的表空间中的所有对象
导出使用程序有以下常用的命令参数
参数?????????????????????????? 说明
USERID?????????? 确定执行导出实用程序的用户名和口令
BUFFER????????? 确定导出数据时所使用的缓冲区大小,其大小用字节表示
FILE????????????????? 指定导出的二进制文件名称,默认的扩展名是.dmp
FULL??????????????? 指定是否以全部数据库方式导出,只有授权用户才可使用此参数
OWNER?????????? 要导出的数据库用户列表
HELP??????????????? 指定是否显示帮助消息和参数说明
ROWS????????????? 确定是否要导出表中的数据
TABLES?????????? 按表方式导出时,指定需导出的表和分区的名称
PARFILE????????? 指定传递给导出实用程序的参数文件名
TABLESPACES????? 按表空间方式导出时,指定要导出的表空间名
导出实用程序
按用户方式导出数据
exp gmd/gmd@oracle file=d:/1.dmp owner=gmd
按表方式导出数据
exp gmd/gmd@oracle tables=(GRP_PROVINCE,GRP_CITY,GRP_AREA) file=d:/2.dmp
按表空间方式导出数据
exp system/oracle@oracle tablespaces=(gmd) file=d:/3.dmp
使用参数文件导出数据
exp system/oracle@oracle parfile='d:\parameters.txt'
导入使用程序有以下常用的命令参数
参数????????????????????????????? 说明
USERID???????????? 指定执行导入的用户名和密码
BUFFER??????????? 指定用来读取数据的缓冲区大小,以字节为单位
COMMIT???????????? 指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交
FILE??????????????????? 指定要导入的二进制文件名
FROMUSER????? 指定要从导出转储文件中导入的用户模式
TOUSER??????????? 指定要将对象导入的用户名。FROMUSER与TOUSER可以不同
FULL?????????????????? 指定是否要导入整个导出转储文件
TABLES????????????? 指定要导入的表的列表
ROWS???????????????? 指定是否要导入表中的行
PARFILE???????????? 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数
IGNORE????????????? 导入时是否忽略遇到的错误,默认为N
TABLESPACES?????? 按表空间方式导入,列出要导入的表空间名
导入实用程序
按整个文件导入数据库
imp gmd/gmd@oracle file=d:1.dmp ignore=y full=y
按halibut用户的表导入到fantasy用户
imp gmd/gmd@oracle file=2.dmp fromuser=halibut touser=fantasy tables=(t_user,role)
使用参数文件导入数据
imp system/oracle@oracle parfile='d:\paramenters.txt'
?
--------------------------
create temporary tablespace zfmi_temp
tempfile 'D:\oracle\oradata\zfmi\zfmi_temp.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
//tempfile参数必须有
//创建数据表空间
create tablespace zfmi
logging
datafile 'D:\oracle\oradata\zfmi\zfmi.dbf'
size 100m
autoextend on
next 32m maxsize 2048m
extent management local;
//datafile参数必须有
//删除用户以及用户所有的对象
drop user zfmi cascade;
//cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数
//删除表空间
前提:删除表空间之前要确认该表空间没有被其他用户使用之后再做删除
drop tablespace zfmi including contents and datafiles cascade onstraints;
//including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数
//including datafiles 删除表空间中的数据文件
//cascade constraints 同时删除tablespace中表的外键参照
如果删除表空间之前删除了表空间文件,解决办法:
如果在清除表空间之前,先删除了表空间对应的数据文件,会造成数据库无法正常启动和关闭。
可使用如下方法恢复(此方法已经在oracle9i中验证通过):
下面的过程中,filename是已经被删除的数据文件,如果有多个,则需要多次执行;tablespace_name是相应的表空间的名称。
$ sqlplus /nolog
SQL> conn / as sysdba;
如果数据库已经启动,则需要先执行下面这行:
SQL> shutdown abort
SQL> startup mount
SQL> alter database datafile 'filename' offline drop;
SQL> alter database open;
SQL> drop tablespace tablespace_name including contents;
//创建用户并指定表空间
create user zfmi identified by zfmi
default tablespace zfmi temporary tablespace zfmi_temp;
//identified by 参数必须有
//授予message用户DBA角色的所有权限
GRANT DBA TO zfmi;
//给用户授予权限
grant connect,resource to zfmi; (db2:指定所有权限)
导入导出命令:
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件, imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利