dmp是数据库导出的文件,用以备份数据库用,一般会用exp命令来导出,用imp命令来导入也就是恢复数据库。
导出数据库备份dmp文件
exp user/password@orcl file=d:\dataBak\oracledmp log=e:\logtxt full=y
导入数据库备份dmp文件
imp user/password@orcl file=d:\dataBak\oracledmp log=e:\logtxt ignore=y full=y
基本就用这些就可以了,我每次导出导入就只用了这些参数,都能满足需求的。
full=y就是全部,把表、存储过程、函数等一起导出,导入时也一样,导入中的ignore=y是忽略重复表,就是原来你存在这些表中的某个的话,会报错误信息,加上这个就不会了。
oracle导入dump文件不需要用sqlplus,只需要在命令提示符下 *** 作即可。
可根据实际情况导入:
1 获取帮助
imp help=y
2 导入一个完整数据库
imp system/manager file=bible_db log=dible_db full=y ignore=y
3 导入一个或一组指定用户所属的全部表、索引和其他对象
imp system/manager file=seapark log=seapark fromuser=seapark
imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
4 将一个用户所属的数据导入另一个用户
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)
5 导入一个表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
6 从多个文件导入
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y
7 使用参数文件
imp system/manager parfile=bible_tablespar
bible_tablespar参数文件:
#Import the sample tables used for the Oracle8i Database Administrator's
Bible fromuser=seapark touser=seapark_copy file=seapark log=seapark_import
8 增量导入
imp system/manager inctype= RECTORE FULL=Y FILE=A
可以热备份:\x0d\SQL> alter database begin backup\x0d\然后退出SQL,将Oracle软件和数据文件直接拷贝\x0d\等都拷贝完了,再进sqlplus 执行:\x0d\SQL>alter database end backup\x0d\然后将begin时刻到end时刻产生的归档也拷贝出来,\x0d\这就完成了全备\x0d\\x0d\如果你要在oracle下备份整个数据库:可以用expdp方便的进行\x0d\expdp sys/XXX dumpfile=XXXXdmp directory=XXXX\x0d\其中directory是在oracle下建立的文件夹对象名\x0d\假如你没建立过\x0d\那么首先执行create directory dpdata1 as 'd:\test\dump';\x0d\然后把expdp这样写directory=dpdata1
一 意义 当我们使用一个数据库时 总希望数据库的内容是可靠的 正确的 但由于计算机系统的故障(硬件故障 网络故障 进程故障和系统故障)影响数据库系统的 *** 作 影响数据库中数据的正确性 甚至破坏数据库 使数据库中全部或部分数据丢失 因此当发生上述故障后 希望能重新建立一个完整的数据库 该处理称为数据库恢复 恢复子系统是数据库管理系统的一个重要组成部分 恢复处理随所发生的故障类型所影响的结构而变化 二 备份的方法ORACLE数据库有三种标准的备份 导出/导入(EXPORT/IMPORT) 冷备份 热备份 导出备份是一种逻辑备份 这种方法包括读取一系列的数据库日志 并写入文件中 这些日志的读取与其所处位置无关 冷备份和热备份是物理备份(也称低级备份) 它涉及到组成数据库的文件 但不考虑逻辑内容 下面我们分别介绍一下这三种备份方法及其特点 (一) 导出/导入(EXPORT/IMPORT)EXPORT/IMPORT是用来将ORACLE中数据移出/移入数据库 EXPORT将数据库中数据备份成一个二进制系统文件称为 导出转储文件 (EXPORT DUMP FILE) 并将重新生成数据库写入文件中 它有三种模式 a 用户模式 导出用户所有对象以及对象中的数据 b 表模式 导出用户所有表或者指定的表 c 整个数据库 导出数据库中所有对象 它的备份有三种类型 a 完全型(PLETE EXPORT) 备份整个数据库 b 积累型(ULATIVE ERPORT) 备份上一次积累型备份所改变的数据 c 增量型(INCREAMENTAL EXPORT) 备份上一次备份后改变的数据 EXPORT 的命令可以交互式进行 各参数的具体含义见附录 在进行导出备份时我们要考虑一点问题 那就是导出的一致性 在导出过程 中导出每读一次就读取一个表 因而尽管导出是在一个特点时自己开始的 但不同的表读取的时间不同 因此 导出开始读一个表时 此时表中的数据才是导出的数据 这样当大多数表按内部关键字和外部关键字相互联系时 在导出过程中这些相关联表的改变就会导致导出的不一致性 要避开这个 我们可以将导出过程安排在不对表 *** 作的时候进行 另外 当ORACLE中RESTRICTEP CONSISTENT 选项就可以保证导出数据一致性
IMPORT导入 导入的过程是导出的逆过程 这个命令先读取导出来的导出转储二进制文件 并运行文件 恢复对象用户和数据 IMPORT命令执行的方法和EXPORT方案有关 如果EXPORT所实施的是完全型方案(FULL)则在IMPORT时所有的数据对象 包括表空间 数据文件 用户都会在导入时创建 但考虑到数据库中的物理布局 预先创建表空间和用户是有用的 如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式 则需要预先设置好表空间 用户 数据文件 (二) 冷备份冷备份发生在数据库已经正常关闭的情况下 当正常关闭时会提供给我们一个完整的数据库 数据库使用的每个文件都被备份下来 这些文件包括 所有数据文件所有控制文件所有联机REDO LOG 文件INIT ORA文件(可选)值得注意的是冷备份必须是数据库关闭的情况下完成 当数据库开着的时候 执行数据库文件系统备份无效 作冷备份一般步骤是 正常关闭要备份的实例(instance); : 备份整个数据库到一个目录 启动数据库 SQLDBA>connect internalSQLDBA>shutdown normal SQLDBA>! cp <file> <backup directory>或SQLDBA>!tar cvf /dev/rmt/ /dg/oracle SQLDBA>startup
(三)热备份(ACHIRELOG)数据库需要二十四小时运行 而且随时有新的数据加入 数据丢失将影响整个公司 采用archivelog mode物理备份 设置数据库为automatic archivelog mode #su oracle%svrmgrl svrmgrl>connect internalsvrmgrl>startup mount svrmgrl>alter database archivelogsvrmgrl>shutdownsvrmgrl>exit%vi initoracle ora加入log_archive_start = true # if you want automatic archivinglog_archive_dest = $ORACLE_HOME/dbs/archlog_archive_format = log%s arc%dbstart%ps ef|grep archoracle : : : ora_arch_oracle 注 oracle database is in automatic archivelog mode
full offline entire database backup 当数据库初始完成后 这份备份是将来备份的基础 它提供了所有与数据库有关的拷贝 %dbshut%cp /oracle/oradata/oracle /system dbf /oracle/oradata/oracle /rbs dbf /oracle/oradata/oracle /temp dbf/oracle/oradata/oracle /tools dbf/oracle/oradata/oracle /users dbf/oraclecle/app/oracle/product/ /dbs/application dbf/oracle/app/oracle/product/ /dbs/apptmpsp dbf/oracle/app/oracle/product/ /dbs/apprlbksp dbf/oracle/oradata/oracle /redooracle log /oracle/oradata/oracle /control ctl /oracle/oradata/oracle /control ctl /oracle/oradata/oracle /control ctl <backup directory>%dbstart 注:以上 dbf文件为数据文件 log文件为日志文件 ctl文件为控制文件%exit %tar uvf /dev/rmt/ <backup files> 注:如果为oracle 则copy 相应的 data files relog files control files
每天做一次 partial online with archiving backups #su oracle%svrmgrl%svrmgrl>connect internal%svrmgrl>alter tablespace billsp begin backup%svrmgrl>alter tablespace billtmpsp begin backup%svrmgrl>alter tablespace billrlbksp begin backup%svrmgrl>alter tablespace system begin backup %svrmgrl>alter tablespace rbs begin backup%svrmgrl>alter tablespace temp begin backup%svrmgrl>alter tablespace tools begin backup %svrmgrl>alter tablespace users begin backup %svrmgrl>host cp all datafile to the backup storage #文件名如第一步中以 dbf结尾的 %svrmgrl>alter tablespace billsp end backup%svrmgrl>alter tablespace billtmpsp end backup%svrmgrl>alter tablespace billrlbksp end backup%svrmgrl>alter tablespace system end backup %svrmgrl>alter tablespace rbs end backup%svrmgrl>alter tablespace temp end backup%svrmgrl>alter tablespace tools end backup %svrmgrl>alter tablespace users end backup
做一个sql文件 如上所写
The billing system can recover to the point of failure when the failure occur
七 备份文件的恢复 恢复文件 以下是对"/etc/passwd"文件的恢复( 放入正确的磁带( 运行以下命令恢复"/etc/passwd"文件# rsh mt f /dev/rmt/ rew( 找到最近的磁带 向前进带到最近的"/etc/passwd" 比如要找星期三的"/etc/passwd"文件 运行如下命令)#rsh mt f /dev/rmt/ n fsf # ufsrestore if :/dev/rmt/ nufsrestore > ls. etc/ufsrestore > cd etc ufsrestore > ls./etc passwdufsrestore > add passwdWarnign ./etc File existsufsrestore > verboseverbose mode onufsrestore > extractExtract requested filesYou have not read any volumes yet .Unless you know which volume your file(s) are on you should start witch the last volume and work to wards the first.Specify next volume # extract file ./etc/passwdAdd linksSet directory mode ower and times.set owner /mode for . (yn)nDirectories already exit set mode anyway(yn)yufsrestore >quit 热备份可以在数据库打开打情况下进行 一般通过使用Alter命令改变表空间的状态来开始进行备份的 备份完成后 要恢其原来状态 否则redo log 会错配 引起数据库下次启动时对受影响的表空间进行完全覆盖 热备份的要求是 热备份工作必需要求数据库在Archivelog 方式下 *** 作 在SQLDBA状态下用alter database archivelog|noarchivelog命令可改变备份的模式 热备份只能在数据库不使用或使用率低的情况下进行 热备份需要大量的档案空间 一般情况 Oracle 以循环的方式写入Online redo log 文件 当填满第一个redo log文件后写第二个 直至最后一个 最后一个被填满后 后台进程LGWR就覆盖第一个 在Archivelog方式下 后台进程ARCH在每一个redo log 文件被覆盖前 给它作一个拷贝 一般 这些文档的redo log 文件被写入磁盘或磁带中 如果磁盘空间够用 建议使用磁盘 这样可大大减少完成备份所需的时间 在作热备份之前 要将config ora文件中的log_archive_start 设为true 将log_archive_dest规定archive redo log 文件的位置 log_archive_dest=/dg/oracle/arch/archlog_archive_start=true一旦数据库运行在archivelog状态下 就可以作备份了 热备份的命令文件由三部分组成 数据文件一个表空间一个空间地备份 a 设置表空间为备份状态 b 备份表空间的数据文件 c 恢复表空间为正常状态 备份归档要作log 文件 a 临时停止归档进程b log下那些在archive redo log目标目录中的文件c 重新启动archive进程d 备份归档的redo log 文件 用alter database backup controlfile命令来备份拷贝文件在热备份运行之前log_archive_dest目录可能已满 这时就要备份目录 然后删除文件 释放空间 这个过程有如下步骤 暂时停止archive进程 记录在log_archive_dest目录下的文件 重新启动archive 进程 备份archive redo log 文件 删除目录中的文件 sqldba lmode=y <<EOF arch archive log stop;exitEOF arch FILES= ls /dg/oracle/arch/arch dbf ;sqldba lmode=y<<EOF arch connect internalarchive log start;exitEOF arch tar rvf /dev/rmt/ FILESrm f $FILES
逻辑备份与物理备份的结合 前面介绍了三种备份的方法 在数据库做备份时 应该将数据这三种备份的特点灵活运用 我们首先比较一下三种方法的特性
方 法类 型恢 复 特 性EXPORT导出逻辑型可以将任何数据库对象恢复到它被导出时的状态乻hutdown将最近copyes of datafile 拷贝到$oracle_home/dbs目录 %svrmgrlsvrmgrl>connect internal…svrmgrl>startup mount pfile=filename exclusivesvrmgrl>alter database recover;注:将自动恢复数据到the point of failure; svrmgrl>alter database open; 当archive log文件过多时 在 做过部分备份后 可将current log sequence 之前的log arc删除 #su oracle%svrmgrlsvrmgrl>connect internal;svrmgrl>archive log list; #此处标有current log sequence 假设为 Svrmgrl>exit$cd /billdg/oracle/app/oracle/product/ /dbs/arch$ rm #将log arc之前的文件如log arc log arc 删除 冷 备 份物理型可将数据库到它被关闭的状态热 备 份物理型可将数据库恢复到任一时间点的状态
当数据库比较小时 处理业务也小时 冷备份导出就可以了 如果只对一两个表备份导出就够了 一般来说一个好 备份最终执行总包括逻辑和物理 导出确认数据库在逻辑的正确性而物理备份确保物理 另外 在进行备份时需要一些存储介质 对于这些介质应该对其作好管理 根据备份的内容 日期将介质统一编号 以免备份和恢复时弄错介质 造成原有的备份丢失 介质应存放在与计算机设备不同的地点 以免机房发生意外时 备份与计算机设备一同损坏
附录 tar命令tar option [arguments] filename option:c:创建一个由命令行指定的新的tarfilet:列出tarfile中的内容x:打开tarfile;f:使用其后的filename 或/dev/rmt/ | v:列出被恢复的文件名 p:恢复文件example:#tar cvf /dev/rmt/ /oracle备份/root 下的所有内容#tar tvf /dev/rmt/ 列出磁带上的所有内容#tar xvf /dev/rmt/ /oracle将磁带上的/oracle目录中的内容恢复到当前目录中
导出选项关键字 内 容 USERID 运行导出命令的帐号的用户名/口令 BUFFEER 用来取数据行的缓冲区的大小 FILE 导出转储文件的名字PRESS 导出是否应该压缩有碎片的段成一个范围 这将会影响STORAGE 子句 GRANTS 导出时否要导出数据库对象上的授权INDEXES 是否要导出表上的索引ROWS 是否应导出行 如它为 N 那么在导出文件中仅生成数据库 对象的DDLCONSSTRAINTS 是否导出表旧的约定条件FULL 如设为 Y 那么将执行一个整个数据库导出 *** 作OWNER 要导出的一系列数据库帐号 然后执行这些帐号的USER导出 *** 作TABLES 要导出的一系列表 执行这些表的TABLE导出 *** 作RECORDLENGTH 转储导出文件日志的长度(以字节为单位) 通常都使用缺省 除非要在两个不同 *** 作系统中传递导出文件INCTYPE 正在执行的导出 *** 作的类型(有效值有 PLETE (缺省值) CUMULATIVE 和 IVCREMENTAL )RECORD 在增量导出类型中的一个标记 标明是否将日志存储到数据字典中日志导出的表中PARFILE 要传递给导出的参数文件的名字 这个文件将包含所有参数的入口项ANALYZE 标明是否将移对象的统计信息写入导出转储文件中CONSISTENT 标明是否保留所有导出对象的读取一致复制 LOG 导出日志将要写入的文件的名字MLS 标明是否要导出MLS 标号MLS_LABEL_ 规定了MLS标号的格式
导入选择项USERID 运行导入命令的帐号的用户名/口令 BUFFEER 用来取数据行的缓冲区的大小 FILE 导入转储文件的名字SHOW 规定文件内容是否被显示 而不是被执行 EGORE 标明在执行 CREATE 命令时 是否忽略遇到的错误 如果正在导入的对象已经存在时 应使用这个参数 FULL 如设为 Y 那么将执行一个整个数据库导入 *** 作FROMUSER 在FULL=N的情况下 才有参数 它是一系列的数据库帐号 其对象应从导出转储文件中读取 TOUSER 一系列数据库帐号 导出转储文件扣的对象将要导入这些帐号 GRANTS 导入时否要导入数据库对象上的授权INDEXES 是否要导入表上的索引ROWS 是否应导入行 如它为 N 那么在导入文件中执行数据库对象的DDLFULL 如设为 Y 那么将执行一个整个数据库导出 *** 作TABLES 要导入的一系列表RECORDLENGTH 转储导入文件日志的长度(以字节为单位) 通常都使用缺省 除非要在两个不同 *** 作系统中传递导入文件INCTYPE 正在执行的导入 *** 作的类型(有效值有 PLETE (缺省值) CUMULATIVE 和 IVCREMENTAL )PARFILE 要传递给导入的参数文件的名字 这个文件将包含所有参数的入口项ANALYZE 标明是否将移对象的统计信息写入导入转储文件中LOG 导入日志将要写入的文件的名字MLS 标明是否要导入MLS 标号
热备份的命令文件 ORACLE_SID=oracle ORACLE_HOME=/dg/oraclesqldba lmode=y<<EOF arch connect internalalter tablespace SYSTEM begin backup;!tar cvf /dev/rmt/ /dg/oracle/dbms/sys dbfalter tablespace SYSTEM end backup;
alter tablespace BWT begin backup;!tar cvf /dev/rmt/ /dg/oracle/dbms/BWT dbfalter tablespace BWT end backup;
archive log stopexitEOF arch FILES= ls /dg/oracle/arch/arch dbf ;
sqldba lmode=y<<EOF arch connect internalarchive log start;exitEOF arch
tar rvf /dev/rmt/ $FILESrm f $files
sqldba lmode=y<<EOFarch alter database backup controlfile to /dg/oracle/dbms/bwtcontrfile backup ;exitEOF arch
lishixinzhi/Article/program/Oracle/201311/17668
你这错误有点多
首先expdp有几个必填参数,你都没有,如dumpfile和DIRECTORY;
然后你没指明要导出的对象,你是想按用户导还是按表空间或者其他的?
最后如果你expdp命令使用的账户是sys,那么你需要添加as sysdba的关键字;
你最好说明下你想要达到的结果,然后我给你写个大致的命令,你以这个模板来 *** 作吧
Oracle导出导出有两中方式:一、利用exp imp导出导入;二、利用Oracel数据泵expdp impdp导出导入。
一、利用exp imp导出导入
exp imp 语法如下:
exp:
1) 将数据库orcl完全导出
exp system/manager@orcl file=d:\orcl_bakdmp full=y
2) 将数据库中system用户的表导出
exp system/manager@orcl file=d:\system_bakdmp owner=system
3) 将数据库中表table1,table2导出
exp system/manager@orcl file=d:\table_bakdmp tables=(table1,table2)
4) 将数据库中的表customer中的字段mobile以"139"开头的数据导出
exp system/manager@orcl file=d:\mobile_bakdmp tables=customer query=\"where mobile like '139%' \"
imp:
1) 将备份文件bakdmp导出数据库
imp system/manager@orcl file=d:\bakdmp
如果数据表中表已经存在,会提示错误,在后面加上ignore=y就可以了。
2) 将备份文件bakdmp中的表table1导入
imp system/manager@orcl file=d:\bakdmp tables=(table1)
exp imp导出导入数据方式的好处是只要你本地安装了Oracle客户端,你就可以将服务器中的数据导出到你本地计算机。同样也可以将dmp文件从你本地导入到服务器数据库中。但是这种方式在Oracle11g版本中会出现一个问题:不能导出空表。Oracle11g新增了一个参数deferred_segment_creation,含义是段延迟创建,默认是true。当你新建了一张表,并且没用向其中插入数据时,这个表不会立即分配segment。
解决办法:
1、设置deferred_segment_creation参数为false后,无论是空表,还是非空表,都分配segment。
在sqlplus中,执行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
该值设置后,只对后面新增的表起作用,对之前建立的空表不起作用,并且注意要重启数据库让参数生效。
2、使用 ALLOCATE EXTEN
使用 ALLOCATE EXTEN可以为数据库对象分配Extent,语法如下:
alter table table_name allocate extent
构建对空表分配空间的SQL命令:
SQL>select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
批量生成要修改的语句。
然后执行这些修改语句,对所有空表分配空间。
此时用exp命令,可将包括空表在内的所有表导出。
二、利用expdp impdp导出导入
在Oracle10g中exp imp被重新设计为Oracle Data Pump(保留了原有的 exp imp工具)
数据泵与传统导出导入的区别;
1) exp和imp是客户端工具,他们既可以在客户端使用,也可以在服务端使用。
2) expdp和impdp是服务端工具,只能在Oracle服务端使用。
3) imp只适用于exp导出文件,impdp只适用于expdp导出文件。
expdp导出数据:
1、为输出路径建立一个数据库的directory对象。
create or replace directory dumpdir as 'd:\';
可以通过:select from dba_directories;查看。
2、给将要进行数据导出的用户授权访问。
grant read,write on directory dumpdir to test_expdp;
3、将数据导出
expdp test_expdp/test_expdp directory=dumpdir dumpfile=test_expdp_bakdmp logfile=test_expdp_baklog schemas=test_expdp
注意:这句话在cmd窗口中运行,并且最后不要加分号,否则会提示错误。因为这句话是 *** 作系统命令而不是SQL。
impdp导入数据:
1、给将要进行数据导入的用户授权访问。
grant read,write on directory dumpdir to test_impdp;
2、将数据导入
impdp test_impdp/impdp directory=dumpdir dumpfile=test_expdp_bakdmp remap_schema=test_expdp:test_impdp
以上就是关于ORACLE 的“dmp”是什么文件全部的内容,包括:ORACLE 的“dmp”是什么文件、oracle sqlplus怎么到如一个dump文件、oracle怎样完全备份等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)