当前位置: 首页 > news >正文

达梦授权某个模式给其它用户只读权限

为了在生产环境中将SZSJTJFX模式下的所有对象的只读权限授予XXXX的账号SZJG_CPZLJD,可以通过以下分批处理的脚本来完成。此脚本会遍历SZSJTJFX模式下的所有表和视图,并生成相应的GRANT语句,以避免“过多的对象名前缀”错误。

分批处理的动态SQL脚本

DECLARECURSOR CUR IS SELECT OBJECT_NAME FROM ALL_OBJECTS WHERE OWNER = 'SZSJTJFX' AND OBJECT_TYPE IN ('TABLE', 'VIEW');SQLSTMT VARCHAR2(1000);BATCH_SIZE CONSTANT PLS_INTEGER := 10; -- 设置为更小的批次OBJECT_COUNT PLS_INTEGER := 0;
BEGINFOR REC IN CUR LOOPBEGINSQLSTMT := 'GRANT SELECT ON SZSJTJFX.' || REC.OBJECT_NAME || ' TO SZJG_CPZLJD;';EXECUTE IMMEDIATE SQLSTMT;EXCEPTIONWHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('Error granting SELECT on ' || REC.OBJECT_NAME || ': ' || SQLERRM);END;OBJECT_COUNT := OBJECT_COUNT + 1;IF OBJECT_COUNT >= BATCH_SIZE THENCOMMIT;OBJECT_COUNT := 0;END IF;END LOOP;COMMIT;
END;

解释

  1. DECLARE: 声明所需变量和常量。
    • CUR: 游标查询获取SZSJTJFX模式下所有表和视图的名称。
    • SQLSTMT: 存储动态生成的GRANT语句。
    • BATCH_SIZE: 设置为更小的批次大小(如10)。
    • OBJECT_COUNT: 记录当前批次中已处理的对象数量。
  2. FOR REC IN CUR LOOP: 循环遍历游标中的每一行。
  3. BEGIN … END: 包装GRANT语句的执行,以便捕捉异常。
    • SQLSTMT := ‘GRANT SELECT ON SZSJTJFX.’ || REC.OBJECT_NAME || ’ TO SZJG_CPZLJD;';: 拼接生成GRANT语句。
    • EXECUTE IMMEDIATE SQLSTMT;: 执行生成的GRANT语句。
    • EXCEPTION: 捕捉异常并输出错误信息。
  4. OBJECT_COUNT := OBJECT_COUNT + 1;: 增加当前批次的对象计数。
  5. IF OBJECT_COUNT >= BATCH_SIZE THEN: 检查是否达到批次大小。
    • COMMIT;: 提交当前批次的事务。
    • OBJECT_COUNT := 0;: 重置对象计数。
  6. END LOOP: 循环结束。
  7. COMMIT;: 提交最后一批未满批次大小的事务。
  8. END: 匿名PL/SQL块结束。

执行步骤

  1. 使用数据库管理工具(如达梦数据库管理工具)登录到生产环境数据库。
  2. 确保启用了DBMS_OUTPUT,以便可以看到调试信息。
  3. 打开SQL窗口并粘贴上述脚本。
  4. 执行脚本,完成权限授予。

验证权限

可以使用以下查询验证是否正确授予了只读权限:

SELECT * FROM SZSJTJFX.某个表名 WHERE ROWNUM = 1;

使用SZJG_CPZLJD账号执行该查询,确保能成功返回结果,以验证权限是否正确授予。

相关文章:

  • ubuntu 22.04 appearance设置没有dock选项
  • 德勤:中国、印度等对ChatGPT等生成式AI应用,处领先地位
  • 27.Java中单例模式的实现方式
  • 大模型面试--大模型(LLMs)基础面
  • 史上最全的Linux常用命令、使用技巧汇总(超全面!简单明了!)
  • 头歌springboot初体验
  • RPA机器人流程自动化如何优化人力资源工作流程
  • 嵩山为什么称为五岳之尊
  • 【STM32踩坑】HAL固件库版本过高导致烧录后无法运行问题
  • mongodb5.0.5版本集群搭建
  • 27、python-第三章-6-判断语句的嵌套和猜数游戏
  • Dream
  • 单点登录(JWT实现)
  • C# 实现微信公众号生成场景二维码
  • 自动化您的任务——crewAI 初学者教程
  • .pyc 想到的一些问题
  • Codepen 每日精选(2018-3-25)
  • E-HPC支持多队列管理和自动伸缩
  • es6--symbol
  • ES6--对象的扩展
  • nginx 负载服务器优化
  • React+TypeScript入门
  • Redis 中的布隆过滤器
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • vue的全局变量和全局拦截请求器
  • 闭包--闭包作用之保存(一)
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 反思总结然后整装待发
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 聚类分析——Kmeans
  • 理解在java “”i=i++;”所发生的事情
  • 两列自适应布局方案整理
  • 扑朔迷离的属性和特性【彻底弄清】
  • 一起参Ember.js讨论、问答社区。
  • 原生Ajax
  • 再次简单明了总结flex布局,一看就懂...
  • C# - 为值类型重定义相等性
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (1)常见O(n^2)排序算法解析
  • (31)对象的克隆
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)LINQ之路
  • **python多态
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .describe() python_Python-Win32com-Excel
  • .gitignore
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 的程序集加载上下文