您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle导入导出命令及常见问题
Oracle数据导入导出及常见问题一,背景说明:Oracle的备份是Oracle操作中常见的工作,常见的备份方案有:逻辑备份(IMP&EXP命令进行备份)、物理文件备份(脱机及联机备份)、利用RMAN(RecoveryManager)的增量物理文件系统备份。ORACLE数据库的逻辑备份分为四种模式:表空间备份(tablespace)、表备份(table)、用户备份(user)和完全备份(full)。Oracle的逻辑备份是使用IMP&EXP命令进行数据导入导出的操作。使用EXP命令导出或者使用IMP命令导入时,需要CreateSession系统权限,但是如果要导出其他的表,必须拥有权限:EXP_FULL_DATABASE。调用导入导出命令时,首先要估计所需的空间。EXP命令导出的文件是二进制文件(*.dmp)只能由对应的IMP命令进行读取恢复。导入导出的用途是:备份与恢复Oracle平台更换:可以在相同版本之间进行备份与恢复,Oracle较低版本的export数据文件可以import到高版本的Oracle数据库中,但是Oracle的版本只能是相邻的,不能垮版本。二.EXP导出数据EXP命令可以在交互环境下导出数据库中的数据,也可以在非交互环境下执行命令。交互环境下的命令执行,是一步一步执行的过程。代码演示:exp的交互环境D:\expscott/tiger@my_orcl①Export:Release10.2.0.3.0-Productionon星期一10月1917:04:142009Copyright(c)1982,2005,Oracle.Allrightsreserved.连接到:OracleDatabase10gEnterpriseEditionRelease10.2.0.3.0-ProductionWiththePartitioning,OLAPandDataMiningoptions输入数组提取缓冲区大小:4096②导出文件:EXPDAT.DMPscott.dmp③(2)U(用户),或(3)T(表):(2)U2④导出权限(yes/no):yesyes⑤导出表数据(yes/no):yesyes⑥压缩区(yes/no):yesno⑦已导出ZHS16GBK字符集和AL16UTF16NCHAR字符集.正在导出pre-schema过程对象和操作.正在导出用户SCOTT的外部函数库名.导出PUBLIC类型同义词.正在导出专用类型同义词.正在导出用户SCOTT的对象类型定义即将导出SCOTT的对象....正在导出数据库链接.正在导出序号.正在导出簇定义.即将导出SCOTT的表通过常规路径.....正在导出表BONUS导出了0行..正在导出表DEPT导出了10行..正在导出表EMP导出了14行..正在导出表SALGRADE导出了5行..正在导出表TBLSTUDENT导出了3行.正在导出同义词.正在导出视图.正在导出存储过程.正在导出运算符.正在导出引用完整性约束条件.正在导出触发器.正在导出索引类型.正在导出位图,功能性索引和可扩展索引.正在导出后期表活动.正在导出实体化视图.正在导出快照日志.正在导出作业队列.正在导出刷新组和子组.正在导出维.正在导出post-schema过程对象和操作.正在导出统计信息成功终止导出,没有出现警告。D:\代码解析:①Exp是导出命令,该命令后面紧跟“用户名/密码@服务器网络连接”。②Exp程序导出时使用的缓冲区大小,缓冲区越大,导出速度越快。直接回车代表使用默认值4096B。③Exp命令会把所有要到处的数据导出到一个Dmp文件中,该步骤是Exp询问导出的数据文件名称。④Exp程序询问导出整个用户还是导出某个表。默认导出整个用户。⑤Exp程序询问是否导出每张表的访问权限。默认导出访问权限。⑥Exp程序询问是否导出表中的数据。默认导出数据库表中的数据。⑦Oracle表中的数据可能来自不同的分区中的数据块,默认导出时会把所有的数据压缩在一个数据块上,IMP导入时,如果不存在连续一个大数据块,则会导入失败。也可以使用Exp命令时,设置各种参数,使准备就绪的Exp命令不需要与用户交互,按照参数的要求,Exp命令会一次性执行导出工作。要指定参数,您可以使用关键字:EXPKEYWORD=value或KEYWORD=(value1,value2,...,valueN)例如:EXPSCOTT/TIGERGRANTS=YTABLES=(EMP,DEPT,MGR)参数名说明USERID表示“用户名/密码”。BUFFER数据缓冲区大小。以字节为单位,一般在64000以上。FILE指定输出文件的路径和文件名。一般以.dmp为后缀名,注意该文件包括完整路径,但是路径必须存在,导出命令不能自动创建路径。COMPRESS是否压缩导出,默认yes。GRANTS是否导出权限,默认yesINDEXES是否导出索引,默认yesDIRECT是否直接导出,默认情况,数据先经过Oracle的数据缓冲区,然后再导出数据。LOG指定导出命令的日志所在的日志文件的位置。ROWS是否导出数据行,默认导出所有数据。CONSTRAINTS是否导出表的约束条件,默认yesPARFILE可以把各种参数配置为一个文本键值形式的文件,该参数可以指定参数文件的位置。TRIGGERS是否导出触发器,默认值是yes。TABLES表的名称列表,导出多个表可以使用逗号隔开。TABLESPACES导出某一个表空间的数据。Owner导出某一用户的数据。Full导出数据库的所有数据。默认值是no。QUERY把查询的结果导出。表1EXP参数说明代码演示:exp的非交互环境D:\expscott/tigerfile=employee.dmptables=(emp,dept)Export:Release10.2.0.3.0-Productionon星期一10月1917:38:252009Copyright(c)1982,2005,Oracle.Allrightsreserved.连接到:OracleDatabase10gEnterpriseEditionRelease10.2.0.3.0-ProductionWiththePartitioning,OLAPandDataMiningoptions已导出ZHS16GBK字符集和AL16UTF16NCHAR字符集即将导出指定的表通过常规路径.....正在导出表EMP导出了14行..正在导出表DEPT导出了10行成功终止导出,没有出现警告。D:\三.IMP导入IMP程序导入就是把Exp导出的文件重新导入到数据库的过程。导入时也有一些重要的参数:Fromuser:指出导出时dmp文件中记载的用户信息。Touser:dmp文件要导入到什么目标用户中。Commit:默认是N,在缓冲区满时是否需要commit,如果设为N,需要较大的回滚段。Igore:Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。若ignore=y,Oracle不执行CREATETABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。若ignore=n,Oracle不执行CREATETABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。代码演示:Imp导入D:\impsystem/managerfile=employee.dmpfromuser=scotttouser=employeecommit=yImport:Release10.2.0.3.0-Productionon星期一10月1917:54:512009Copyright(c)1982,2005,Oracle.Allrightsreserved.连接到:OracleDatabase10gEnterpriseEditionRelease10.2.0.3.0-ProductionWiththePartitioning,OLAPandDataMiningoptions经由常规路径由EXPORT:V10.02.01创建的导出文件警告:这些对象由SCOTT导出,而不是当前用户已经完成ZHS16GBK字符集和AL16UTF16NCHAR字符集中的导入.正在将SCOTT的对象导入到EMPLOYEE..正在导入表EMP导入了14行..正在导入表DEPT导入了10行即将启用约束条件...成功终止导入,没有出现警告。D:\四.常见问题数据库对象已经存在一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等。数据库对象已经存在,按缺省的imp参数,则会导入失败。如果用了参数ignore=y,会把exp文件内的数据内容导入。如果表有唯一关键字的约束条件,不合条件将不被导入。如果表没有唯一关键字的约束条件,将引起记录重复。数据库对象有主外键约束不符合主外键约束时,数据会导入失败。解决办法:先导入主表,再导入依存表。disable目标导入对象的主外键约束,导入数据后,再enable它们。权限不够如果要把A用户的数据导入B用户下,A用户需要有imp_full_database权限。导入大表(大于80M)时,存储分配失败默认的EXP时,compress=Y,也就是把所有的数据压缩在一个数据块上。导入时,如果不存在连续一个大数据块,则会导入失败。导出80M以上的大表时,记得compress=N,则不会引起这种错误。Imp和Exp使用的字符集不同如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息。Imp和Exp版本不能往上兼容Imp可以成功导入低版本Exp生成的文件,不能导入高版本Exp生成的文件根据情况我们可以用。
本文标题:Oracle导入导出命令及常见问题
链接地址:https://www.777doc.com/doc-2847869 .html