oracle数据库中使用imp和exp命令

         最近几天由于项目需要搭建新的开发环境,需要处理数据。本来是很简单的事情,但是由于数据库需要使用在线环境的数据,变得有些麻烦,主要是以前一些数据库的处理都是小数据量,一个命令很短就执行完毕了,而这次数据库文件在200G左右,数据备份和恢复,以及备份文件的转移都成了问题,因为文件相对比较大了,在文件备份、转移、恢复的时间就成倍的增长,不能再向以前一样始终在本地客户端操作了。

   我将描述一下我自己的操作过程,和其中积累的经验。

   数据库信息如下:

   用户: SYSTEM   密码:ORACLE

   用户:TEST   密码:ORACLE

   SIDorcl

   第一步数据库的备份:

1、  数据导出:

exp的常用方法如下:

A、   将数据库orcl完全导出,用户名system 密码oracle 导出到

/data/oracle/myoraclebak.dmp中。

命令如下:

       exp system/oracle@orcl  file=/data/oracle/myoraclebak.dmp full=y log=exp.log

B、   将数据库中system用户与test用户的表导出

命令如下:

       exp system/oracle@orcl  file=/data/oracle/myoraclebak.dmp owner=(system,test) log=exp.log

C、   将数据库中的表table1table2导出

命令如下:

       exp test/oracle@orcl file=/data/oracle/myoraclebak.dmp tables=(table1,table2)  log=exp.log

D、   将数据库中的表table1中的字段filed1"00"打头的数据导出

命令如下:

       exp  test/oracle@orcl file=/data/oracle/myoraclebak.dmp tables=(table1) query=" where filed1 like '00%'" log=exp.log

E、    将数据库中test用户的表导出到多个文件,要求单个文件大小不允许超过2000M

命令如下:

       exp parfile=username.par file=/data/oracle/myoraclebak1.dmp, /data/oracle/myoraclebak2.dmp filesize=2000M  log=exp.log

       参数文件username.par内容

       userid=test/oracle@orcl

       buffer=8192000

       compress=n

       grants=y

       说明:username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改 filesize指定生成的二进制备份文件的最大字节数。

F、    增量导出

命令如下:

 exp   system/manager@svr_ora   inctype=incremental   file=d:/incremental.dmp

2、  我使用的命令如下:

more exp.sh

exp  test/oracle@orcl  file=/data/oracle/myoraclebak.dmp full=y log=exp.log

nohup ./exp sh &

进程运行时间24小时左右,最终myoraclebak.dmp文件大小32G左右。

第二步数据库导入:

3、  数据的导入

A、 myoraclebak.dmp 中的数据导入 neworcl数据库中。

命令如下:

imp test/oracle@neworcl  file=myoraclebak.dmp full=y ignore=y log=imp.log buffer=999999

在后面加上 ignore=y 是忽略警告错误。

B、 myoraclebak.dmp中的表table1 导入

命令如下:

imp test/oracle@neworcl  file= myoraclebak.dmp  tables=(table1) ignore=y log=imp.log buffer=999999

C、 导入一个或一组指定用户所属的全部表、索引和其他对象

命令如下:

imp system/oracle@neworcl file=myoraclebak.dmp log=imp.log fromuser=(test1,testuser2)

D、 将一个用户所属的数据导入另一个用户

命令如下:

imp system/oracle@neworcl file=myoraclebak.dmp log=imp.log fromuser=test touser=testuser2

E、  从多个文件导入

命令如下:

imp system/oracle@neworcl file=(myoraclebak1.dmp, myoraclebak2.dmp) log= imp.log, filesize=1G full=y

F、  增量导入

命令如下:

imp   system/manager@client_data   inctype=restore   ignore=y   full=y   file=d:/incremental.dmp

4、  我使用的命令如下:

more imp.sh

imp test/oracle@orcl file=myoraclebak.dmp full=y ignore=y log=imp.log buffer=999999

 nohup ./imp.sh &

 进程运行时间10小时左右。导入完毕后,数据占用空间200G左右

备注1

1、给用户增加导入数据权限的操作

第一,启动sql*puls

第二,以system/manager登陆

第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)

第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,

   DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,

      DBA,CONNECT,RESOURCE,CREATE SESSION  TO 用户名字

2、创建表空间脚本

--need change url :'/mnt/data/database/SBAP_CONF.DBF',size :2048M

CREATE TABLESPACE SBAP_CONF DATAFILE

'/mnt/data/database/SBAP_CONF.DBF' SIZE 2048M AUTOEXTEND ON NEXT 2048M MAXSIZE UNLIMITED

NOLOGGING

PERMANENT

EXTENT MANAGEMENT LOCAL

BLOCKSIZE 8K

SEGMENT SPACE MANAGEMENT AUTO

FLASHBACK OFF;

执行过程如下:

 

[oracle@REHL-oracle ~]$ sqlplus

 

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 06:57:31 2009

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

Enter user-name: /as sysdba

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

 

SQL> @/data/tablespace.sql

备注2

DROP TABLE mytable

TRUNCATE TABLE (schema)table_name

Oracle10g 回收站及彻底删除table : drop table xx purge

drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。

1.通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句

flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_table_name>];

将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。

若要彻底删除表,则使用语句:drop table <table_name> purge;

2.清除回收站里的信息

清除指定表:purge table <table_name>;

清除当前用户的回收站:purge recyclebin;

清除所有用户的回收站:purge dba_recyclebin;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值