oracle的数据库的导入导出

上传人:206****923 文档编号:37505594 上传时间:2018-04-17 格式:DOCX 页数:4 大小:21.38KB
返回 下载 相关 举报
oracle的数据库的导入导出_第1页
第1页 / 共4页
oracle的数据库的导入导出_第2页
第2页 / 共4页
oracle的数据库的导入导出_第3页
第3页 / 共4页
oracle的数据库的导入导出_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《oracle的数据库的导入导出》由会员分享,可在线阅读,更多相关《oracle的数据库的导入导出(4页珍藏版)》请在金锄头文库上搜索。

1、从一个用户 expdp 导出再 impdp 导入到另一个用户(示例:讲 scott 用户里面的表全部迁移到新建的 test 用户里面) 如果想导入的用户已经存在: 1.导出之前需要做的一些操作,进入数据库,默认为 sys 用户 SQL create directory dumpdir as /home/oracle/test_bk ;(该备份 路径是需要手动创建的) SQL grant read,write on directory dumpdir to scott(scott 为源用户);导出用户 expdp user1/pass1 directory=dumpdir dumpfile=us

2、er1.dmp 示例:expdp scott/tiger directory=dumpdir dumpfile=scott.dmp 2.导入之前需要做一些操作,进入数据库,默认为 sys 用户 SQL create directory dumpdir as /home/oracle/test_bk ;(该备份 路径是需要手动创建的) SQL grant read,write on directory dumpdir to test(test 为目标用户);导入用户 impdp test/test directory=dumpdir dumpfile=scott.dmp REMAP_SCHEMA

3、=scott:test full=y; 如果想导入的用户不存在: 1. 导出用户 expdp user1/pass1 directory=dumpdir dumpfile=user1.dmp 2. 导入用户 impdp system/passsystem directory=dumpdir dumpfile=user1.dmp REMAP_SCHEMA=user1:user2 full=y; 3. user2 会自动建立,其权限和使用的表空间与 user1 相同,但此时用 user2 无法登录,必须修改 user2 的密码impdp 遇到的错误 C:Documents and Settings

4、Administratorimpdp aaa/ccc directory=data_du mp dumpfile=fromaaa.dmp logfile=IMP_DATA_20100618.LOG 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options ORA-39001: 参数值无效 ORA-39000: 转储文件说明错误 ORA-39143: 转储文件 “F:ora10G_expdpic_pr

5、ice_fromlufang.dmp“ 可能是原始的导出转储文件可恶的提示让我一直以为是版本的的问题,因为是 同事给的 dmp 文件,用的又都是 10.2.0 版本,自然以为用的是 expdp,所 以一直用 impdp 导入,其他的权限都没问题,所以最后怀疑同事用的是 exp,所以试了下 imp 导入,成功执行了。 遇到的 vnc 错误 解决方法:改变 xstartup 的权限 这个问题是很多人容易忽视的问题,也是造成连接成功后黑屏的原因之一。在 Linux 中,xstartup 的文件路径为:/root/.vnc/ (可以通过 locate xstartup 来查看 xstartup 的文件

6、路径) 所以需要执行:chmod 777 root/.vnc/xstartupExp/imp 和 expdp/impdp 的区别在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用 exp 的时候往 往是需要好几个小时,耗费大量时间。oracle10g 以后可以用 expdp 来导出 数据库花费的时间要远小于 exp 花费的时间,而且文件也要小很多。1.使用 expdp 要先在数据库中创建 directory,并给相应的用户 read,write 权 限. SQLcreate directory dmpdir as /u01/dmdir; SQLgrant read,write on di

7、rectory to test;2.常用导出方法 $expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=test $expdp scott/tiger DUMPFILE=tmp_dump.dmp DIRECTORY=dmpdir TABLES=(tmp_test:p1,tmp_test:p2) JOB_NAME=tmp_dump LOGFILE=tmp_dump.log $expdp scott/tiger DUMPFILE=full.dmp DIRECTORY=dmpdir FULL=Y JOB_NAME=full $e

8、xpdp scott/timer DUMPFILE=tmp_200703.dmp DIRECTORY=dmpdir TABLES=tmp QUERY=”where to_char(create_time,yyyy-mm-dd) 这种方法允许在这个 DPE 作业上输入命令查询及控制当前作业。3.您可以通过 PARALLEL 参数为导出使用一个以上的线程来显著地加速作业。 每个线程创建一个单独的转储文件,因此参数 dumpfile 应当拥有和并行度一 样多的项目。您可以指定通配符作为文件名,而不是显式地输入各个文件名, 例如: expdp ananda/abc123 tables=CASES di

9、rectory=DPDATA1 dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export 注意:dumpfile 参数拥有一个通配符 %U,它指示文件将按需要创建,格式 将为 expCASES_nn.dmp,其中 nn 从 01 开始,然后按需要向上增加。 在并行模式下,状态屏幕将显示四个工作进程。(在默认模式下,只有一个进 程是可见的)所有的工作进程同步取出数据,并在状态屏幕上显示它们的进度。分离访问数据文件和转储目录文件系统的输入/输出通道是很重要的。否则,与 维护 Data Pump 作业相关的开销可能超过并行线程的效益,并因此而

10、降低性 能。并行方式只有在表的数量多于并行值并且表很大时才是有效的。4.exp/imp 与 expdp/impdp 区别: (1) 把用户 usera 的对象导到用户 userb,用法区别在于 fromuser=usera touser=userb ,remap_schema=usera:usera 。例如:imp system/passwd fromuser=usera touser=userb file=/oracle/exp.dmp log=/oracle/exp.log; impdp system/passwd directory=expdp dumpfile=expdp.dmp re

11、map_schema=usera:userb logfile=/oracle/exp.log; (2) 更换表空间,用 exp/imp 的时候,要想更改表所在的表空间,需要手工 去处理一下, 如 alter table xxx move tablespace_new 之类的操作。 用 impdp 只要用 remap_tablespace=tabspace_old:tablespace_new (3) 当指定一些表的时候,使用 exp/imp 时,tables 的用法是 tables=(table1,table2,table3)。 expdp/impdp 的用法是 tables=table1,t

12、able2,table3 (4) 是否要导出数据行exp (ROWS=Y 导出数据行,ROWS=N 不导出数据行) expdp content(ALL:对象导出数据行,DATA_ONLY:只导出对象, METADATA_ONLY:只导出数据的记录) (5) expdp 是10g的新特性而且只能在服务器执行。而 exp/imp 是通用的。(6) oracle11g 中有个新特性,当表无数据时,不分配 segment,以节省空 间,所以 exp 导不出空表。解决的办法是用 expdp, 当然也可以设置 deferred_segment_creation 参数 或者 insert 一行,再 roll

13、back,但是 这样很麻烦。建立表结构相同的表 只是建立 ta 表,与 emp 表结构相同,并不添加数据 create table ta as select * from scott.emp where 1=0; 建立 tb 表,结构与 dept 结构相同,将 dept 表中的数据导入其中: create table tb as select * from scott.dept where 1=1;oracle 自增列oracle 中插入数据其中表 tab 的第一个字段 Id 是自动生成的,即用 sequence 和 trigger共通生成的现在把这个实现过程列出来1:创建表 sys2_klx

14、(id,sysnm,dwdm,jydm,jymc);2:创建 sequence 以便于自动生成 id:详见语法CREATE SEQUENCE “SYS2_KLX_0“ MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE ORDER NOCYCLE ;3:创建 Id 自动生成时的触发器:CREATE OR REPLACE TRIGGER “SYS2_KLX_TRIG“ BEFORE INSERT ON “SYS2_KLX“ FOR EACH ROWWHEN (new.ID is null)BEGIN SELECT “SYS2_KLX_0“.NEXTVAL INTO :NEW.“ID“ FROM DUAL; END;4:测试生成过程:insert into sys2_klx values(abc,swdm,jydm,jymc);上面语句运行时会出现“ORA-00947”的错误,原因是此时的 insert 要指明对应的列名才可以修改为insert into sys2_klx (sysnm,dwdm,jydm,jymc) values(abc,swdm,jydm,jymc);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号