物理备份与恢复:
冷备份:
找到所有数据文件,控制文件,联机重做日志文件的位置,关闭数据库,在操作系统上面复制备份,也可以使用sql>host copy 原文件名称 目标路径名称
Selectfile_name from dba_data_files;
Selectmember from v%logfile;
Selectvalue from v$parameter where name=’control_files’;
缺点:如果数据库处于24*7(每天24小时,每周7天)状态时,没有机会实现冷备份
热备份:
数据库在归档模式下进行的数据文件,日志文件,归档日志文件等的备份
查看是否为归档模式:
ARCHIVELOG LIST;
修改为归档模式:
SHUTDOWN IMMEDIATE;
STARTUPMOUNT;
ALTERDATABASE ARCHIVELOG/NOARCHIVELOG
ALTERDATABASE OPEN;
数据文件的备份,以表空间为单位:
找到相应表空间,以及对应的数据文件:
SELECTTABLESPACE_NAME,FILE_NAME FROM DBA_DATA_FILES ORDER BY TABLESPACE_NAME;
分别对每个表空间中的数据文件进行备份
Forexample:
备份users表空间的文件
先设置表空间为备份状态:
ALTERTABLESPACE USERS BEGIN BACKUP;
将表空间中所有的数据文件备份到磁盘下:
HOSTCOPY ‘D:\APP\LENOVO\ORADATA\ORCL\USRE01.DBF’ ‘D:\ORACLE\BACKUP\USER01.DBF’;
结束表空间的备份状态:
ALTERTABLESPACE USRS END BACKUP;
备份控制文件:
将控制文件备份为二进制文件:
ALTERDATABASE BACKUP CONTROLFILE TO ‘D:\ORACLE\BACKUP1\CONTROL.BKP’;
将控制文件备份为文本文件:
ALTERDATABASE BACKUP CONTROLFILE TO TRACE;
归档当前的联机重做日志文件
ALTERSYSTEM ARCHIVE LOG CURRENT;
ALTERSYSTEM SWITCH LOGFILE;
备份归档重做日志文件和初始化参数文件,直接在操作系统中复制 粘贴
非归档模式的恢复:
冷备份恢复数据库:关闭数据库,将备份的所有数据文件,控制文件,联机重做日志文件还原到原来所在的位置
归档模式恢复:
数据库级恢复:所有或者多数数据文件损坏的恢复
表空间级恢复:表空间中对应的数据文件的恢复
数据文件级恢复:对特定的数据文件进行恢复
数据库级恢复:
SHUTDOWNABORT;
STARTUPMOUNT;
RECOVERYDATABASE;
ALTERDATABASE OPEN;
表空间级恢复 EXAMPLE表空间中的数据文件损坏:
数据库处于关闭状态时:
SHUTDOWNABORT;
在操作系统上将备份的数据文件覆盖
STARTUPMOUNT;
RECOVERYTABLESPACE EXAMPLE;
ALTERDATABASE OPEN;
数据库处于关闭时:
STARTUPMOUNT;
ALTERDATABASE DATAFILE ‘D:\APP\LENOVO\ORADATA\ORCL\EXAMPLE01.DBF’ OFFLINE;
ALTERDATABASE OPEN;
ALTERTABLESPACE EXAMPLE OFFLINE FOR RECOVERY;
在操作系统上将备份的数据文件覆盖
RECOVERYTABLESPACE EXAMPLE;
ALTERTABLESPACE EXAMPLE ONLINE;
如果数据库处于打开的状态忽略前面三步。
数据文件级完全恢复:
数据库处于关闭状态
SHUTDOWNABORT;
在操作系统上将备份的数据文件覆盖
STARTUPMOUNT;
RECOVERYDATAFILE ‘D:\APP\LENOVO\ORADATA\ORCL\EXAMPLE01.DBF’;
ALTERDATABASE DATAFILE ‘D:\APP\LENOVO\ORADATA\ORCL\EXAMPLE01.DBF’ ONLINE;
ALTERDATABASE OPEN;
数据库处于打开状态:
STARTUP MOUNT;
ALTERDATABSE DATAFILE ‘D:\APP\LENOVO\ORADATA\ORCL\EXAMPLE01.DBF’ OFFLINE;
ALTERDATABASE OPEN;
在操作系统上将备份的数据文件覆盖
RECOVERYDATAFILE ‘D:\APP\LENOVO\ORADATA\ORCL\EXAMPLE01.DBF’;
ALTERDATABASE DATAFILE ‘D:\APP\LENOVO\ORADATA\ORCL\EXAMPLE01.DBF’ ONLINE;
总结:
数据库关闭的时候,将备份文件覆盖损坏的数据文件,在mount下执行recovery命令
数据库开启的术后,将数据文件脱机,然后将备份的文件覆盖损坏的文件, 执行recovery命令,再将数据文件联机
数据库的逻辑备份与恢复:
物理备份即可在数据库open的状态下进行也可以在关闭数据库后进行,但是逻辑备份和恢复只能在open的状态下进行,在数据库介质损坏而无法启动时,不能利用逻辑备份,数据库备份与恢复是以物理备份与恢复,逻辑备份与恢复为辅的
特点:
可以在不同版本的数据库间进行数据移植。
可以在不同的操作系统上运行的数据库间进行数据移植
可以在数据库模式之间传递数据
数据的导入导出与数据库物理结构没有关系
对数据库进行一次逻辑备份与恢复操作能重新组织数据,消除数据库中的链接及磁盘碎片,从而使数据库的性能有较大的提高
可以对数据库对象定义,约束,权限等的备份与恢复
常规技术与数据泵的比较:
Export和Import是客户端实用程序,可以在服务器端使用,也可以在客户端使用;
Expdp和Impdp是服务器端实用程序,只能在数据库服务器端使用。
利用Expdp,Impdp在服务器端多线程并行地执行大量数据的导出与导入操作。
数据泵技术具有重新启动作业的能力,即当发生数据泵作业故障时,DBA 或用户进行干预修正后,可以发出数据泵重新启动命令,使作业从发生故障的位置继续进行。
使用数据泵技术准备工作:
在使用Expdp,Impdp程序之前需要创建DIRECTORY对象,并将该对象的READ,WRITE权限授予用户。例如:
CREATE OR REPLACE DIRECTORY dumpdir AS'D:\ORACLE\BACKUP';
GRANT READ,WRITE ON DIRECTORY dumpdir TOSCOTT;
如果用户要导出或导入非同名模式的对象,还需要具有EXP_FULL_DATABASE和IMP_FULL_DATABASE权限。例如:
GRANT EXP_FULL_DATABASE, IMP_FULL_DATABASETO SCOTT;
Expdp调用接口:
命令行接口(Command-Line Interface):在命令行中直接指定参数设置。
参数文件接口(Parameter File Interface):将需要的参数设置放到一个文件中,在命令行中用PARFILE参数指定参数文件。
交互式命令接口(Interactive-Command Interface):用户可以通过交互命令进行导出操作管理。
Expdp导出模式:
全库导出模式(Full Export Mode):通过参数FULL指定,导出整个数据库。
模式导出模式(Schema Mode):通过参数SCHEMAS指定,是默认的导出模式,导出指定模式中的所有对象。
表导出模式(Table Mode):通过参数TABLES指定,导出指定模式中指定的所有表、分区及其依赖对象。
表空间导出模式(Tablespace Mode):通过参数TABLESPACES指定,导出指定表空间中所有表及其依赖对象的定义和数据。
传输表空间导出模式(Transportable Tablespace):通过参数TRANSPORT_TABLESPACES指定,导出指定表空间中所有表及其依赖对象的定义。通过该导出模式以及相应导入模式,可以实现将一个数据库表空间的数据文件复制到另一个数据库中。
Expdp帮助及参数:
获取Expdp帮助信息
C:\>expdp HELP=Y
Expdp参数
应用实例:
命令行方式导出:表导出模式
导出scott模式下的emp表和dept表,转储文件名称为emp_dept.dmp,日志文件命名为emp_dept.log,作业命名为emp_dept_job,导出操作启动3个进程。
C:\>expdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=emp_dept.dmp TABLES=emp,dept
LOGFILE=emp_dept.log
JOB_NAME=emp_dept_job PARALLEL=3
命令行方式导出:模式导出模式。
导出scott模式下的所有对象及其数据。
C:\>expdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=scott.dmp LOGFILE=scott.log
SCHEMAS=scott JOB_NAME=exp_scott_schema
命令行方式导出:表空间导出模式。
导出EXAMPLE,USERS表空间中的所有对象及其数据。
C:\>expdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=tsp.dmp
TABLESPACES=example,users
命令行方式导出:传输表空间导出模式
导出EXAMPLE,USERS表空间中数据对象的定义信息。
C:\>expdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=tts.dmp
TRANSPORT_TABLESPACES=example,users
TRANSPORT_FULL_CHECK=Y LOGFILE=tts.log
注意:当前用户不能使用传输表空间导出模式导出自己的默认表空间。
命令行方式导出:数据库导出模式
将当前数据全部导出,不写日志文件。
C:\>expdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=expfull.dmp FULL=Y
NOLOGFILE=Y
命令行方式导出:按条件查询导出
导出scott.emp表中部门号大于10,且工资大于2000的员工信息。
C:\>expdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=exp2.dmp TABLES=emp
QUERY='emp:"WHERE deptno=10 AND sal>2000"'
NOLOGFILE=Y
参数文件方式导出:
首先创建一个名为scott.txt的参数文件,并存放到d:\backup目录下,其内容为:
SCHEMAS=scott
DUMPFILE=filter.dmp
DIRECTORY=dumpdir
LOGFILE=filter.log
INCLUDE=TABLE:"IN ('EMP','DEPT')"
INCLUDE=INDEX:"LIKE 'EMP%'"
INCLUDE=PROCEDURE
然后在命令行中执行下列命令。
C:\>expdp scott/tigerPARFILE=d:\scott.txt
交互命令方式导出
在当前运行作业的终端中按Ctrl+C组合键,进入交互式命令状态;
在另一个非运行导出作业的终端中,通过导出作业名称来进行导出作业的管理。
执行一个作业。
C:\>expdp scott/tiger FULL=YDIRECTORY=dumpdir
DUMPFILE=fulldb1.dmp,fulldb2.dmp
FILESIZE=2G PARALLEL=3
LOGFILE=expfull.log JOB_NAME=expfull
作业开始执行后,按Ctrl+C组合键。
在交互模式中输入导出作业的管理命令,根据提示进行操作。
Export>STOP_JOB=IMMEDIATE
Are you sure you wish to stop this job ([Y]/N): Y
使用impdp导入数据:
Impdp调用接口:
命令行接口(Command-Line Interface)
参数文件接口(Parameter File Interface)
交互式命令接口(Interactive-Command Interface)
Impdp导入模式:
全库导入模式(Full Import Mode)
模式导入模式(Schema Mode)
表导入模式(Table Mode)
表空间导入模式(Tablespace Mode)
传输表空间导入模式(Transportable Tablespace)
Impdp帮助及参数:
impdp HELP=Y命令
Impdp应用实例:
命令行方式导入:表导入模式
使用逻辑备份文件emp_dept.dmp恢复scott模式下的emp表和dept表中数据。
C:\>impdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=emp_dept.dmp TABLES=emp,dept
NOLOGFILE=Y CONTENT=DATA_ONLY
如果表结构也不存在了,则应该导入表的定义以及数据。
C:\>impdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=emp_dept.dmp
TABLES=emp,dept NOLOGFILE=Y
命令行方式导入:模式导入模式
使用备份文件scott.dmp恢复scott模式。
C:\>impdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=scott.dmp SCHEMAS=scott
JOB_NAME=imp_scott_schema
如果要将一个备份模式的所有对象导入另一个模式中,可以使用REMAP_SCHEMAN参数设置。例如,将备份的scott模式对象导入oe模式中。
C:\>impdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=scott.dmp LOGFILE=scott.log
REMAP_SCHEMA=scott:oe
JOB_NAME=imp_oe_schema
命令行方式导入:表空间导入模式
利用EXAMPLE,USERS表空间的逻辑备份tsp.dmp恢复USERS,EXAMPLE表空间。
C:\>impdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=tsp.dmp
TABLESPACES=example,users
如果要将备份的表空间导入另一个表空间中,可以使用REMAP_TABLESPACE参数设置。例如,将USERS表空间的逻辑备份导入IMP_TBS表空间,命令为
C:\>impdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=tsp.dmp
REMAP_TABLESPACE=users:imptbs
命令行方式导入:传输表空间导入模式。
将表空间USERS导入数据库链接source_dblink所对应的远程数据库中。
C:\>impdp scott/tiger DIRECTORY=dumpdir
NETWORK_LINK=source_dblink
TRANSPORT_TABLESPACES=users
TRANSPORT_FULL_CHECK=N
TRANSPORT_DATAFILES=
'D:\ORACLE\USERS01.DBF'
命令行方式导入:数据库导入模式
利用完整数据库的逻辑备份恢复数据库。
C:\>impdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=expfull.dmp FULL=Y NOLOGFILE=Y
命令行方式导入: 按条件查询导入
C:\>impdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=emp_dept.dmp TABLES=emp,dept
QUERY=
'emp: "WHERE deptno=20 ANDsal>2000"'
NOLOGFILE=Y
命令行方式导入: 追加导入
如果表中已经存在数据,可以利用备份向表中追加数据。
C:\>impdp scott/tiger DIRECTORY=dumpdir
DUMPFILE=emp_dept.dmp TABLES=emp
TABLE_EXISTS_ACTION=APPEND
参数文件方式导入
首先创建一个名为empdept.txt的参数文件,并存放到d:\backup目录下,其内容为
TABLES=emp,dept
DIRECTORY=dumpdir
DUMPFILE=emp_dept.dmp
PARALLEL=3
然后在命令行中执行下列命令就可以实现数据的导入操作。
C:\>impdp scott/tigerPARFILE=d:\empdetp.txt
交互命令方式导入
与Expdp交互执行方式类似,在Impdp命令执行作业导入的过程中,可以使用Impdp的交互命令对当前运行的导入作业进行控制管理。
使用exp 和imp方式实现导入导出操作
导出:
注意:不要以sql语句操作,在exp为oracle bin文件夹下面的应用程序
导出表
导出方案
导出数据库:每个用户的方案
导出使用exp命令来完成,该命令常用的选项有:
userid:用于指定执行导出操作的用户名,口令,连接字符串
Tables:用于指定执行导出操作的表
Owner:用于指定执行导出操作的方案
full=y:用于指定导出操作的数据库
Inctype:用于指定执行导出操作的增量类型
Rows:用于指定至尊型导出操作是否要导出表中的数据
File:用于指定导出文件名
导出表:
导出自己的表:
Expuserid=scott/tiger@orcl tables=(emp,dept) file=d:\emp.dmp
导出其他方案的表:
如果用户要导出其他方案的表,则需要dba的权限或是
Exp_full_database的权限,比如system就可以导出scott的表exp userid=system/system@orcl tables=(scott.emp) file=d:\emp.dmp
导出表的结构:
Exp userid=scott/tiger@orcl tavles=(emp)file=d:\emp.dmp rows=n
使用直接导出的方式:
Expuserid=scott/tiger@orcl tables=(emp) file=d:\emp.dmp direct=y
这种方式比默认的常规方式速度要块,当数据量大时,可以考虑使用这样的方法,这是需要数据库的字符集要与客户端字符集完全一致,否则会报错
导出方案:
导出方案是指使用export工具导出一个方案或是多个方案中的所有对象(表,索引,约束)和数据,并存放在文件中
1. 导出自己的方案:
Expuserid=scott/tiger@orcl owner=scott file=d:\scott.dmp;
2. 导出其他方案
如果用户要导出其他方案,则需要dba权限或是
Exp_full_database的权限,例如system 用户就可以导出任何方案
Expuserid=system/system@orcl owner=(system,scott) file=d:\system.dmp
导出数据库:
导出数据库是指利用export导出所有数据库中的对象及数据
要求改用户具有dba权限或是exp_full_database权限
Expuserid=system/system@orcl full=y inctype=complete file=orcl.dmp;
导入:
导入就是使用工具import将文件中的对象和数据导入到数据库中,但是导入要使用的文件必须是export所导出的文件,与导出相似,导入也分为导入表,导入方案,导入数据库三种方式:
Imp常用的选项有:
Userid:用于指定执行导入操作的用户名,口令,连接字符串
Tables:用于指定执行导入操作的表
formuser:用于指定源用户
touser:用户指定目标用户
File:用于指定导入文件名
Full=y:用于指定执行导入整个文件
Inctype:用于指定执行导入操作的增量类型
Rows:指定是否要导入表行
ignore:如果表存在,则只是导入数据
导入自己的表:注意不要加上分号,否则找不到文件
Impuserid=scott/tiger@orcl tables=(emp) file=d:\zbcxy.dmp;
导入表到其他用户:
要求该用户具有dba的权限,或是imp_full_database权限
Impuseid=system/system@orcl tables=(emp) file=d:\zbcxt.dmp touser=scott
导入表结构:
只导入表的结构而不导入数据
Impuserid=scott/tiger@orcl tables=(emp) file=d:\zbcxy.dmp rows=n
导入数据:
如果对象已经存在可以只导入表的数据:
Impuserid=scott/tiger@orcl tables=(emp) file=d:\xxx.dmp ignore=y
导入方案:
导入方案是指使用import工具将文件夹中的对象和数据导入到一个或是多个方案中,如果要导入其他方案,要求改用户具有dba的权限,或是imp_full_database
导入自身的方案:
Impuserid=scott/tiger file=d:\xx.dmp
导入其他方案:
Impuserid=system/system file=d:\xx.dmp fromuser=system touser=scott
导入数据库:
在默认情况下,当导入数据库时,会导入所有对象结构和数据,案列如下:
Impuserid=system/manager full=y file=d:\xx.dmp