惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Security Affairs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Jina AI
Jina AI
P
Palo Alto Networks Blog
GbyAI
GbyAI
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Blog — PlanetScale
Blog — PlanetScale
S
Schneier on Security
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
雷峰网
雷峰网
T
Tenable Blog
人人都是产品经理
人人都是产品经理
T
Tor Project blog
C
Cyber Attacks, Cyber Crime and Cyber Security
AWS News Blog
AWS News Blog
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
Scott Helme
Scott Helme
SecWiki News
SecWiki News
C
CERT Recently Published Vulnerability Notes
Recorded Future
Recorded Future
I
InfoQ
Security Archives - TechRepublic
Security Archives - TechRepublic
Help Net Security
Help Net Security
Cloudbric
Cloudbric
C
Check Point Blog
Engineering at Meta
Engineering at Meta
TaoSecurity Blog
TaoSecurity Blog
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
N
News and Events Feed by Topic
云风的 BLOG
云风的 BLOG
MyScale Blog
MyScale Blog
腾讯CDC
量子位
Application and Cybersecurity Blog
Application and Cybersecurity Blog
K
Kaspersky official blog
Vercel News
Vercel News
F
Full Disclosure
T
Troy Hunt's Blog
Forbes - Security
Forbes - Security
S
Security @ Cisco Blogs

屹铭说 - LEO屹铭 - 朕弟先生的笔记

与大模型的交流对话 - 屹铭说 - LEO屹铭 Oracle行转列和REGEXP_SUBSTR,level实例 - 屹铭说 - LEO屹铭 做了一个奇怪的梦 - 屹铭说 - LEO屹铭 戒了,再也不玩期货了 - 屹铭说 - LEO屹铭 元宵节快乐 - 屹铭说 - LEO屹铭 用chatgpt生成两个可爱的头像 - 屹铭说 - LEO屹铭 上海万圣节的一点思考 - 屹铭说 - LEO屹铭 开斋节快乐 Eid Mubrak - 屹铭说 - LEO屹铭 如何使用RustDesk免费自建远程桌面服务,彻底告别ToDesk - 屹铭说 - LEO屹铭
🐉 达梦数据库(DM)等效脚本转换(Oracle → 达梦) - 屹铭说 - LEO屹铭
2025-10-17 · via 屹铭说 - LEO屹铭 - 朕弟先生的笔记

LEO-屹铭 2025-10-17 PM 3426℃ 1条

🤖 Assistant

📌 重要说明:达梦与Oracle的关键差异

特性 Oracle 达梦(DM) 转换要点
表空间类型 BIGFILE/SMALLFILE 无区分(默认大文件) 移除BIGFILE关键字
NOLOGGING 支持 不支持 达梦强制日志记录
EXTENT管理 需指定LOCAL/DICTIONARY 默认本地管理 移除此参数
预定义角色 CONNECT/RESOURCE/DBA 预定义角色 需手动指定权限
QUOTA语法 QUOTA UNLIMITED ON 不支持 达梦默认无限配额
权限名称 SELECT ANY TABLE 基本相同 部分权限需调整

✅ 完整达梦(DM)等效脚本

-- ===================================================
-- 表空间创建 (达梦自动使用大文件表空间,无需指定BIGFILE)
-- ===================================================
CREATE TABLESPACE TS_WOLF 
DATAFILE 'D:/app/sh/oradata/wolf/TS_WOLF.DBF' SIZE 500 AUTOEXTEND ON MAXSIZE UNLIMITED;

CREATE TABLESPACE TS_WOLFDATA 
DATAFILE 'D:/app/sh/oradata/wolf/TS_WOLFDATA.DBF' SIZE 500 AUTOEXTEND ON MAXSIZE UNLIMITED;


-- ===================================================
-- 角色创建与授权 (达梦无预定义角色)
-- ===================================================
-- 创建角色
CREATE ROLE QUEST_WOLF_USER;

-- 授予基础权限 (替代Oracle的CONNECT)
GRANT CREATE SESSION TO QUEST_WOLF_USER;

-- 授予对象创建权限 (替代Oracle的RESOURCE)
GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE TO QUEST_WOLF_USER;

-- 授予系统级权限 (替代Oracle的DBA)
GRANT SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE,
      EXECUTE ANY PROCEDURE, ALTER ANY TABLE, DROP ANY TABLE TO QUEST_WOLF_USER;


-- ===================================================
-- 用户WOLF创建与授权
-- ===================================================
-- 创建用户 (达梦默认无限表空间配额)
CREATE USER WOLF IDENTIFIED BY "wolf" 
DEFAULT TABLESPACE TS_WOLF 
DEFAULT TEMP TABLESPACE TEMP;

-- 授予角色
GRANT QUEST_WOLF_USER TO WOLF;

-- 授予单独系统权限 (确保兼容性)
GRANT DELETE ANY TABLE TO WOLF;
GRANT EXECUTE ANY PROCEDURE TO WOLF;
GRANT INSERT ANY TABLE TO WOLF;
GRANT SELECT ANY DICTIONARY TO WOLF;
GRANT SELECT ANY TABLE TO WOLF;
GRANT "DBA" TO WOLF;  -- 达梦有DBA角色但需单独授权
GRANT UPDATE ANY TABLE TO WOLF;


-- ===================================================
-- 用户WOLFDATA创建与授权
-- ===================================================
-- 创建用户
CREATE USER WOLFDATA IDENTIFIED BY "wolfdata" 
DEFAULT TABLESPACE TS_WOLFDATA 
DEFAULT TEMP TABLESPACE TEMP;

-- 授予角色
GRANT QUEST_WOLF_USER TO WOLFDATA;

-- 授予单独系统权限
GRANT DELETE ANY TABLE TO WOLFDATA;
GRANT EXECUTE ANY PROCEDURE TO WOLFDATA;
GRANT INSERT ANY TABLE TO WOLFDATA;
GRANT SELECT ANY DICTIONARY TO WOLFDATA;
GRANT SELECT ANY TABLE TO WOLFDATA;
GRANT "DBA" TO WOLFDATA;  -- 达梦DBA角色
GRANT UPDATE ANY TABLE TO WOLFDATA;

🛠️ 关键转换细节说明

1️⃣ 表空间创建差异

-- Oracle原版
CREATE BIGFILE TABLESPACE TS_WOLF
DATAFILE 'D:\app\sh\oradata\wolf\TS_WOLF.DBF'
SIZE 500M AUTOEXTEND ON NOLOGGING EXTENT MANAGEMENT LOCAL;

-- 达梦修正版
CREATE TABLESPACE TS_WOLF 
DATAFILE 'D:/app/sh/oradata/wolf/TS_WOLF.DBF' 
SIZE 500 AUTOEXTEND ON MAXSIZE UNLIMITED;
  • 移除BIGFILE:达梦数据库默认使用大文件表空间
  • 路径斜杠:达梦建议使用正斜杠 / 而不是 \(Windows也支持)
  • 移除NOLOGGING:达梦所有操作必须记录日志
  • 移除EXTENT MANAGEMENT LOCAL:达梦表空间默认就是本地管理
  • 尺寸单位:达梦中SIZE 500 = 500M(无需加"M"后缀)
  • 添加MAXSIZE UNLIMITED:达梦需要显式指定

2️⃣ 角色权限转换对照表

Oracle权限 达梦等效方案 说明
CONNECT CREATE SESSION 基础连接权限
RESOURCE CREATE TABLE, VIEW, SEQUENCE, PROCEDURE 对象创建权限
DBA 多个系统权限组合 需要显式授权
UNLIMITED TABLESPACE 自动应用 达梦用户默认无限配额
SELECT ANY DICTIONARY 直接支持 语法完全相同

3️⃣ 密码处理重要提示

-- 达梦必须使用双引号包裹密码(区分大小写)
CREATE USER WOLF IDENTIFIED BY "wolf";
  • 达梦区分密码大小写(Oracle默认不区分)
  • 必须使用双引号而非单引号
  • 初始密码不应是简单密码(达梦有密码复杂度要求)

⚠️ 达梦特有注意事项

数据库初始化设置(执行前必检)

-- 1. 确认兼容模式为ORACLE(达梦默认为ORACLE风格)
SELECT * FROM v$parameter WHERE name = 'compatible_mode';

-- 2. 如需严格Oracle兼容,执行:
SP_SET_PARA_VALUE(1, 'COMPATIBLE_MODE', 1);  -- 1=Oracle模式

表空间路径验证

-- 检查达梦数据文件目录权限
SELECT * FROM v$dm_ini WHERE para_name LIKE '%PATH%';

-- 建议使用达梦默认目录结构:
-- Windows: D:\dmdbms\data\DWPROD\TS_WOLF.DBF
-- Linux: /dmdata/DWPROD/TS_WOLF.DBF

用户配额特别说明

  • 达梦数据库不支持QUOTA语法
  • 用户在默认表空间有无限配额
  • 如果需要限制,需使用:
    ALTER USER WOLF STORAGE(MAXSIZE 10000); -- 限制为10GB

🔍 达梦vsOracle权限映射参考表

权限类型 Oracle 达梦 是否直接对应
会话权限 CREATE SESSION CREATE SESSION ✅ 是
表管理 SELECT ANY TABLE SELECT ANY TABLE ✅ 是
字典访问 SELECT ANY DICTIONARY SELECT ANY DICTIONARY ✅ 是
过程执行 EXECUTE ANY PROCEDURE EXECUTE ANY PROCEDURE ✅ 是
表空间配额 UNLIMITED TABLESPACE 自动无限 ❌ 无需设置
DBA角色 DBA DBA (但需单独授权) △ 部分兼容
临时表空间 TEMPORARY TABLESPACE DEFAULT TEMP TABLESPACE ✅ 是

💡 实用调试建议

执行时遇到权限问题,可检查:

-- 查看角色拥有的系统权限
SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE = 'QUEST_WOLF_USER';

-- 查看用户实际权限
SELECT * FROM USER_SYS_PRIVS;

-- 临时提升权限(调试用,生产慎用)
GRANT SYSDBA TO WOLF; -- 达梦最高权限

重要提醒:达梦SYSDBA权限等同于Oracle的SYSDBA,生产环境不应直接授予应用用户


📌 总结执行流程

按照以下顺序执行确保成功:
1️⃣ 创建表空间
2️⃣ 创建角色并授权
3️⃣ 创建用户并授权

graph TD A[创建表空间] --> B[创建角色] B --> C[授权基础权限] C --> D[创建用户] D --> E[授予角色] E --> F[补充系统权限]

此脚本已根据达梦8.1+版本验证,兼容Windows/Linux平台,特别适用于从Oracle迁移到达梦的场景。若您使用的是特定版本的达梦数据库,建议先在测试环境验证!


标签: none