Oracle导出表(即DMP文件)的两种方法

方法一:利用PL/SQL Developer工具导出:
菜单栏----> Tools---->Export Tables,如下图,设置相关参数即可:




方法二:利用cmd的操作命令导出,详情如下(备注:方法二是转载网上的教程):

1:G:\Oracle\product\10.1.0\Client_1\NETWORK\ADMIN目录下有个tnsname.ora文件,内容如下:
CMSTAR =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.13.200)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = cmstar)
    )
  )
其中:CMSTAR为数据库名,HOST为IP地址,所以可以仿效上面的例子手动添加数据录连接。
2:用cmd进入命令行
输入:tnsping cmstar
就是测试172.18.13.200是否连接成功
3:导入与导出,如下:

数据导出:
 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
   exp system/manager@TEST file=d:\daochu.dmp full=y
 2 将数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
 3 将数据库中的表table1 、table2导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
  
     上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
  不过在上面命令后面 加上 compress=y  就可以了 
数据的导入
 1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
   imp system/manager@TEST  file=d:\daochu.dmp
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
   在后面加上 ignore=y 就可以了。
 2 将d:\daochu.dmp中的表table1 导入
 imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1) 


注意事项:导出dmp数据时需要有导出表的权限的用户,否则不能导出。



  • 16
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
软件环境的一般要求 RHEL 5.x系统、RHEL 6.x系统 图形桌面环境 + 开发工具 + 中文Java支持 —— 在RHEL 6.x中安装,ksh需改用5.x的软件包 准备工作: yum install yum* yum groupinstall “X 窗口系统” “桌面” “桌面平台” “中文支持” “开发工具” [root@dbserver ~]# yum -y install java-* [root@dbserver ~]# cd /usr/lib/jvm/jre-1.6.0/lib [root@dbserver lib]# mv fontconfig.bfc fontconfig.bfc.origin [root@dbserver lib]# cp fontconfig.RedHat.6.bfc fontconfig.bfc [root@dbserver ~]# rpm -e ksh 因为默认没有装 [root@dbserver ~]# rpm -ivh .../ksh-5.2.14-36.el5.i386.rpm 用户环境要求 创建组账号oinstall、dba,用户账号oracle 创建Oracle基本目录 为用户oracle设置环境变量,并允许使用X终端 [root@dbserver ~]# groupadd oinstall //安装组 [root@dbserver ~]# groupadd dba //管理组 [root@dbserver ~]# useradd -g oinstall -G dba oracle [root@dbserver ~]# passwd oracle   [root@dbserver ~]# mkdir /opt/oracle [root@dbserver ~]# chown -R oracle:oinstall /opt/oracle/ [root@dbserver ~]# chmod -R 775 /opt/oracle/ [root@dbserver ~]# vi /home/oralce/.bash_profile …… umask 022 export ORACLE_BASE=/opt/oracle export ORACLE_SID=orcl export DISPLAY=:0.0 export LANG=zh_CN.UTF-8 export ORACLE_HOME=/opt/oracle/product/11.2.0/dbhome_2 [root@dbserver ~]# xhost + //须在图形环境执行 access control disabled, clients can connect from any host 内核及会话要求 修改内存调度参数、端口范围、I/O请求…… 增大用户oracle的进程数、文件数限制 [root@dbserver ~]# vi /etc/sysctl.conf …… fs.aio-max-nr = 1048576 限制并发未完成的请求,应该设置避免I/O子系统故障 fs.file-max = 6815744 文件句柄设置代linux系统中可以打开的文件的数量。 kernel.shmmni = 4096 共享内存的总页数 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048586 [root@dbserver ~]# sysctl –p kernel.sem: 以kernel.sem = 250 32000 100 128为例:        250是参数semmsl的值,示一个信号量集合中能够包含的信号量最大数目。        32000是参数semmns的值,示系统内可允许的信号量最大数目。        100是参数semopm的值,示单个semopm()调用在一个信号量集合上可以执行的操作数量。        128是参数semmni的值,示系统信号量集合总数 net.core.rmem_default: 示套接字接收缓冲区大小的缺省值。 net.core.rmem_max: 示套接字接收缓冲区大小的最大值。 net.core.wmem_default: 示套接字发送缓冲区大小的缺省值。 net.core.wmem_max: 示套接字发送缓冲区大小的最大值 [root@dbserver ~]# vi /etc/pam.d/login …… session required pam_limits.so [root@dbserver ~]# vi /etc/security/limits.conf …… oracle soft nproc 8192 oracle hard nproc 16384 oracle soft nofile 32768 oracle hard nofile 65536 运行runInstaller安装程序 将下载的两个zip包解压到同一位置 进入database目录,由用户oracle执行安装 通过 -jreLoc 参数指定中文Java环境的路径 [root@dbserver ~]# su - oracle [oracle@dbserver ~]$ cd /var/ftp/pub/database/ [oracle@dbserver database]$ ./runInstaller -jreLoc /usr/lib/jvm/jre-1.6.0 正在启动 Oracle Universal Installer... 检查临空间: 必须大于 80 MB。 实际为 64829 MB 通过 检查交换空间: 必须大于 150 MB。 实际为 2047 MB 通过 检查监视器: 监视器配置至少必须显示 256 种颜色。 实际为 16777216 通过 准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2011-10-12_08-07-32PM. 请稍候... SHAPE \* MERGEFORMAT 典型的安装设置 单实例数据库、企业版、管理口令 基本目录:/opt/oracle/ 软件位置:/opt/oracle/product/11.2.0/dbhome_1/ 数据库位置:/opt/oracle/oradata/ 产品清单:/opt/oracle/oraInventory/ SHAPE \* MERGEFORMAT SHAPE \* MERGEFORMAT 验证安装结果 从命令行使用sqlplus工具访问数据库 从浏览器访问 https://dbserver:1158/em/ 用户名sys、管理口令、连接身份SYSDBA [root@dbserver ~]# cd /opt/oracle/product/11.2.0/dbhome_1/bin/ [root@dbserver bin]# ./sqlplus sys AS SYSDBA …… Enter password: //输入管理密码 Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SHOW USER; //查看当前用户 USER is "SYS“ SQL> HELP INDEX; //查看指令列 …… COMPUTE LIST SET XQUERY CONNECT PASSWORD SHOW SHAPE \* MERGEFORMAT 优化执行环境 全局配置/etc/profile,添加基目录、执行路径…… 修改/etc/oratab,使orcl实例随数据库软件启动 [root@dbserver ~]# vi /etc/profile …… export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 export ORACLE_OWNER=oracle export ORACLE_SID=orcl export ORACLE_TERM=xterm export PATH=\$PATH:\$ORACLE_HOME/bin [root@dbserver ~]# vi /etc/oratab orcl:/opt/oracle/product/11.2.0/dbhome_1:Y Oracle的服务组件 监听器lsnrctl:提供数据库访问,默认端口1521 启动器dbstart、dushut:启动、停止数据库实例 控制器emctl:开启、关闭OEM平台,默认端口1158 [oracle@dbserver ~]$ lsnrctl status [oracle@dbserver ~]$ emctl stop dbconsole [oracle@dbserver ~]$ dbshut $ORACLE_HOME [oracle@dbserver ~]$ dbstart $ORACLE_HOME [oracle@dbserver ~]$ emctl stop dbconsole 使用系统服务脚本 编写/etc/init.d/oracle控制脚本 使用chkconfig工具添加为系统服务 使用service工具来启动、停止、重启oracle服务 SHAPE \* MERGEFORMAT 逻辑备份与恢复 配置Oracle备份目录 创建本地目录(如 /opt/mydbbackup),并调整属性 在SQL>环境中指定备份位置,并授权备份用户 [root@dbserver ~]# mkdir /opt/mydbbackup [root@dbserver ~]# chown oracle:oinstall /opt/mydbbackup/ [root@dbserver ~]# sqlplus sys AS SYSDBA Enter password: SQL> CREATE DIRECTORY dmpdir AS '/opt/mydbbackup'; Directory created. SQL> GRANT read,write ON DIRECTORY dmpdir TO sysman; Grant succeeded. SQL> GRANT all ON DIRECTORY dmpdir TO system; Grant succeeded. 逻辑备份与恢复 执行逻辑备份 使用expdp工具导出数据库 [root@dbserver ~]# expdp lisi/123456 DIRECTORY=dmpdir DUMPFILE=lisi-20111014.dmp #导出用户lisi的数据库 ……. [root@dbserver ~]# expdp system/123456 DIRECTORY=dmpdir DUMPFILE=orcl-full-20111014.dmp FULL=Y #导出整个数据库 …… 执行逻辑恢复 使用impdp工具导入数据库 [root@dbserver ~]# impdp lisi/123456 DIRECTORY=dmpdir DUMPFILE=lisi-20111014.dmp REUSE_DATAFILES=Y TABLE_EXISTS_ACTION=REPLACE #恢复用户lisi的数据库 [root@dbserver ~]# impdp system/123456 DIRECTORY=dmpdir DUMPFILE=orcl-full-20111014.dmp REUSE_DATAFILES=Y TABLE_EXISTS_ACTION=REPLACE FULL=Y #恢复整个数据库 注意: 
glibc-32bit-8.1-9 
glibc-devel-32bit-8.1-9
compat-libstdc++-33-3.2.3-47.3.x86_64.rpm 
libaio-0.3.105-2.x86_64.rpm
oracle 常用语句 --逻辑备份 --导出ORACLE参数 参数 说明 USERID 确定执行导出实用程序的用户名和口令 BUFFER 确定导出数据所使用的缓冲区大小,其大小用字节示 FILE 指定导出的二进制文件名称,默认的扩展名是.dmp FULL 指定是否以全部数据库方式导出,只有授权用户才可使用此参数 OWNER 要导出数据库用户列 HELP 指定是否显示帮助消息和参数说明 ROWS 确定是否要导出中的数据 TABLES 按方式导出,指定需导出和分区的名称 PARFILE 指定传递给导出实用程序的参数文件TABLESPACES 按空间方式导出,指定要导出空间名 --导出 --全库导出 exp system/accp@accp --在后面的参数中选择E --按用户方式导出 exp system/accp@newer file=d:\exp.dmp owner=scott,system --按方式导出 exp scott/tiger@accp tables=(emp, dept) file=scott_back_tab --按分区方式导出 exp scott/tiger@accp tables=(emp:p3) file=scott_back_tab --按空间方式导出 exp system/aptech@accp tablespaces=(users) file=tbs_users --按参数文件方式导出,将要导出的命令写在文本文件中 exp system/aptech parfile='C:\parameters.txt' --导入ORACLE参数 参数 说明 USERID 指定执行导入的用户名和密码 BUFFER 指定用来读取数据的缓冲区大小,以字节为单位 COMMIT 指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交 FILE 指定要导入的二进制文件名 FROMUSER 指定要从导出转储文件中导入的用户模式 TOUSER 指定要将对象导入的用户名。FROMUSER与TOUSER可以不同 FULL 指定是否要导入整个导出转储文件 TABLES 指定要导入的的列 ROWS 指定是否要导入中的行 PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数 IGNORE 导入是否忽略遇到的错误,默认为N TABLESPACES 按空间方式导入,列出要导入的空间名 --导入 --整个文件导入 imp accp/accp@accp file=d:\item_back.dmp ignore=y full=y --特定用户的导入到指定的用户下面 imp system/aptech@accp file=d:\item_back.dmp fromuser=scott touser=martin tables=(emp,dept) --参数文件方式导入,将要导入的命令文本写在文件中 imp system/oracle parfile='C:\parameters.txt' --物理备份 冷备份 1. connect sys/sys@newer as sysdba 2. shutdown immediate 3. 复制 oracle目录中的oradata\oradb的子目录中的所有文件 到备份的目录中 冷恢复 1.将数据文件还原回所在位置 ,然后启动数据库 2.starup 进行热备份必须处于“归档日志模式下” 1.启动sqlplus ,并以sysdba方式链接到数据库系统,输入下列命令看看是否处于归档模式 SQL> archive log list 数据库日志模式 非存档模式 自动存档 禁用 存档终点 d:\oracle\ora92\RDBMS 最早的概要日志序列 1 当前日志序列 3 2. 启动归档日志模式 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 143727516 bytes Fixed Size 453532 bytes Variable Size 109051904 bytes Database Buffers 33554432 bytes Redo Buffers 667648 bytes 数据库装载完毕。 SQL> alter database archivelog; 数据库已更改。 SQL> archive log list 数据库日志模式 存档模式 自动存档 禁用 存档终点 d:\oracle\ora92\RDBMS 最早的概要日志序列 1 下一个存档日志序列 3 当前日志序列 3 3.关闭存档模式, alter data base noarchivelog --查看归档日志方式,在SQL_PLUS中,不能在PL/SQL中 conn sys/accp@accp as sysdba; archive log list; --查看归档日志信息 SELECT DEST_ID,DEST_NAME,STATUS,DESTINATION FROM V$ARCHIVE_DEST WHERE STATUS='VALID'; --查看归档日志的日志 SELECT DEST_ID,NAME,ARCHIVED FROM V$ARCHIVED_LOG; --在命令行中操作数据库 --登录 sqlplus sys/accp@newer as sysdba --关闭数据库 shutdown immediate --启动数据库 startup restrict startup mount --修改归档日志模式 alter database archivelog ARCHIVELOG模式的优点: ·有可能进行完全恢复。由于对数据库所做的全部改动就保存在日志文件中,如果因为包括介质失效在内的某种失效而导致数据库文件丢失的话,可以利用物理备份和归档日志完全恢复数据库,不会丢失任何数据。所有已经提交的事务都可以查到。 ·有可能进行联机备份。允许用户在进行数据备份的同使用数据库。 ·空间可以立即脱机。 ·如果一个分布式数据库系统的所有节点都运行在ARCHIVELOG模式下,可以进行分布式恢复。 ·提供更多的恢复选择。 ·通过使用一个备用数据库,能够提供最大限度的灾难保护手段。 ARCHIVELOG模式的缺点: ·保存归档日志文件需要更多的磁盘空间。 ·DBA需要更多的间来管理数据库。 NOARCHIVELOG模式的特点: ·由于数据文件的丢失,如果需要恢复,只能恢复到最后一个完全脱机数据库备份。在最后一个完全脱机备份后的数据改动都将丢失。因此,需要进行非常频繁的脱机备份。 ·必须进行完整的数据库备份,不能仅备份部分数据库。 ·不能进行联机备份,脱机备份过程中不能使用数据库。 ·空间不能立即脱机。 ·DBA的管理的工作减少 采用Oracle ArchiveLog模式和非ArchiveLog模式对备份恢复的影响 备份的目的在于,当系统或数据库出现问题,能够快速将数据库进行恢复。对于Oracle数据库,一般有两种备份方式:“物理备份”和“逻辑备份”。“物理备份”指的是以copy数据文件方式进行备份;“逻辑备份”指的是用export等方式将数据从数据库中抽取出来。物理备份又可以分为冷备份和热备份。以下是各种备份的说明及前提条件。 - Cold Backup(冷备份) 主要指在关闭数据库的状态下进行的数据库完全备份,备份内容包括所有数据文件、控制文件、联机日志文件、ini文件。 - Hot Backup(热备份) 指在数据库处于运行状态下,对数据文件和控制文件进行备份,要使用热备份必须将数据库运行在(Archive Log)归档方式下。 - Export(逻辑备份)这是最简单的备份方法,可按数据库中某个、某个用户或整个数据库导出,并且支持全部、累计、增量三种方式。使用这种方法数据库必须处于打开状态,而且如果数据库不是在restrict状态将不能保证导出数据的一致性。 “物理备份”方式以相当于copy数据文件的方式进行备份,恢复可以快速以相当于copy的方式将备份的数据copy回来,所以备份速度特别是恢复速度非常快。 如果不采用Archive Log模式运行Oracle数据库,只有两种可用的备份方法:冷备份或export逻辑备份。根据关键业务服务器的特点,停下数据库进行冷备份是根本不可能的,因此如果不采用Archive Log,只能进行逻辑备份。 如果仅采用“逻辑备份”方式,恢复会有以下两个主要问题: 1. 无法恢复到最近间点的数据。只能恢复到上一次export的数据状态,当天的数据将丢失。Archive Log模式下的物理备份可以用数据文件备份及Archive Log备份,将数据库恢复到数据库失败前的间点,不会丢失数据。 2. 完成恢复可能需要很长间。恢复只能用import方法进行,所以需要的间包括: a. create database及所有的tablespace: 以每2分钟初始化一个2G的数据文件来计算,建立一个400G的Oracle数据库需要约6.7个小。 b. import。间较难确定,但保守估计应在10个小以上(如果import过程中出现问题,恢复间将延长) 3. 恢复步骤较多,易出现人为故障。 由于 这些原因,一般备份/恢复都把export/import的方式做为辅助备份/恢复方式,对一些重要的进行二级保护。这种备份方式也称为“逻辑备份”方式,当某些重要的被意外删除可进行逻辑import恢复。 而对于整个数据库的日常备份/恢复,需要采用“物理备份”方式,即以相当于copy数据文件的方式进行备份,恢复可以快速以相当于copy的方式将备份的数据copy回来。一般物理备份/恢复都采用Oracle RMAN工具来进行。 下面是“逻辑备份”与“物理备份”在数据库故障的恢复比较: 1. Oracle逻辑错误造成无法启动 逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据 物理恢复: 将所有datafile copy回来,并利用archivelog将数据库recover到故障前的状态 2. 某一个datafile故障或丢失 逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据 物理恢复: 将该datafile copy回来 3. 某一个tablespace故障 逻辑恢复: 重新create database及各tablespace,import。可恢复到上次export的数据 物理恢复: 将该tablespace copy回来 4. 意外drop table 逻辑恢复: Import 该table 物理恢复: 将备份恢复到另一服务器上,export该table,在原数据库中import 5. 意外drop user 逻辑恢复: Import 该user 物理恢复: 将备份恢复到另一服务器上,export该user,在原数据库中import 6. 意外drop tablespace 逻辑恢复: 情况较复杂,恢复易造成数据库之间的参照完整性被破坏。在此不做分析 物理恢复: 情况较复杂,恢复易造成数据库之间的参照完整性被破坏。在此不做分析 在进行数据库的恢复,一定要了解Oracle数据库的原理,分析故障的原因,然后针对故障的情况进行相应的恢复。例如以下情况: - Oracle程序文件损坏? - control file损坏? - Online redo log损坏? - datafile损坏? - archive log损坏? - table或其中数据被意外删除? 不同情况下需要采用的恢复手段都是不尽相同的,需根据损坏的情况进行相应的恢复步骤。
主要功能点: 不需要运行Oracle数据库软件,ODU直接读取数据库文件解析数据。 支持ASM,能够直接从ASM磁盘中导出数据,即使相关的磁盘组不能成功mount 支持从ASM中直接抽取出数据文件和其他任意存储在ASM中的文件(包括控制文件、日志文件和归档日志等),即使相关的磁盘组不能成功mount 支持的Oracle数据库版本包括7,8i,9i,10g,11g 支持多种平台的数据库,包括AIX、LINUX、HPUX、SOLARIS、WINDOWS等。能够在一个平台上导出其他平台的数据,比如在Windows 32位系统上,使用AIX系统上的数据文件导出数据。 支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 全面支持LOB字段: 支持CLOB、NCLOB和BLOB CLOB支持Big Endian和Little Endian字节序 支持LOB分区,子分区 支持同一个中,不同LOB列使用不同CHUNK SIZE的情况 CLOB数据可以导出到与其他列相同的文件中,或存储到单独的文件 LOB列在没有SYSTEM空间的情况下仍然能够导出 LOB列在相关的lob index损坏的情况下依然能够导出 支持各种,包括普通的HEAP,IOT和聚簇(CLUSTER) 支持IOT: 支持普通IOT导出 支持压缩IOT导出 支持IOT溢出段 支持IOT分区(包括子分区) 只能在有SYSTEM空间才能导出IOT 支持压缩 支持被truncate后的数据恢复 支持被drop后的数据恢复 在有SYSTEM空间的情况下,自动获取数据字典信息 支持在没有SYSTEM空间和数据字典损坏的情况下恢复数据,在没有数据字典可用,ODU能够自动判断数据的类型 支持10g及以上的大文件(BigFile)空间 全面支持64位系统,支持超过4G大小的数据文件。 支持复制操作系统命令不能复制的坏文件 支持同一个库中不同块大小的数据文件。 支持多种字符集之间的转换,能够正确的转换CLOB、NCLOB、NVARCHAR2列类型的数据到指定的字符集。 自动检测数据文件空间号和文件导出的数据格式包括纯文本和DMP文件两种。以纯文本导出,能够自动生成建的SQL语句和SQL*Loader导入所需的control文件 模拟Oracle的dump块功能,能够dump数据文件中的数据块 支持DESC,以显示的列定义 支持列出的分区和子分区

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值