oracle学习笔记----数据库导入导出

一、导入和导出

Oracle的备份是oracle操作中常见的工作,常见的备份方案包括有:

1、逻辑备份(IMP&EXP命令进行备份)

有如下四种模式:

(1)表空间备份(tablespace)

(2)表备份(table)

(3)用户备份(user)

(4)完全备份(full)

2、物理文件备份(脱机及联机备份

3、利用RMAN(Recovery Manager)的增量物理文件系统备份

oracle的逻辑备份是使用IMP&EXP命令进行数据导入导出操作。使用EXP命令导出或者使用IMP命令导入时,需要Create Session系统权限,但是如果要导出其他的表,必须拥有权限:EXP_FULL_DATABASE.

调用导入导出命令时,首先要估计所需的空间。EXP命令导出的文件时二进制文件(*.dmp)只能由对应的IMP命令进行读取恢复。导入导出的用途是:

·备份与恢复

·Oracle平台更换:可以在相同版本之间进行备份与恢复,Oracle较低版本的export数据文件可以import到高版本的Oracle数据库中,但是Oracle的版本只能是相邻的,不能跨版本。

·重组表

·在不同数据库用户间移动数据

·在不同数据库之间移动数据表空间

·将表的定义存入二进制的操作系统文件以防止用户操作失误造成数据丢失。

需要指出的是逻辑备份是不能对数据库进行完全恢复的,即数据的丢失时在所难免的。那么逻辑备份会丢失多少数据呢?从导出开始到导入为止,这段时间之内的数据将全部丢失,这对银行、证券交易所和电信等行业的数据库是绝对不能接受的。所以对于绝大多数真正的生产或商业数据库,逻辑备份永远是不能作为备份和恢复策略的基石,它们必须要有物理备份以保证全恢复,而逻辑备份只能作为辅助手段。

二、EXP导出数据

EXP命令可以在交互环境下导出数据库中的数据,也可以在非交互环境下执行命令。交互环境下的命令执行,是一步一步执行的过程。

1.交互式导出

图中一些代码的解析:(1)Exp是导出命令,该命令后面紧跟“用户名/密码@服务器网络连接”
    (2)Exp程序导出时使用的缓冲区大小,缓冲区越大,导出速度越快。直接回车代表使用默认值4096B。

(3)Exp命令会把所有要导出的数据导出到一个Dmp文件中,该步骤是Exp询问导出的数据文件名称。

(4)Exp程序询问导出整个用户还是导出某个表。默认导出整个用户。

(5)Exp程序询问是否导出每张表的访问权限。默认导出访问权限。

(6)Exp程序询问是否导出表中的数据。默认导出数据库表中的数据。

(7)Oracle表中的数据可能来自不同的分区中的数据块,默认导出时会把所有的数据压缩在一个数据块上,IMP导入时,如果不存在连续一个大数据块,则会导入失败。

2.非交互式导出

    也可以在使用Exp命令时,一次性设置好各种参数,是准备就绪的Exp命令不需要与用户交互,按照参数的要求,Exp命令会一次性执行导出工作。要指定参数,您可以使用关键字

EXP KEYWORD=value 或 KEYWORD=(value1,value2,...valueN)

例如:EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)

参数名                                        说明

USERID                    表示“用户名/密码”

BUFFER                    数据缓冲区大小。以字节为单位,一般在64000以上

FILE                      指定输出文件的路径和文件名,一般以.dmp为后缀名,注意该文件包

括完整路径,但是路径必须存在,导出命令不能自动创建路径。

COMPRESS                  是否压缩导出,默认yes

GRANTS                    是否导出权限,默认yes

INDEXES                   是否导出索引,默认yes

DIRECT                    是否直接导出,默认情况,数据先经过Oracle的数据缓冲区,然后再

导出数据。

LOG                       指定导出命令的日志所在的日志文件的位置

ROWS                      是否导出数据行,默认导出所有数据

CONSTRAINTS               是否导出表的约束条件,默认yes

PARFILE                   可以把各种参数配置为一个文本键值形式的文件,该参数可以指定参                                数文件的位置

TRIGGERS                  是否导出触发器,默认值是yes

TABLES                    表的名称列表,导出多个表可以使用逗号隔开

TABLESPACES               导出某个表空间的数据

Owner                     导出某一个用户的数据

Full                      导出数据库的所有数据。默认值是no

QUERY                     把查询的结果导出

三、导入数据

IMP程序导入就是把exp导出的文件重新导入到数据库的过程。导入时也有一些重要的参数。

>>>Fromuser:指出导出时dmp文件中记载的用户信息。

>>>Touser:dmp文件导入到什么目标用户中。

>>>Commit:默认是N,在缓冲区满时是否需要commit,如果设为N,需要较大的回滚段。

>>>Ignore:Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来觉得如何操作。若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法记录会添加到表中。如ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续回复下一个表。

D:\>imp system/manager file=employee.dmp fromuser=scott touser=employee commit=y

四、常见问题

·数据对象已经存在

一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等。

数据库对象已经存在,按缺省的imp参数,则会导入失败。

如果用了参数ignore=y,会把exp文件内的数据内容导入。

如果表没有唯一关键字的约束条件,将引起记录重复。

·数据库对象有主外键约束

不符合主外键约束时,数据会导入失败。

解决办法:先导入主表,再导入依存表。

disable目标导入对象的主外键约束,导入数据后,再enable他们。

·权限不够

如果要把A用户的数据导入B用户下,A用户需要由imp_full_datebase权限。

·导入大表(大于80M)时,存储分配失败

默认的EXP时,compress=Y,也就是把所有的数据压缩在一个数据块上。

导入时,如果不存在连续一个大数据块,则会导入失败。

导出80M以上的大表时,记得compress=N,则不会引起这种错误。

·imp和exp使用的字符集不同

如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息。

·imp和exp版本上不能往上兼容

imp可以成功导入低版本exp生成的文件,不能导入高版本exp生成的文件根据情况我们使用。

五、导入和导出实例

    

时间: 2024-08-06 20:02:55

oracle学习笔记----数据库导入导出的相关文章

oracle数据库导入导出方法

Oracle Database 10g以后引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中. 数据泵导出导入(EXPDP和IMPDP)的作用  1.实现逻辑备份和逻辑恢复.  2.在数据库用户之间移动对象.  3.在数据库之间移动对象  4.实现表空间搬移. 数据泵导出导入与传统导出导入的区别: 在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还

oracle数据库导入导出命令!

Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失). Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接 (通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端 修了条路,然后数据就可以被拉过来了) 这样你可以把数据导出到本地,虽然可能服务器离你很远

Oracle数据库导入导出逻辑备份方法总结

[EXP常用参数] USERID  即用户名/密码该参数就必须且为第一个: FILE    指定数据输出文件路径: LOG     指定日志输出文件路径: TABLES  导出指定表数据: FULL    完全导出整个文件(N): ROWS    导出数据行(Y): QUERY   用于导出表的子集的 select 子句: [示例] 1.[全库模式]将数据库orcl完全导出,用户名scott密码scott数据文件导出到D:/orcl/scott.dmp,日志文件到出到D:/orcl/scott.

Linux下Oracle启动、建立表空间、用户、授权、数据库导入导出

1.1进入到sqlplus启动实例 [[email protected] ~]$ su - oracle                                 --“切换到oracle用户”[[email protected] ~]$ lsnrctl start                               --“打开监听”[[email protected] ~]$ sqlplus /nolog                                --“进入到

Oracle数据库导入导出实战总结(同版本)

今天闲來无事,就导了一个数据库玩玩,顺便总结下 0.cmd 命令 管理员权限登录数据库 sqlplus /  as sysdba 1.cmd 连接远程数据库 sqlplus xn_balance/[email protected]:1521/orcl --------导出 2.cmd 命令导出数据库(没必要连上数据库,直接导) exp xn_balance/[email protected]:1521/orcl file=d:/daochu.dmp full=y 3. 将数据库中system用户

Oracle数据库——常用命令(用户管理、数据库导入导出)

--==cmd控制台==-- --==日常用户管理SQL==-- --连接到SQLPLUS >sqlplus /nolog --以dba身份连接 sql>conn / as sysdba --修改用户密码 将system用户的密码修改成system sql>alter user system identified by "system" --连接 sql>conn 请输入用户名:system 输入口令: --查询所有用户 sql>select * from

ORacle数据库导入导出数据

一.导出1.导出整个数据库通用命令:exp 数据库用户名/数据库密码@数据库别名 file=E:\目录\文件名.dmp举例:exp gwyxgldb /gwyxgldb @192.168.0.31  file=d:\gwyxgldb.dmp 2.导出部分表通用命令exp 数据库用户名/数据库密码@数据库别名 GRANTS=Y TABES=(要导出的表1, 要导出的表2,...) file=E:\目录\文件名.dmp exp gwyxgldb /gwyxgldb @192.168.0.31 gra

Python数据库操作 Mysql数据库导入导出和授权#学习猿地

# Mysql数据库导入导出和授权 ### 数据导出 #### 1.数据库数据导出 ```shell # 不要进入mysql,然后输入以下命令 导出某个库中的数据 mysqldump -u root -p tlxy > ~/Desktop/code/tlxy.sql ``` 导出一个库中所有数据,会形成一个建表和添加语句组成的sql文件 之后可以用这个sql文件到别的库,或着本机中创建或回复这些数据 #### 2.将数据库中的表导出 ```shell # 不要进入mysql,然后输入以下命令 导

Oracle学习笔记(1)

这是我的Oracle学习笔记系列的第一篇,主要总结了Oracle的体系结构,要学好Oracle,就要先了解Oracle的运行机制和原理.把今天学习的内容整理了一个图,备忘,点击可放大. 另外,还有几个语句(sql*plus): SYS用户登录 SQL> / as sysdba; 解锁scott用户 SQL> alter user scott identified by tiger account unlock; 切换到scott用户 SQL> conn scott/tiger; Null