实验要求:能使用Oracle 的数据泵进行数据的备份和数据恢复。
加深对Oracle 基本锁的类型以及封锁机制的理解,掌握监控Oracle 多粒度封锁机制的方法。
实验内容:一、使用数据泵进行数据逻辑备份和恢复用expdp 和impdp 使用程序,导出数据是将数据库中的数据导出到一个操作系统文件中(即导出文件中),导入数据是将导出文件中的数据导入到数据库中。
expdp 和impdp 都是服务器端的使用程序,只能在oracle 服务器端使用,不能在客户端使用。
而exp 和imp 是客户端实用程序,既可以在客户端使用,也可以在服务器端使用。
由于expdp 和impdp 的速度优于exp 和imp ,所以oracle 建议使用expdp 和impdp 。
步骤:1 、创建目录对象并授权使用expdp 和impdp 实用程序时,其导出文件只能存放在directory( 目录) 对象指定的OS (操作系统)目录中,而不能直接指定OS 目录。
目录对象是数据库中的一个对象,它是使用create directory 语句建立的对象,而不是操作系统中的某个目录,但它指向操作系统中的某个目录。
目录对象不是方案对象,它不属于某个用户,而是属于数据库。
a. 先在操作系统中创建两个目录,如e:\dump1 和e:\dump2 。
这两个目录都可以保存导出文件和日志文件。
b. SYS 用户创建两个directory 对象,如dirdp1 和dirdp2 ,用于指向这两个操作系统目录,并为运行expdp 和impdp 实用程序数据库用户,如SCOTT 和pf 用户授权使用这两个directory 对象的权限。
导出文件、日志文件就保存在dirdp1 和dirdp2 所指的操作系统目录中。
最后,可以从dba_directories 数据字典视图中查询所创建的directory 对象。
SQL> create directory dirdp1 as 'e:\dump1';SQL> create directory dirdp2 as 'e:\dump2';SQL> grant read, write on directory dirdp1 to SCOTT;SQL> grant read, write on directory dirdp2 to SCOTT;SQL> select * from dba_directories where directory_name like 'DIR%';2 、使用expdp 导出数据使用expdp 的命令行语法是:expdp username/password parameter [, parameter2,...]参数tablespace 用于指定要导出的表空间列表,语法如下:tablespace=tablespace_name[,...] 其中,tablespace_name 表示表空间名。
a. 导出表的方法如导出SCOTT 方案中的emp 表和dept 表C:\expdp SCOTT/tiger directory=dirdp1 dumpfile=tab_emp_dept.dmplogfile=dirdp2:tab_emp_dept.log tables=emp,dept (不要以分号结尾)执行导出后,将与emp 表和dept 表相关的信息导出到导出文件tab_emp_dept.dm 中,该导出文件位于dirdp1 指定的OS 目录e:\dump1 中。
日志文件tab_emp_dept.log 记录了上述整个过程的屏幕输出信息,以便将来从中看出导出过程与内容。
日志文件位于dirdp2 指定的OS 目录e:\dump2 中。
由于命令行参数过多,使命令行很长,既不好输入又不好再次使用。
可使用参数文件来辅助导出过程。
如,为完成该例子的导出过程,可以现在e:\dump1 目录中创建一个par_emp_deptno20.txt 参数文件,内容如下:directory=dirdp1dumpfile=tab_emp_deptno20.dmplogfile=dirdp2:tab_emp_deptno20.logtables=empquery='''where deptno=20'''job_name=tab_emp_deptno20该参数文件表示,默认导出文件对象为dirdp1, 导出文件为tab_emp_deptno20.dmp ,日志文件为目录对象dirdp2 中的tab_emp_deptno20.log ,要到出的表是emp, 导出记录符合的条件是deptno=20, 导出的作业名称是tab_emp_deptno20.C:\expdp SCOTT/tiger parfile=e:\dump1\par_emp_deptno20.txtb. 导出方案的方法导出方案是指将一个或多个方案的所有对象结构及数据导出到导出文件中如导出SCOTT 方案为导出方案,可以先在e:\dump1 目录中创建一个par_scott.txt 参数文件,内容如下:dumpfile=scott_%U.dmplogfile=dirdp2:scott.logschemas=SCOTTfilesize=100000kjob_name=schemas_scott该参数文件表示,导出文件的命名方式是scott_%U.dmp, 日志文件的名称是scott.log ,要导出的方案是SCOTT ,每个导出文件都不超过10000kb (如果一个导出文件不够,则会自动产生新的导出文件),导出作业的名称是schemas_scott 。
可以在文件名中使用“%U” 通配符来表示对多个文件自动编号,“%D” 通配符表示将被替换为使用YYMMDD 格式的作业运行日期。
C:\expdp SCOTT/tiger directory=dirdp1 parfile=e:\dump1\par_scott.txtc. 导出表空间的方法导出表空间是指将一个或多个表空间的所有对象结构及数据导出到导出文件中。
如,导出USERS 表空间在e:\dump1 目录中创建一个par_users.txt 参数文件,内容如下:dumpfile=dirdp1:tbs_users.dmplogfile=dirdp2:tbs_users.logtablespaces=users该参数文件表示,导出文件为dirdp1 中的tbs_users.dmp ,日志文件为目录对象dirdp2 中的tbs_users.log ,要导出的表空间是users和mytbs 。
c:\expdp SCOTT/tiger parfile=e:\dump1\par_users.txt3 、使用impdp 导入数据使用impdp 的命令行语法:impdp username/password parameter1 [, parameter ...]使用expdp 导出的数据,可以使用impdp 导入。
而且,导入方式由导出方式确定。
如果是按表模式导出,则必须以表模式导入;如果是按方案模式导出,则必须以方案模式导入;如果是按表空间模式导出,则必须以表空间模式导入;a. 如果SCOTT 用户不小心删除了表中的deptno 为20 的数据,可以从导出文件tab_emp_deptno20.dmp 中将其导入。
为导入文件,可先在E:\dump1 目录中创建一个imp_par_emp_deptno20.txt参数文件,内容如下:dumpfile=dirdp1:tab_emp_deptno20.dmplogfile=dirdp2:imp_tab_emp_deptno20.logcontent=data_onlytables=emp该文件表示,从目录对象dirdp1 中的导出文件tab_emp_deptno20.dmp 导入数据,日志文件为目录对象dirdp2 中的imp_tab_emp_deptno20.log, 只导入数据,数据被导入到emp 表中。
SQL>delete from scott.emp where deptno=20;SQL>commit;c:\impdp SCOTT/tiger parfile=e:\dump1\imp_par_emp_deptno20.txtb. 导入表如果scott 用户不小心删除了emp 表,则可以从导出文件tab_emp_dept.dmp 中将其导入。
SQL>drop table scott.emp cascade constraints;c:\impdp SCOTT/tiger dumpfile=dirdp1:tab_emp_dept.dmp logfile=dirdp2:imp_tab_emp.log tables=empc. 导入方案如果不小心删除了scott 方案,即用户scott, 可以从导出文件scot_01.dmp,scott_02.dmp,scott_03.dmp... 中将其导入。
这里将SCOTT 用户的数据导入到pf 用户中。
step1. 先创建pf 用户,并授予或恢复删除前的所有权限。
SQL> create user pf identified by pf default tablespace userstemporary tablespace temp quota unlimited on users;SQL> grant connect,resource to pf;SQL> grant unlimited tablespace to pf;SQL> grant read, write on directory dirdp1 to pf;SQL> grant read, write on directory dirdp2 to pf;SQL> grant create view to pf;step2. 导入c:\impdp pf/pf directory=dirdp1 dumpfile=scott_01.dmp logfile=dirdp2:imp_scott.logschemas=scott remap_schema=scott:pf注意:如果要将(scott 方案)表导入到其他方案中, 必须指定REMAP SCHEMA 选项。
验证:SQL> select * from all_tables where owner='PF'; 查看pf 用户下所有表。