返回顶部
首页 > 资讯 > 数据库 >Oracle 12.2中如何联机重定义使用VPD策略的表
  • 352
分享到

Oracle 12.2中如何联机重定义使用VPD策略的表

2024-04-02 19:04:59 352人浏览 安东尼
摘要

这篇文章主要为大家展示了“oracle 12.2中如何联机重定义使用VPD策略的表”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle 12.2中如何联机

这篇文章主要为大家展示了“oracle 12.2中如何联机重定义使用VPD策略的表”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle 12.2中如何联机重定义使用VPD策略的表”这篇文章吧。

原始表jy.employees的创建语句如下:

sql> create table jy.employees(
  2  employee_id number(6) primary key,
  3  first_name varchar2(20),
  4  last_name varchar2(25)
  5  constraint emp_last_name_nn not null,
  6  email varchar2(25) constraint emp_email_nn not null,
  7  phone_number varchar2(20),
  8  hire_date date constraint emp_hire_date_nn not null,
  9  job_id varchar2(10) constraint emp_job_nn not null,
 10  salary number(8,2),
 11  commission_pct number(2,2),
 12  manager_id number(6),
 13  department_id number(4),
 14  constraint emp_salary_min check (salary > 0),
 15  constraint emp_email_uk unique (email)
 16  );

Table created.

使用下面的jy.auth_emp_dep_100函数来创建VPD策略

SQL> create or replace function jy.auth_emp_dep_100(
  2   schema_var in varchar2,
  3   table_var in varchar2
  4  )
  5  return varchar2
  6  as
  7   return_val varchar2 (400);
  8   unm varchar2(30);
  9   begin
 10    select user into unm from dual;
 11    if (unm = 'jy') then
 12     return_val := null;
 13    else
 14     return_val := 'department_id = 100';
 15    end if;
 16    return return_val;
 17   end auth_emp_dep_100;
 18  /

Function created.

执行dbms_rls_add_policy过程来对原始表jy.employees表使用jy.auth_emp_dep_100函数来指定VPD策略

SQL> begin
  2  dbms_rls.add_policy(
  3    object_schema => 'jy',
  4    object_name => 'employees',
  5    policy_name => 'employees_policy',
  6    function_schema => 'jy',
  7    policy_function => 'auth_emp_dep_100');
  8  end;
  9  /

PL/SQL procedure successfully completed.

在这个例子中,表jy.employees表重定义后将会禁用所有的触发器。注意重定义将不会修改列名或数据类型。因此在执行start_refef_table过程时copy_vpd_opt参数设置为dbms_redefinition.cons_vpd_auto。

1.用要执行联机重定义操作的用户登录数据库

SQL> conn jy/jy@jypdb
Connected.

2.验证原始表是否可以执行联机重定义

SQL> begin
  2   dbms_redefinition.can_redef_table('hr','employees',DBMS_REDEFINITION.CONS_USE_PK);
  3  end;
  4  /

PL/SQL procedure successfully completed.

3.创建中间表jy.int_employees

SQL> create table jy.int_employees(
  2   employee_id number(6),
  3   first_name varchar2(20),
  4   last_name varchar2(25),
  5   email varchar2(25),
  6   phone_number varchar2(20),
  7   hire_date date,
  8   job_id varchar2(10),
  9   salary number(8,2),
 10   commission_pct number(2,2),
 11   manager_id number(6),
 12   department_id number(4));

Table created.

4.开始联机重定义操作

SQL> begin
  2  dbms_redefinition.start_redef_table(
  3  uname => 'jy',
  4  orig_table => 'employees',
  5  int_table => 'int_employees',
  6  col_mapping => NULL,
  7  options_flag => DBMS_REDEFINITION.CONS_USE_PK,
  8  orderby_cols => NULL,
  9  part_name => NULL,
 10  copy_vpd_opt => DBMS_REDEFINITION.CONS_VPD_AUTO);
 11  end;
 12  /

PL/SQL procedure successfully completed.

当copy_vpd_opt参数被设置为dbms_redefinition.cons_vpd_auto时,只有表的所有者与调用联机重定义操作的用户可以在联机重定义期间访问该表。col_mapping参数设置为NULL。当copy_vpd_opt参数设置为dbms_redefinition.cons_vpd_auto时,col_mapping参数必须设置为NULL或'*'。

5.复制依赖对象

SQL> declare
  2  num_errors pls_integer;
  3  begin
  4  dbms_redefinition.copy_table_dependents(
  5  uname => 'jy',
  6  orig_table => 'employees',
  7  int_table => 'int_employees',
  8  copy_indexes => DBMS_REDEFINITION.CONS_ORIG_PARAMS,
  9  copy_triggers => TRUE,
 10  copy_constraints => TRUE,
 11  copy_privileges => TRUE,
 12  ignore_errors => FALSE,
 13  num_errors => num_errors);
 14  end;
 15  /

PL/SQL procedure successfully completed.

6.对中间表禁用所有的触发器

SQL> alter table jy.int_employees disable all triggers;

Table altered.

7.可选操作同步中间表

SQL> begin
  2  dbms_redefinition.sync_interim_table(
  3  uname => 'jy',
  4  orig_table => 'employees',
  5  int_table => 'int_employees');
  6  end;
  7  /

PL/SQL procedure successfully completed.

8.完成联机重定义操作

SQL> begin
  2  dbms_redefinition.finish_redef_table(
  3  uname => 'jy',
  4  orig_table => 'employees',
  5  int_table => 'int_employees');
  6  end;
  7  /

PL/SQL procedure successfully completed.

9.等待任何查询中间表的语句执行完成后将其删除

SQL> drop table jy.int_employees;
Table dropped

到此重定义操作就完成了。

以上是“Oracle 12.2中如何联机重定义使用VPD策略的表”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle 12.2中如何联机重定义使用VPD策略的表

本文链接: https://lsjlt.com/news/63928.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle 12.2中如何联机重定义使用VPD策略的表
    这篇文章主要为大家展示了“Oracle 12.2中如何联机重定义使用VPD策略的表”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle 12.2中如何联机...
    99+
    2024-04-02
  • Oracle 12.2如何使用联机重定义对表进行多处改变
    小编给大家分享一下Oracle 12.2如何使用联机重定义对表进行多处改变,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!下面的例子将演示如何使用联机重定义操作来对表进行多处改变,原始表jy...
    99+
    2024-04-02
  • Oracle 12.2如何使用dbms_redefinition.redef_table过程来重定义表的存储属性
    这篇文章主要为大家展示了“Oracle 12.2如何使用dbms_redefinition.redef_table过程来重定义表的存储属性”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领...
    99+
    2024-04-02
  • Oracle 12.2使用手动创建与注册依赖对象来执行联机重定义
    下面的例子将使用手动创建与注册依赖对象的方法来执行联机重定义操作,原始表创建如下: SQL> create table jy.t1(c1 number); Table created SQL&...
    99+
    2024-04-02
  • Oracle中怎么利用联机重定义给表增加新列与分区
    本篇文章给大家分享的是有关Oracle中怎么利用联机重定义给表增加新列与分区,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.用要执行联机重定...
    99+
    2024-04-02
  • PHP大数据存储中,如何实现高效的重定向策略?
    随着大数据时代的到来,PHP作为一种高效的编程语言,被广泛应用于大数据存储方案中。然而,当数据量变得越来越大时,如何实现高效的重定向策略成为了一项重要的挑战。本文将介绍PHP大数据存储中如何实现高效的重定向策略。 一、什么是重定向策略 在大...
    99+
    2023-06-20
    大数据 存储 重定向
  • ASP.NET Core如何使用JWT自定义角色并实现策略授权需要的接口
    ASP.NET Core如何使用JWT自定义角色并实现策略授权需要的接口,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。① 存储角色/用户所能访问的 A...
    99+
    2023-06-26
  • JPA如何使用nativequery多表关联查询返回自定义实体类
    目录JPA nativequery多表关联查询返回自定义实体类JPA多表关联的实现方式优缺点对比使用sql并返回自定义实体类JPA多表关联动态查询(自定义sql语句)实体类注解解释测...
    99+
    2024-04-02
  • 如何使用用户定义的Linq表值函数
    小编给大家分享一下如何使用用户定义的Linq表值函数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用用户定义的Linq表值函数Linq表值函数返回单个行集(与存...
    99+
    2023-06-17
  • jQuery中animate()如何使用预定义的值
    这篇文章将为大家详细讲解有关jQuery中animate()如何使用预定义的值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。jQuery animate() - 使用预定...
    99+
    2024-04-02
  • vue中的自定义指令如何使用
    这篇文章主要介绍“vue中的自定义指令如何使用”,在日常操作中,相信很多人在vue中的自定义指令如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中的自定义指令如何使用”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • antd vue中,如何在form表单中的自定义组件使用v-decorator
    目录antd vue中在form表单中的自定义组件使用v-decorator问题描述分析简单说明v-decorator antd vue的理解总结antd vue中在form表单中的...
    99+
    2023-05-17
    antd vue form表单自定义组件 自定义组件v-decorator
  • 如何使用Spring中的重试机制
    这篇文章主要介绍“如何使用Spring中的重试机制”,在日常操作中,相信很多人在如何使用Spring中的重试机制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Spring中的重试机制”的疑惑有所帮助!...
    99+
    2023-06-15
  • 如何在C++中使用STL关联式容器自定义排序规则
    如何在C++中使用STL关联式容器自定义排序规则?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1) 使用函数对象自定义排序规则#include <iostrea...
    99+
    2023-06-06
  • html中的address标签如何定义及使用
    这篇文章将为大家详细讲解有关html中的address标签如何定义及使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。     实例  ...
    99+
    2024-04-02
  • Unix打包中的PHP重定向:如何使用?
    在Unix环境下,打包和压缩文件是一种非常常见的操作。当我们需要将文件打包或者压缩成一个单独的文件时,Unix提供了一系列工具来完成这个任务。其中,PHP在Unix打包中扮演了一个非常重要的角色。在本文中,我们将深入探讨Unix打包中的P...
    99+
    2023-10-14
    重定向 unix 打包
  • python中函数的参数如何定义和使用
    这篇文章主要介绍“python中函数的参数如何定义和使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python中函数的参数如何定义和使用”文章能帮助大家解决问题。一、参数的定义1、函数的参数在哪...
    99+
    2023-07-02
  • go语言中的切片如何定义及使用
    这篇文章主要介绍“go语言中的切片如何定义及使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言中的切片如何定义及使用”文章能帮助大家解决问题。golang切片(slice)(1)切片的定义切...
    99+
    2023-07-02
  • Vue3中的setup与自定义指令如何使用
    本篇内容主要讲解“Vue3中的setup与自定义指令如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3中的setup与自定义指令如何使用”吧!setup语法糖最大好处就是所有声明部分...
    99+
    2023-07-06
  • 如何在Java中使用JavaScript教程中的重定向?
    Java和JavaScript是两种不同的编程语言,它们分别用于不同的应用场景。在Java中,我们可以使用JavaScript来实现一些特定的功能,比如重定向。本篇文章将介绍如何在Java中使用JavaScript教程中的重定向。 一、什么...
    99+
    2023-06-26
    重定向 javascript 教程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作