




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验要求: 能使用 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=20job_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:dump1par_emp_deptno20.txt b. 导出方案的方法 导出方案是指将一个或多个方案的所有对象结构及数据导出到导出文件中 如导出 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:dump1par_scott.txt c. 导出表空间的方法 导出表空间是指将一个或多个表空间的所有对象结构及数据导出到导出文件中。 如,导出 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:dump1par_users.txt 3 、使用 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 表中。 SQLdelete from scott.emp where deptno=20; SQLcommit; c:impdp SCOTT/tiger parfile=e:dump1imp_par_emp_deptno20.txt b. 导入表 如果 scott 用户不小心删除了 emp 表,则可以从导出文件 tab_emp_dept.dmp 中将其导入。 SQLdrop table scott.emp cascade constraints; c:impdp SCOTT/tiger dumpfile=dirdp1:tab_emp_dept.dmp logfile=dirdp2:imp_tab_emp.log tables=emp c. 导入方案 如果不小心删除了 scott 方案,即用户 scott, 可以从导出文件 scot_01.dmp,scott_02.dmp,scott_03.dmp. 中将其导入。这里将 SCOTT 用户的数据导入到 pf 用户中。 step1. 先创建 pf 用户,并授予或恢复删除前的所有权限。 SQL create user pf identified by pf default tablespace users temporary 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.log schemas=scott remap_schema=scott:pf 注意:如果要将( scott 方案)表导入到其他方案中 , 必须指定 REMAP SCHEMA 选项。 验证: SQL select * from all_tables where owner=PF; 查看 pf 用户下所有表。 d. 导入表空间 将表空间 users 的内容导入到自建的表空间 mytbs 中 step1. 创建 mytbs 表空间 SQL conn sys as sysdba; SQL create tablespace mytbs datafile e:mytbs.dbf size 5M autoextend on next 3M maxsize unlimited; SQL alter user SCOTT quota unlimited on mytbs; step2. 从导出文件中导入 users 表空间。 c:impdp SCOTT/tiger dumpfile=dirdp1:tbs_users.dmp logfile= dirdp2:imp_tbs_mytbs.log tablespaces=mytbs二、 Oracle 访问权限的精细控制(选作) 一些与业务规则有关的安全需求是具体或精细的,不是仅仅直接靠授予什么系统权限或对象权限就能解决的,因为在这些访问控制中可能包含了某些逻辑判断,需要用程序的方式实现某些安全策略,做到对访问权限的精细控制。 【例】用 sys_context 系统函数、 userenv 应用环境来查询当前会话的用户名、操作系统用户名、使用的日期格式、使用的语言 . SQLselect sys_context(userenv,session_user) session_user, sys_context(userenv,os_user) os_user, sys_context(userenv,NLS_date_format)NLS_date_format, sys_context(userenv,language) language from dual; 1 、要创建自定义应用环境,必须要拥有 create any context 系统权限。 为了实现精细访问控制,必须创建自定义的应用环境,以便保存自定义的、与某个会话(即不同的用户)相关联的属性。创建自定义应用环境时需要给它取一个独一无二的、有意义的名字。 SQLconnect sys/password as sysdba; SQLcreate or replace context empenv using SCOTT.emp_ctx; 执行上述命令后,会创建一个名为 empenv 的应用环境,其各个属性都由 scott 用户的、名为 emp_ctx 的包方案对象进行设置。创建应用环境时不需要包存在,可以在以后再创建它。 2 、一旦创建了自定义的应用环境,就要创建用于设置其中的属性的包。 SQLcreate or replace package scott.emp_ctx as procedure set_deptno; end; SQLcreate or replace package body scott.emp_ctx as procedureset_deptno is begin ifsys_context(userenv,session_user)=SCOTT then dbms_session.set_context(empenv,scott_attr1,10); elsifsys_context(userenv,session_user)=SYSTEM then dbms_session.set_context(empenv,system_attr1,10); dbms_session.set_context(empenv,system_attr2,20); end if; end; end; 3 、创建安全策略函数 接下来就是创建一个用来实现安全策略的 PL/SQL 函数(下一步会将这个函数关联到 emp 表上去)。这个安全策略函数必须带 2 个参数:第 1 个参数是方案名(或用户名)、第 2 个参数是方案对象名(或表名、视图名)。该函数返回附加到 SQL 语句的 where 子句后面的字符串。 SQLcreate or replace package scott.emp_security as function select_lnt(object_schema varchar2,object_namevarchar2) return varchar2; function update_lnt(object_schema varchar2,object_namevarchar2) return varchar2; end; SQLcreate or replace package body scott.emp_securityas functionselect_lnt(object_schema varchar2, object_name varchar2) return varchar2 is rtn_predicatevarchar2(500); - 要返回的策略谓词 begin rtn_predicate:=1=1; ifuser=SCOTT then rtn_predicate:=deptno=sys_context(empenv,scott_attr1); elsifuser=SYSTEM then rtn_predicate:=deptno=sys_context(empenv,system_attr1)|or|deptno=sys_context(empenv,system_attr2); end if; returnrtn_predicate; end; functionupdate_lnt(object_schema varchar2, object_name varchar2) return varchar2 is rtn_predicatevarchar2(500); begin rtn_predicate:=1=2; - 一个总为 false 的条件,表示不允许 ifuser=SYSTEM then rtn_predicate:=deptno=sys_context(empenv,system_attr2); end if; returnrtn_predicate; end; end; 提示:即使在安全策略函数中不使用也要带上所述 2 个参数,否则在执行时会出现“ ORA-28112: 无法执行策略函数”的错误提示。 从安全策略函数可知,这里定义了 2 个函数: select_lnt() 、 update_lnt () 。其中 select_lmt() 的目的是用于对 select 进行访问控制,当是 scott 用户时,只允许其查询部门 10 的员工信息,当是 system 用户时,只允许其查询部门 10 或部门 20 的员工信息,而对其他用户不做限制; update_lmt () 的目的是用于对 update (包括 insert 、 update 、 delete )进行访问控制,当是 system 用户时,只允许其更改部门 20 的员工信 息,而不允许其他用户做任何更改。 4 、将安全策略函数关联到表或视图上 Oracle 为我们提供了一个名为 DBMS_RLS ( Row Level Security ,行级安全)的 PL/SQL 包来进行安全策略的管理工作。这个包中有几个过程,其声明部分可以在 %ORACLE_HOME%RDBMSADMIN 目录中找到。要想使用 DBMS_RLS 包,必须是 sys 用户或必须从 sys 用户那里获得了执行这个包的 execute 对象权限。 “提示” SQL 语句中的 where 条件只是控制所操作的行的,所以起类似作用的 DBMS_RLS 包控制的就是行级安全。 要想使用 DBMS_RLS 包,必须是 sys 用户或必须从 sys 用户那里获得了执行这个包的 execute 对象权限。 下面在 scott 方案的 emp 表上添加了 2 个安全策略: select_policy 、 update_policy 。它们的安全策略函数来自 scott 方案 的 emp_security.select_lnt 、 emp_security.update_lnt 。 select_policy 安全策略针对的是 select 语句, update_policy 安全策略针对的是 insert 、 update 、 delete 语句。 SQLexecute dbms_rls.add_policy(object_schema =SCOTT,object_name = emp,policy_name=select_policy,function_schema= SCOTT,policy_function = emp_security.select_lnt,statement_types= select); - 注意不能回车换行 SQLexecutedbms_rls.add_policy(object_schema=SCOTT,object_name =emp,policy_name = update_policy,function_schema =SCOTT,policy_function = emp_security.update_lnt,statement_types =insert,update,delete); - 注意不能回车换行 一旦把安全策略函数关联到表或视图上,这些用户对这些表或视图的访问就会在精细访问控制之下。 5 、创建登录触发器 一切安排妥当之后,还需要创建一个触发器来激活安全策略(或调用安全策略函数)。建议使用登录( on logon )触发器来做这件事。其好处是,不管用户是采用什么方法连接到数据库,这个应用环境或安全策略都会被激活。 SQL create or replace trigger logon_trig afterlogon on database call scott.emp_ctx.set_deptno - 没有分号 ; 注意:必须是具有 sysdba 系统权限的用户(如 sys 用户、以 sysdba 连接身份)登录后创建登录触发器。如果登录触发器创建有错,可能会使相应的用户无法登录数据库。果真如此的话,就应该以一位具有 sysdba 系统权限的用户登录数据库并禁用( ALTER TRIGGER trigger_name DISABLE )引起问题的登录触发器,然后进行更改,最后再启用( ALTER TRIGGER trigger_name ENABLE )登录触发器。 6 、验证精细访问控制的效果 至此,已经实现了预定的精细访问控制。下面用几个示例来说明其效果。 【例】 scott 用户登录后,只能查询部门 10 的人员的信息,并不能更改任何部门、任何人员的信息,如下所示 : SQL select * from emp; - 只能查看部门 10 的员工的信息 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO - - - - - - - 7782 CLARK MANAGER 7839 1981/6/9 2450.00 10 7839 KING PRESIDENT 1981/11/17 5000.00 10 7934MILLER CLERK 7782 1982/1/23 1300.00 10 SQLu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 阳极涂层性能优化-洞察与解读
- 2025广东广州市素社街道环监所招聘1人模拟试卷及一套答案详解
- 2025湖北武汉市通城县事业单位高层次和急需紧缺人才引进48人考前自测高频考点模拟试题及参考答案详解1套
- 跨渠道预算优化方法-洞察与解读
- 班组安全培训样板课件
- 2025年上半年浙江杭州高新区(滨江)劳动保障监察专职人员招聘6人考前自测高频考点模拟试题有答案详解
- 2025年商丘市睢阳区招聘公共安全服务人员体能测试模拟试卷及答案详解(各地真题)
- 2025黑龙江绥化市明水县人民医院招聘中医医生模拟试卷完整参考答案详解
- 2025广东广州市荔湾区沙面街道环卫站招聘管理人员1人考前自测高频考点模拟试题附答案详解(模拟题)
- 2025昆明市第二人民医院融城老年病医院(5人)模拟试卷有答案详解
- 规范格式的婚前财产协议格式6篇
- 2025年酒水行业精酿啤酒市场前景研究报告
- 2025年非高危行业安全生产管理能力考试练习题附答案
- 儿科常用急救技术
- IT运维服务合同(模板)7篇
- 仪器仪表安全培训课件
- 触电急救培训课件模板
- GB/T 9943-2025高速工具钢
- 猫咖设计案例解析与方案模板
- 《模拟电子技术(第三版)》全套教学课件
- 子宫破裂护理常规课件
评论
0/150
提交评论