【问题标题】:Oracle Update Query Data masking for column列的 Oracle 更新查询数据屏蔽
【发布时间】:2021-03-31 00:11:00
【问题描述】:

我尝试在 Oracle Sql 上使用 standard_hash() 使用 Datamasking 更新一列,但是在处理数百万条记录时,需要很长时间才能更新为标准哈希(列)。有人可以提供调整更新查询的解决方案或建议吗?

【问题讨论】:

  • 你为什么要这样做?
  • 是的,实际上我们正在将数据库从一个环境刷新到另一个环境,因此需要隐藏敏感信息..
  • ...好吧,但如果这是一次性的事情,为什么性能对你来说甚至很重要?
  • 更新专栏花了很长时间,所以我问任何其他方式来做到这一点?
  • 长时间是多久?什么等待事件被命中以及持续多长时间?该列是否包含在索引中?表有多大(以 GB 和行为单位)?您目前具体进行了怎样的更新?

标签: sql oracle performance security


【解决方案1】:

谢谢大家,我找到了解决方案,我使用 CTAS 查询创建具有 Standard_hash 的 Dummy 表,后来我重命名了表...对于 3500 万条记录,它只需要 8 分钟,但简单的更新方法需要大约 1 小时来逐行更新

【讨论】:

    【解决方案2】:

    您正在更新大表中的每一行。这需要时间。因为您正在更新每一行,所以假设您的 DBA 已经很好地配置了数据库以实现高效的多块读取,因此无法加快访问路径。 (索引可能没有用,除非您正在加密的列已编入索引。)

    您正在执行的任务 - 散列值 - 计算量很大。这需要时间。多少时间取决于您选择的加密强度和您要加密的列的长度。加密 4000 个字符的字符串比 16 个字符的字符串花费更多时间。使用 SHA-512 比使用 MD5 需要更多时间。

    您可能不担心此任务的哈希冲突,因此如果您有机会切换算法,请选择 MD5。 (公平地说,即使是 MD5 哈希冲突的可能性也可以接受,它只是高于更强的 SHA 级别。

    或者,您真的需要使用加密吗?你能用 DBMS_RANDOM 值替换数据吗?我知道有加密的用例,当我们需要哈希的可重复性时,但值得提出这个问题。

    简而言之,您正在对一张大桌子进行计算量巨大的操作。需要花时间。对于一次性练习,您可能应该忍受它。仅当这变成常规过程时才考虑性能调整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多