oracle数据备份与还原
Oracle Rac备份恢复

Oracle Rac备份恢复概述RAC 技术这两年热度不断提升,随着ORACLE推广力度不断加大以及时间的推移,RAC特性也在逐步被人所熟悉。
做为重要的数据库维护操作–备份恢复,本文将通过实际操作,演示RAC数据库环境中,MBA 实现RMAN备份与恢复。
首先要明确一点,通过RMAN创建备份集时,必须保证连接到的实例能够访问所有节点所生成的归档日志,否则会导致备份失败。
所以针对rac备份,MBA有一下2种情况。
∙各节点生成的归档文件放到共享存储上,这样自然可以确保每个节点都能够访问到,比如将归档存放到ORACLE的ASM或其它集群文件系统。
∙各节点生成的归档文件放在本地,创建共享目录作为MBA备份时使用的临时目录。
针对以上2种情况都需要开启数据库的归档模式,建立备份用户,并授予dba,sysdba的权限。
∙开启数据库归档模式(仅供参考)1) 关闭所有节点数据库实例[grid@node1 ~]$ srvctl stop database -d racdb2) 修改服务器配置参数SQL> startup mountSQL> alter system set cluster_database=false scope=spfile;注:cluster_database是用来确定数据库是否在rac环境的集群中。
如果cluster_database=true,那么对于rac数据库来说,无法在一个节点上mount exclusive数据库,也就无法更改archivelog模式。
SQL> shutdown immediate3) 开启归档模式SQL> startup mountSQL> alter database archivelog;SQL> alter database open;4) 恢复服务器配置参数SQL> alter system set cluster_database=true scope=spfile;SQL> shutdown immediate;5) 打开所有节点数据库实例[grid@node1 ~]$ srvctl start database -d racdb6) 检查归档日志是否已启用SQL> archive log list;数据库日志模式存档模式自动存档启用存档终点USE_DB_RECOVERY_FILE_DEST最早的联机日志序列98下一个存档日志序列99当前日志序列99创建备份使用的用户以及授权SQL> create user backup identified by backup;SQL> grant dba,sysdba to backup;1. 归档文件放到共享存储上1.1备份1.1.1编辑MarsServer.xml修改每个Oracle Agent端MarsServer.xml文件以下为MarsServer.xml文件内容<?xml version=”1.0″ encoding=”GB2312″?><MBA><ServerParameter><ServerName>192.168.50.106</ServerName><ServerPort>41001</ServerPort><LocalIP>192.168.50.158</LocalIP> <!–使用的是虚拟ip–><Log>6</Log><TemporaryPath></TemporaryPath><BindLocalIP>0</BindLocalIP><Encoding>GB18030</Encoding></ServerParameter><MarsOracleAgent><racdb><!– 1. 虚拟IP以及端口号,Host=,PORT=,这里例子是192.168.50.158,192.168.50.159,端口号是1521 –><!– 2. 数据库名,SERVICE_NAME = ,这里的例子是racdb–><JdbcUrl>(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.50.158)(PORT = 1521))(ADDRESS = (PROTOCOL =TCP)(HOST =192.168.50.159)(PORT = 1521))(LOAD_BALANCE = yes)(FAILOVER = ON)(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME = racdb)(FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 20)(DELAY = 15))))</JdbcUrl><!–当前OracleAgent所在机器上的实例名,根据实际情况修改–><NodeInstanceName>racdb1</NodeInstanceName><!–其他机器上的实例名,可能是多个–><OtherNodeInstance><!–某一个具体的实例名–><NodeInstanceName>racdb2</NodeInstanceName></OtherNodeInstance></racdb><BlockSize>262144</BlockSize></MarsOracleAgent></MBA>注:汉字部分,为解释,配置文件不需要出现重启各个节点Oracle Agent服务#/usr/local/mba/scripts/MBAOracleAgent.sh restart1.1.2发送备份任务1)添加实例Racdb为公共实例名192.168.50.158 是虚IP2)以backup用户连接实例,发备份任务RMAN备份方式必须备份控制、日志和所有的表空间选择RMAN备份方式,勾选RAC选项备份成功1.2恢复1.2.1准备使用sqlplus工具连接数据库执行shutdown immediate命令。
oracle数据库全库备份语句

oracle数据库全库备份语句Oracle数据库是一种关系型数据库管理系统,提供了全库备份的功能,可以用来备份整个数据库。
下面列举了10个不同的Oracle数据库全库备份语句。
1. 使用RMAN备份全库:使用RMAN工具备份整个Oracle数据库,可以使用以下命令:```RMAN> backup database;```2. 使用expdp备份全库:使用expdp工具备份整个Oracle数据库,可以使用以下命令:```expdp system/password@database_name full=Y directory=backup_dir dumpfile=full_backup.dmp logfile=full_backup.log;```3. 使用exp备份全库:使用exp工具备份整个Oracle数据库,可以使用以下命令:```exp system/password@database_name full=y file=full_backup.dmp log=full_backup.log;4. 使用Data Pump备份全库:使用Data Pump工具备份整个Oracle数据库,可以使用以下命令:```expdp system/password@database_name full=Y directory=backup_dir dumpfile=full_backup.dmp logfile=full_backup.log;```5. 使用RMAN增量备份全库:使用RMAN工具进行增量备份,可以使用以下命令:```RMAN> backup incremental level 1 cumulative database;```6. 使用expdp表空间备份:使用expdp工具备份指定表空间的数据,可以使用以下命令:```expdp system/password@database_name tablespaces=tablespace_name directory=backup_dir dumpfile=tablespace_backup.dmplogfile=tablespace_backup.log;7. 使用exp表空间备份:使用exp工具备份指定表空间的数据,可以使用以下命令:```exp system/password@database_name tablespaces=tablespace_name file=tablespace_backup.dmp log=tablespace_backup.log;```8. 使用RMAN备份控制文件和参数文件:使用RMAN工具备份控制文件和参数文件,可以使用以下命令:```RMAN> backup current controlfile;```9. 使用expdp备份指定用户的数据:使用expdp工具备份指定用户的数据,可以使用以下命令:```expdp system/password@database_name schemas=user_name directory=backup_dir dumpfile=user_backup.dmp logfile=user_backup.log;```10. 使用exp备份指定用户的数据:使用exp工具备份指定用户的数据,可以使用以下命令:```exp system/password@database_name owner=user_name file=user_backup.dmp log=user_backup.log;```以上是10个不同的Oracle数据库全库备份语句,可以根据实际需求选择合适的备份方式进行数据库备份。
oracle恢复表数据的sql语句

oracle恢复表数据的sql语句恢复表数据是在数据库中非常常见的操作,当我们需要恢复被误删除或者修改的表数据时,可以使用Oracle数据库提供的一些SQL 语句来完成。
下面列举了10个常用的Oracle恢复表数据的SQL语句。
1. 使用INSERT INTO语句恢复单条数据在Oracle中,可以使用INSERT INTO语句将备份的数据插入到目标表中,从而实现恢复。
例如:```INSERT INTO 表名(列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);```其中,表名为需要恢复数据的目标表,列1、列2、列3为目标表的列名,值1、值2、值3为备份数据中对应列的值。
2. 使用UPDATE语句恢复单条数据如果仅需要恢复某个或某几个列的数据,可以使用UPDATE语句来进行恢复。
例如:```UPDATE 表名 SET 列1 = 值1, 列2 = 值2, 列3 = 值3 WHERE 条件;```其中,表名为需要恢复数据的目标表,列1、列2、列3为目标表的列名,值1、值2、值3为备份数据中对应列的值,条件为恢复数据的条件。
3. 使用INSERT INTO SELECT语句批量恢复数据如果需要恢复多条数据,可以使用INSERT INTO SELECT语句来进行批量恢复。
例如:```INSERT INTO 表名 (列1, 列2, 列3, ...)SELECT 列1, 列2, 列3, ... FROM 备份表名 WHERE 条件;```其中,表名为需要恢复数据的目标表,列1、列2、列3为目标表的列名,备份表名为备份数据的表名,条件为恢复数据的条件。
4. 使用FLASHBACK TABLE语句恢复整个表如果表中的数据被误删除或修改,可以使用FLASHBACK TABLE语句将整个表恢复到某个时间点的状态。
例如:```FLASHBACK TABLE 表名 TO TIMESTAMP TO_TIMESTAMP('时间点', '日期格式');```其中,表名为需要恢复数据的表名,时间点为需要恢复到的具体时间,日期格式为时间的格式。
备份oracle数据库表的方法

备份oracle数据库表的方法备份Oracle数据库表是保证数据库数据安全的重要措施之一。
本文将介绍几种备份Oracle数据库表的方法,帮助用户选择适合自己的备份方式。
一、使用数据泵导出表数据数据泵是Oracle提供的一个强大的工具,可以将表数据导出为一个可移植的二进制文件。
使用数据泵导出表数据的步骤如下:1. 连接到数据库:使用SQL*Plus或SQL Developer等工具连接到Oracle数据库。
2. 导出表数据:运行以下命令导出表数据:```expdp username/password@connect_string tables=table_name directory=directory_name dumpfile=dumpfile_name.dmp```其中,username是数据库用户名,password是密码,connect_string是数据库连接字符串,table_name是要导出的表名,directory_name是存储导出文件的目录,dumpfile_name是导出文件的名称。
3. 导出结果:数据泵将会导出表数据,并保存在指定的目录中的导出文件中。
二、使用INSERT语句备份表数据除了使用数据泵,还可以使用INSERT语句将表数据备份到另一个表中。
这种方法适用于小型数据库,备份过程如下:1. 创建备份表:在同一个数据库中创建一个与原表结构相同的备份表。
```CREATE TABLE backup_table AS SELECT * FROM original_table WHERE 1=0;```2. 备份数据:运行以下命令将表数据备份到备份表中。
```INSERT INTO backup_table SELECT * FROM original_table;```注意,这个命令会将原表的所有数据复制到备份表中。
三、使用Oracle备份工具除了以上两种方法,还可以使用Oracle备份工具进行表数据备份。
使用NetBackup进行oracle备份和恢复

使用NetBackup进行oracle备份和恢复一、环境介绍:这个实验都是在vmware workstation里完成的。
由于NetBackup7只能装在64位的系统上,所以这里采用了64位的rhel5.5系统,以及oracle 10gr2 for linux_x64的软件包。
数据库的数据文件存储在ASM中。
安装rhel、oracle、netbackup这里不提,可以参考网上其他博文。
NetBackup的服务端、客户端以及媒体服务器都在同一台主机上()。
在安装netbackup7过程中,数据库的agent不需要额外再单独安装,安装客户端以及服务器端时默认已经安装了,只需要以oracle身份执行oracle_links将rman和netbackup 结合在一块即可。
以下主要针对备份和恢复做详细描述。
二、备份:在备份之前要创建一个适用于oracle的策略,否则无法进行备份的。
至于如何创建策略,可以参考官方文档。
这里已经创建了一个策略orabak,此策略类型是oracle,如图所示:创建完成后在页面存在一个名为“Default-Application-Backup”的默认日程,可以在日程选项里进行新增、删除、更新日程等操作。
本次试验不进行策略设置,默认日程已经能够满足测试的。
注意:jnbSA程序是netbackup的管理窗口,而jbpSA是客户端进行备份、恢复、归档操作的窗口。
要进行oracle的备份,必须以oracle用户运行jbpSA命令,如图所示:登录成功后会看到如下画面:选中要备份的数据库实例,这里只有db01一个实例,然后点击右下角的Backup按钮,会弹出Netbackup for oracle backup向导画面:点击下一步:这里选择认证方式,有OS认证以及oralce认证,如果是OS认证,则NBU会以oracle身份运行相关命令,因为之前登录的用户就是oracle。
如果是oracle认证,则User Name必须是具有sysdba权限的数据库用户,一般就是sys用户:Net service name可选的。
oracle数据库rman备份计划及恢复

oracle数据库rman备份计划及恢复1.rman完全恢复的前提条件:历史的datafile,controlfile和spfile备份,加上完整的archivelog和完好的redolog。
2.rman备份脚本: a.RMAN 0级备份命令:run{allocate channel c1 type disk;allocate channel c2 type disk;allocate channel c3 type disk;backup incremental level 0 tag 'level0' format "E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\RFDB_level_0_%u_%s_%p" as compressed backupset database;sql "alter system archive log current";backup filesperset 3 format "E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\arch_%u_%s_%p_%c"archivelog all delete input; #备份归档可选,可以单独定期备份release channel c1;release channel c2;release channel c3;} b.RMAN 1级备份命令:run{allocate channel c1 type disk;allocate channel c2 type disk;allocate channel c3 type disk;backup incremental level 1 tag 'level1' format 'E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\RFDB_level_1_%u_%s_%p' as compressed backupset database;sql 'alter system archive log current';backup filesperset 3 format 'E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\arch_%u_%s_%p'archivelog all delete input; #备份归档可选,可以单独定期备份release channel c1;release channel c2;release channel c3;} c.rman删除备份命令(在保留最近⼀天备份的情况下,删除其他备份):DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 1 DAYS; d.操作系统层⾯运⾏rman备份或删除命令(windows/linux):rman target sys/rf4rfvbgt56yhn@rfdb nocatalog CMDFILE 'D:\app\rman\rman_file\level_0.txt' log=E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\log\rman_level_0.log export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/db1export ORACLE_SID=atestexport PATH=$ORACLE_HOME/bin:$PATHrman target sys/123456@atest nocatalog CMDFILE '/u01/rman/rman.sh' log=/u01/rman/rman.log00 02 * * 1 bash /u01/rman_file/run_rman_0.sh00 02 * * 3 bash /u01/rman_file/run_rman_0.sh00 02 * * 5 bash /u01/rman_file/run_rman_0.sh00 04 * * * bash /u01/rman_file/run_delete.sh34 11 * * * bash /u01/rman_file/run_rman_0.sh e.rman参数设置:RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;3.rman恢复a.拷贝datafile,controlfile和spfile的rman备份,以及完整的archivelog和完好的redolog⽂件到新的数据库。
oracle数据库全库备份语句
oracle数据库全库备份语句Oracle数据库是一种关系型数据库管理系统,它可以用于存储和管理大量的结构化数据。
在进行数据库管理时,备份是非常重要的一项工作,它可以保护数据库免受数据丢失和系统故障的影响。
下面列举了十个Oracle数据库全库备份的语句,以供参考。
1. 使用RMAN进行全库备份:RMAN是Oracle提供的备份和恢复工具,可以通过以下命令进行全库备份:```RMAN> BACKUP DATABASE;```2. 使用EXPDP进行全库逻辑备份:EXPDP是Oracle提供的逻辑备份工具,可以通过以下命令进行全库备份:```expdp system/password@database_name directory=backup_directory dumpfile=full_backup.dmp full=y; ```3. 使用IMPDP进行全库逻辑恢复:IMPDP是Oracle提供的逻辑恢复工具,可以通过以下命令进行全库恢复:```impdp system/password@database_name directory=backup_directory dumpfile=full_backup.dmp full=y; ```4. 使用ALTER DATABASE进行全库备份:ALTER DATABASE命令可以备份整个数据库,可以通过以下命令进行全库备份:```SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/path/to/backup/controlfile.bkp';```5. 使用Data Pump进行全库备份:Data Pump是Oracle提供的数据导入导出工具,可以通过以下命令进行全库备份:```SQL> EXPDP system/password@database_nameDIRECTORY=data_pump_dir DUMPFILE=full_backup.dmp FULL=YES;```6. 使用RMAN进行全库增量备份:RMAN可以进行增量备份,只备份发生变化的数据,可以通过以下命令进行全库增量备份:```RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;```7. 使用EXP进行全库逻辑备份:EXP是Oracle提供的逻辑备份工具,可以通过以下命令进行全库备份:```exp system/password@database_name file=full_backup.dmp full=y;```8. 使用ALTER TABLESPACE进行表空间备份:可以通过ALTER TABLESPACE命令备份指定的表空间,可以通过以下命令进行表空间备份:```SQL> ALTER TABLESPACE tablespace_name BEGIN BACKUP;```9. 使用RMAN进行全库镜像备份:RMAN可以进行镜像备份,备份数据库的所有镜像拷贝,可以通过以下命令进行全库镜像备份:```RMAN> BACKUP AS COPY DATABASE;```10. 使用EXPDP进行全库逻辑备份,并压缩备份文件:可以通过以下命令进行全库逻辑备份,并对备份文件进行压缩:```expdp system/password@database_name directory=backup_directory dumpfile=full_backup.dmp full=y compression=all;```以上是十个Oracle数据库全库备份的语句,可以根据实际需求选择其中一种或多种备份方式进行数据库的备份工作。
orcle数据库备份语句
orcle数据库备份语句Oracle数据库备份是一项非常重要的任务,可以保障数据的安全性和完整性。
在进行数据库备份时,我们可以使用不同的语句和方法来完成备份操作。
以下是一些常用的Oracle数据库备份语句:1. 使用RMAN备份整个数据库:RMAN是Oracle推荐的备份工具,可以使用以下语句备份整个数据库:```RMAN> BACKUP DATABASE;```2. 使用RMAN备份指定表空间:如果只需要备份数据库中的特定表空间,可以使用以下语句:```RMAN> BACKUP TABLESPACE tablespace_name;```3. 使用RMAN备份指定数据文件:如果只需要备份数据库中的特定数据文件,可以使用以下语句:```RMAN> BACKUP DATAFILE 'datafile_path';4. 使用RMAN备份指定控制文件:控制文件是数据库的关键组成部分,可以使用以下语句备份控制文件:```RMAN> BACKUP CURRENT CONTROLFILE;```5. 使用RMAN备份归档日志:归档日志包含了数据库的所有更改记录,可以使用以下语句备份归档日志:```RMAN> BACKUP ARCHIVELOG ALL;```6. 使用EXPDP备份数据库:EXPDP是Oracle提供的数据泵工具,可以使用以下语句备份整个数据库:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp full=yes;7. 使用EXPDP备份指定表:如果只需要备份数据库中的特定表,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp tables=table_name;```8. 使用EXPDP备份指定表空间:如果只需要备份数据库中的特定表空间,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp tablespaces=tablespace_name;```9. 使用EXPDP备份指定用户:如果只需要备份数据库中的特定用户,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp schemas=user_name;```10. 使用EXPDP备份指定数据文件:如果只需要备份数据库中的特定数据文件,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp filesperset=1 include=datafile:'datafile_path';```总结:以上是一些常用的Oracle数据库备份语句,通过使用不同的备份语句可以实现对整个数据库、指定表空间、指定数据文件、归档日志等的备份。
Oracle11g数据库热备份恢复的方法
Oracle11g数据库热备份恢复的方法最近发现多个客户使用的Oracle11g数据库,数据备份恢复会有数据异常丢失的问题、用原先exp 和imp导入导出命令会发现,ecology系统当中的部分表和视图不能被导出。
且exp的导出命令不会出现错误日志。
后来查资料找到了另一种解决数据备份恢复的方法:用expdp和impdp命令导出导入数据则没有上述问题。
完整的从服务器创建数据库备份恢复到本机测试环境的脚本如下:注,红色部分可能环境不同需要调整的变量。
--按win+R键打开运行、输入cmd进入命令行--输入Oralce命令行命令:sqlplus /nolog--sysdba身份登录Oracle数据库conn sys/Oracle1234$@orcl as sysdba--更改oracle配置参数alter system set "_allow_level_without_connect_by"=true;--创建临时报空间create temporary tablespace ecology_temp tempfile'D:\Developer\oracle\oradata\orcl\ecology_temp.dbf' size 32M autoextend on next 32M maxsize 2048M extent management local;--创建报空间create tablespace ecology logging datafile 'D:\Developer\oracle\oradata\orcl\ecology.dbf' size 32M autoextend on next 32M maxsize 2048M extent management local;--创建备份输出目录(如果此目录在服务上不存在,则需要手动创建)create directory dmpdir as 'D:\ecology_data';--创建用户create user ecology identified by ecology default tablespace ecology temporary tablespace ecology_temp;--给ecology用户授权grant connect, resource, exp_full_database, imp_full_database to ecology;grant create session to ecology;grant create table to ecology;grant create tablespace to ecology;grant create view to ecology;grant resource, connect, RECOVERY_CATALOG_OWNER to ecology;--授权与ecology用户,解决用户数据导出的问题grant execute on SYS.DBMS_DEFER_IMPORT_INTERNAL to ecology;grant execute on SYS.DBMS_EXPORT_EXTENSION TO ecology;--授权与ecology用户读写备份目录的权限grant read, write on directory dmpdir to ecology;--提交数据commit;--Oracle数据库导出命令expdp ecology/ecology@orcl dumpfile=data0324.dmp(导出的文件) directory=dmpdir schemas=ecology(要导出的用户)--Oralce数据库导入命令impdp ecology/ecology@orcl directory=dmpdir dumpfile=data0324.dmp(要导入的文件,必须和服务器在同一目录下) schemas=ecology(要导入的用户)。
oracle备份,还原常用命令
oracle备份,还原常⽤命令cmd 命令窗⼝下1.备份数据库exp ⽤户名/密码@数据库连接名 owner=⽤户名 file="盘符:\⽂件名.dmp" log="盘符:\⽇志⽂件名.log",⽇志可选.2.还原数据库imp ⽤户名/密码@数据库连接名 file="盘符:\⽂件名.dmp"" log="盘符:\⽇志⽂件名.log" fromuser=other touser=⽤户名。
3.创建表空间及修改⼤⼩CREATE TABLESPACE dcitDATAFILE 'C:\oracle\product\10.2.0\oradata\orcl\dcit.dbf' SIZE 500MUNIFORM SIZE 128k;alter database datafile 'C:\oracle\product\10.2.0\oradata\orcl\dcit.dbf' autoextend on next 10M maxsize 1G;以下为转帖,转⾃:数据库imp/exp命令使⽤⽅法是本⽂我们主要要介绍的内容,接下来我们就通过例⼦来介绍这些内容。
举例导出数据库服务abc,⽤户user,密码psd下的table1,table2,table3表到d:\data⽬录下,导出⽂件名为test.dmp,语句为:exp file=d:\data\test.dmp tables=(table1,table2,table3) .将上述⽂件恢复的语句为:exp full=y file=d:\data\test.dmp.注意:如果将备份⽂件中的所有表恢复,需要加上full=y.如果只须只需要恢复table1,则语句为:exp file=d:\data\test.dmp tables=table1.即必须指明倒⼊那些信息,要么全部要么部分表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Oracle11g及以上版本中建议使用数据泵来代替EXP和IMP实用程序,数据泵技术提供了许多新的特性,可以中断导出\导入作业然后恢复作业的执行,从一个会话中监控数据泵取作业,在作业执行过程中修改作业属性,以及重启一个失败的数据泵取作业等。
☐数据泵导入导出技术的结构当启动数据泵导入或导出程序时,在数据库服务器端启动相应的服务器进程,完成数据的导入及导出任务,所以我们也称数据泵技术是基于Oracle数据库服务器的,导入及导出的数据文件也保存在数据库服务器端。
数据泵取即EXPDP程序启动数据库服务器端的服务器进程,服务器进程完成数据的备份并将备份文件写入数据库服务器端的计算机磁盘空间,文件格式filename.dat。
导出的备份文件在导入时只能通过数据泵的导入实用程序IMPDP完成,将数据导入到运行在其他平台上的数据库中。
☐数据泵导入导出与EXP/IMP技术的区别☐Oracle数据泵技术是对传统的EXP和IMP实用程序扩展,使得在数据库服务器端快速的移动数据。
这里我们给出二者的主要区别,使得读者在使用时根据需要有所取舍。
☐数据泵技术比传统的EXP/IMP技术更快速的移动大量数据,因为数据泵技术采用并行流技术实现快速的并行处理。
☐数据泵技术基于数据库服务器,在启动数据泵导入导出实用程序时在数据库服务器端产生服务器进程负责备份或导入数据,并且将备份的数据备份在数据库服务器端。
而且服务器进程与EXPDP客户机建立的会话无关。
☐传统的EXP/IMP是类似于普通的用户进程,执行象SELECT、INSERT、CREATE等的SQL语句。
而数据泵技术类似于启动作业的控制进程,不但启动客户端进程建立会话,还控制整个导入或导出过程,如重启作业。
☐使用传统的EXP/IMP实用程序导出的数据格式与数据泵技术导出的数据格式不兼容。
☐数据泵技术与传统的导入导出实用程序不同,它使用目录和目录对象存储数据泵导出文件,使用数据泵导出数据前必须先创建目录对象,否则无法使用数据泵导入和导出作业。
数据泵技术比传统的导入导出程序具有更多的优点,☐数据泵导入导出技术的优点☐导入导出速度更快:因为在数据泵导入导出作业中可以启动多个线程,所以可以并行的实现作业,对于移动大数据量,性能显著提高。
☐重启失败的作业:这个功能是传统的EXP/IMP程序无法实现的,不论是数据泵导入导出作业停止还是失败,都可以很容易的重启作业。
同时也支持手动停止或重启作业。
☐实时交互能力:在一个运行的数据泵作业中,可以从其他屏幕或控制终端与当前数据泵作业交互,以监控作业的执行以及更改作业的某些参数。
☐独立于客户机:因为数据泵技术是基于数据库服务器的,它是数据库服务器的一部分,一旦启动数据泵作业,则与客户机无关。
☐支持网络操作:支持在两个联网的数据库服务器之间导入和导出数据文件,也支持直接的将数据从一个数据库导入另一个数据库,而不需要备份文件。
网络操作的方式基于数据库连接,在数据库间直接移动数据的方法不需要磁盘存储。
导入功能更加细粒度:在数据泵技术中,使用INCLUDE和EXCLUDE参数使得数据泵实用程序可以导入或导出更加细粒度的对象,如可以选择只导出过程或函数等。
☐数据泵导入导出的目录对象✓数据泵作业在数据库服务器上创建所有的备份文件,而Oracle要求数据泵必须使用目录对象,以防止用户误操作数据库服务器上特定目录下的操作系统文件。
目录对象对应于操作系统上的一个指定目录。
✓如果当前用户是DBA用户,可以使用默认的目录对象而不必再创建数据泵操作的工作目录。
此时,数据泵作业会将备份文件、日志文件以及SQL文件存储在该目录下,我们使用如下指令查找该默认目录。
SQL> select *2 from dba_directories3 where directory_name ='DATA_PUMP_DIR';OWNER DIRECTORY_NAME DIRECTORY_PATH------------------- ------------------------------SYS DATA_PUMP_DIR F:\app\Administraor\admin\orcl\dpdump\☐不具备目录对象时的错误提示D:\ expdp scott/tiger@orclExport: Release11.1.0.6.0 - Production on 星期四, 27 8月, 2009 18:45:08 Copyright (c) 1982, 2007, Oracle. All rights reserved.连接到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsORA-39002: 操作无效ORA-39070: 无法打开日志文件。
ORA-39145: 必须指定目录对象参数且不能为空☐用户创建自己数据泵备份目录的步骤,以SCOTT用户创建目录对象为例:1.向SCOTT用户授权SQL> conn system/oracle@orcl已连接。
SQL> grant create any directory to scott;2.创建目录SQL> conn scott/tiger@orcl已连接。
SQL> create directory scott_pump_dir as …d:/scottpumpdir‟;☐数据泵导出(EXPDP)概述及参数含义☐数据泵导出EXPDP类似于传统的EXP实用程序导出数据,使用EXPDP允许挂起和恢复作业,并且实现与正在运行的作业交互,可以从正在运行的导出作业中分离,也支持从失败或终止的作业中重启。
☐使用EXPDP使得导出是对象选择的粒度更细,并提供并行处理,使用多个数据流导出数据,允许控制导出操作使用的线程数,EXPDP支持两种数据访问方法,即使用外部表和直接路径访问方法。
使用外部表允许数据库服务器从操作系统文件中读取数据,而直接路径方法使用直接路径API,它很好的改善了导出导入的性能,因为其内部流的数据格式和存储在备份文件中的数据格式相同,减少了数据转换的时间。
☐EXPDP提供了三种提取数据的方法,一是只提取数据库中的元数据即数据库对象的定义,二是只提取数据库中的数据而忽略数据库对象的定义,三是同时提取数据库中的元数据和数据。
☐EXPDP实用程序参数。
D:\>expdp help=y✓ATTACH:说明EXPDP附加到一个正在运行的现有的EXPDP作业。
方式为ATTACH = JOB_NAME;✓CONTENT:说明要导出的数据是元数据还是数据,或者包括元数据和数据,选项包括ALL、DATA_ONLY和METADATA_ONLY。
✓DIRECTORY:说明要导出的备份文件,日志文件和SQL文件的存储目录,此时必须事先创建该目录对象,当然可以将其他用户创建的目录对象赋予该当前用户。
否则无法启动EXPDP程序。
✓DUMPFILE:导出的备份文件的文件名,格式为FILENAME.DMP。
✓ESTIMATE:计算EXPDP导出作业的导出文件的大小,选项包括基于BLOCKS 或者基于STATISTICS,其中BLOCKS基于数据库块大小的倍数计算备份文件大小,而基于STATISTICS使用当前对象的统计量来计算到导出的备份文件的大小。
✓ESTIMATE_ONLY:在EXPDP没有实际地导出作业时估计导出文件的大小,该参数的值为Y或N。
✓EXCLUDE:排除不需要导出的特定对象类型,如EXCLUDE=TABLE:DEPT,对于任何不导出的对象,也不会导出与它有依赖关系的对象,如不导出表,也不会导出和表相关的任何索引、过程和约束等。
✓FLASHBACK_SCN:允许在导出数据库时使用数据库闪回特性,此时EXPDP使用规定的SCN进行闪回。
✓FULL:说明是否导出整个数据库对象,如果该参数为Y,说明导出数据库的所有对象。
✓INCLUDE:说明要导出的特定对象类型,此时会导出该参数指定的对象和与它们有依赖关系的对象。
✓JOB_NAME:为了便于管理运行的EXPDP作业设置当前作业的名字。
系统默认的命名格式为sys_operation_mode_nn。
如导出SCOTT用户的元数据,此时的作业名字为"SCOTT"."SYS_EXPORT_SCHEMA_01"。
✓LOGFILE:说明在导出操作时记录导出过程的日志文件名,其默认名为export.log,和导出文件保存在相同的目录下,即directory参数指定的目录。
✓PARALLEL:说明在导出作业时最大的线程数,实现导出作业的并行处理。
也可以在作业运行总使用ATTACH改变并行度,PARALLEL参数的默认值为1,表示使用单线程导出单独个备份文件,如果设置多个工作线程,则要指定相同数量的备份文件,这样多个线程可以同时写多个备份文件。
给出一个例子,设置并行度为2。
✓QUERY:允许使用SQL语句程序过滤导出的数据,在Oracle11g中,允许使用表名限定SQL语句,使得SQL语句适用于特定的表,如下所示。
QUERY=SCOTT.EMP:”WHERE SAL>3000”。
说明表EMP中工资SAL大于3000的表被导出。
✓SCHEMAS:说明要导出数据的模式,该模式列表可以有多个,使用逗号隔开,如果登录的用户不是导出数据的模式,则登录用户必须拥有exp_full_database 的权限。
✓STATUS:该参数在给定的时间间隔内给出作业的状态,该参数以秒为单位,默认值为0。
✓TABLES:说明要导出数据库表的列表,此时也会导出与表有依赖关系的对象。
✓TABLESPACES:说明要导出的数据库表空间的列表,同时会导出其他表空间中这些表空间中的表有依赖关系的所有对象。
✓VERSION:说明要导出的数据库对象到特定版本的数据库。
该参数很好的解决了数据库的对象从高版本迁移到低版本的数据库过程中的版本兼容问题。
☐交互式参数✓ADD_FILE:向导出备份文件集中增加文件以增加目录空间。
如在一个作业运行期间输入CTRL+C组合键切换到交互式导出提示EXPORT>。
如果该作业因为备份文件的空间不足导致停止,可以使用ADD_FILE命令增加文件到导出目录中。
Export>add_file = data_dump_dir:expdata02.dmp;✓STOP_JOB:停止运行的数据泵作业,数据库服务器端的导出数据服务器进程终止。