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

Oracle跨用户表授权+同义词创建的标准脚本模板

文章目录

      • 模板参数说明
      • 一、单表授权+私有同义词(常用)
      • 二、批量表授权+私有同义词(适合多表场景)
      • 三、创建公有同义词(多用户共享场景)
      • 四、权限回收(如需撤销授权)
      • 使用说明

以下是Oracle跨用户表授权+同义词创建的标准脚本模板,包含单表操作、批量操作、私有/公有同义词创建等场景,可根据实际需求修改参数后直接执行:

模板参数说明

-- 需替换的参数:
<OWNER>        -- 表的所有者(如MIP_OWNER)
<TARGET_USER>  -- 需要访问表的用户(如CVMS_USER)
<TABLE_NAME>   -- 具体表名(如T_MIP_USER)
<TABLE_LIST>   -- 批量表名列表(如'T_MIP_USER,T_MIP_ORDER,T_MIP_LOG')

一、单表授权+私有同义词(常用)

-- 1. 以<OWNER>身份登录,授予权限(根据需求选择权限组合)
GRANT SELECT, INSERT, UPDATE, DELETE 
ON <OWNER>.<TABLE_NAME> 
TO <TARGET_USER>;-- 2. 以<TARGET_USER>身份登录,创建私有同义词(仅当前用户可用)
CREATE OR REPLACE SYNONYM <TABLE_NAME> 
FOR <OWNER>.<TABLE_NAME>;

二、批量表授权+私有同义词(适合多表场景)

-- 1. 批量授权(以<OWNER>身份执行,需替换表名列表和权限)
DECLAREv_table_list VARCHAR2(1000) := '<TABLE_LIST>'; -- 表名用逗号分隔v_owner      VARCHAR2(100)  := '<OWNER>';v_user       VARCHAR2(100)  := '<TARGET_USER>';v_sql        VARCHAR2(2000);v_table      VARCHAR2(100);-- 游标:拆分表名列表CURSOR c_tables ISSELECT regexp_substr(v_table_list, '[^,]+', 1, LEVEL) AS table_nameFROM dualCONNECT BY regexp_substr(v_table_list, '[^,]+', 1, LEVEL) IS NOT NULL;
BEGINFOR rec IN c_tables LOOPv_table := rec.table_name;-- 授予权限(可修改为SELECT/INSERT等)v_sql := 'GRANT SELECT, INSERT, UPDATE, DELETE ON ' || v_owner || '.' || v_table || ' TO ' || v_user;EXECUTE IMMEDIATE v_sql;DBMS_OUTPUT.PUT_LINE('已授权表:' || v_owner || '.' || v_table);END LOOP;
END;
/-- 2. 批量创建私有同义词(以<TARGET_USER>身份执行)
DECLAREv_table_list VARCHAR2(1000) := '<TABLE_LIST>'; -- 与授权的表名列表一致v_owner      VARCHAR2(100)  := '<OWNER>';v_sql        VARCHAR2(2000);v_table      VARCHAR2(100);CURSOR c_tables ISSELECT regexp_substr(v_table_list, '[^,]+', 1, LEVEL) AS table_nameFROM dualCONNECT BY regexp_substr(v_table_list, '[^,]+', 1, LEVEL) IS NOT NULL;
BEGINFOR rec IN c_tables LOOPv_table := rec.table_name;v_sql := 'CREATE OR REPLACE SYNONYM ' || v_table || ' FOR ' || v_owner || '.' || v_table;EXECUTE IMMEDIATE v_sql;DBMS_OUTPUT.PUT_LINE('已创建同义词:' || v_table);END LOOP;
END;
/

三、创建公有同义词(多用户共享场景)

-- 1. 先执行单表/批量授权(同上)-- 2. 以DBA身份创建公有同义词(所有用户可访问,无需前缀)
-- 单表
CREATE OR REPLACE PUBLIC SYNONYM <TABLE_NAME> 
FOR <OWNER>.<TABLE_NAME>;-- 批量(以DBA身份执行)
DECLAREv_table_list VARCHAR2(1000) := '<TABLE_LIST>';v_owner      VARCHAR2(100)  := '<OWNER>';v_sql        VARCHAR2(2000);v_table      VARCHAR2(100);CURSOR c_tables ISSELECT regexp_substr(v_table_list, '[^,]+', 1, LEVEL) AS table_nameFROM dualCONNECT BY regexp_substr(v_table_list, '[^,]+', 1, LEVEL) IS NOT NULL;
BEGINFOR rec IN c_tables LOOPv_table := rec.table_name;v_sql := 'CREATE OR REPLACE PUBLIC SYNONYM ' || v_table || ' FOR ' || v_owner || '.' || v_table;EXECUTE IMMEDIATE v_sql;DBMS_OUTPUT.PUT_LINE('已创建公有同义词:' || v_table);END LOOP;
END;
/

四、权限回收(如需撤销授权)

-- 单表权限回收(以<OWNER>身份)
REVOKE SELECT, INSERT, UPDATE, DELETE 
ON <OWNER>.<TABLE_NAME> 
FROM <TARGET_USER>;-- 删除私有同义词(以<TARGET_USER>身份)
DROP SYNONYM <TABLE_NAME>;-- 删除公有同义词(以DBA身份)
DROP PUBLIC SYNONYM <TABLE_NAME>;

使用说明

  1. 执行前替换所有<参数>为实际值(如MIP_OWNERCVMS_USERT_MIP_XXX)。
  2. 权限部分根据需求调整(例如只读场景仅保留SELECT)。
  3. 批量操作时,表名列表用英文逗号分隔,避免空格。
  4. 公有同义词需DBA权限,且需确保表名在数据库中唯一(避免冲突)。
http://www.dtcms.com/a/605866.html

相关文章:

  • 网站建设基本资料wordpress可以做门户网站
  • Codeforces Global 30 Div1+2(ABCDE)
  • 自学网站建设多久少女免费观看完整电视电影
  • 流程驱动,协同致胜:现代OA系统构筑企业智能办公中枢
  • 填鸭表单!开箱即用的开源问卷调查系统!
  • wordpress拖拽建站潍坊做网站公司潍坊网络公司
  • 企业为什么要做网站运营旅游网站开发的背景和意义
  • 编译语言选择与开发效率的关系
  • 【LeetCode刷题】三数之和
  • 【每天一个AI小知识】:什么是线性回归?
  • 昆明网站建设优化外贸建站公司排名
  • 做房产的网站排名天津建设工程信息网中标公告
  • word表格操作疑难杂症处理
  • 网站建设收费标准讯息学it学费大概多少钱
  • 第一个Python金融爬虫
  • 如何在线修改ORACLE 临时文件
  • 【Oracle APEX开发小技巧17】交互式网格操作按钮根据条件/状态设置能否被点击生效
  • 淘宝扭蛋机小程序:电商娱乐化赛道的机遇挖掘与风险防控
  • 【AI大模型技术】8.大模型文本理解与生成
  • vue前端静态页面部署
  • 视频直播网站开发流程滁州做网站电话号码
  • 怎样快速仿做网站有哪些企业官网做得比较好
  • CameraBag Mac英文 照片视频滤镜编辑工具
  • 使用Claude Code进行编程——国内用户使用指南
  • (17)python开发经验 --- Python查找dll exe依赖缺失
  • (第五篇)Spring AI 基础入门之嵌入模型与向量基础:AI 理解世界的方式
  • 基于RTDS与DIgSILENT联合仿真的电力系统薄弱点识别及光伏控制策略优化
  • 在俄罗斯用钱让女性做h事情的网站wordpress post模板
  • 网站地区分站系统自助注册搭建网站
  • 自适应残差卷积网络 + 斑马优化:让图像更清晰的“智慧组合“