一、linux 安装部署
二、集群安装部署
三、达梦数据库概念
3.1 达梦数据库 中 SCHEMA tabselspace dabase 数据库实例之间的关系
理解一
在达梦数据库中,数据库实例 、数据库 、表空间 (tablespace)和模式(SCHEMA)是四个不同层次的概念,理解它们的关系有助于更好地进行数据库管理和设计。
1. 数据库实例(Instance)
数据库实例是达梦数据库服务器的运行环境,由一组后台进程和内存结构组成。当你启动一个达梦服务(dmserver)时,就创建了一个实例。一个实例通常只能挂载和打开一个数据库。
2. 数据库(Database)
数据库是物理文件的集合,包括数据文件、控制文件、RLOG 日志文件等。它是在实际存储介质上持久化保存数据的基础。一个实例负责管理一个数据库,提供对数据的访问。
3. 表空间(Tablespace)
表空间是数据库的逻辑存储结构,用于组织物理数据文件。一个数据库可以包含多个表空间,每个表空间由一个或多个数据文件组成。创建表、索引等对象时可以指定存放的表空间,从而实现数据的分布和管理。
4. 模式(SCHEMA)
模式是数据库对象的逻辑集合,通常与一个用户绑定。达梦中创建用户时会自动创建一个同名的模式。模式中可以包含表、视图、存储过程、序列等对象。模式不直接对应物理存储,其对象存储在所属的表空间中。
关系概览
数据库实例 -- 管理 --> 数据库 -- 包含 --> 表空间 (物理文件)
|
-- 包含用户 --> 用户 -- 拥有 --> 模式 -- 包含 --> 表/索引等
- 一个实例运行一个数据库;
- 一个数据库包含多个表空间(
SYSTEM、MAIN、TEMP等),存储实际数据; - 一个数据库可以有多个用户,每个用户默认拥有一个同名模式;
- 模式中的对象(如表)最终存储在某个表空间中。
#mermaid-svg-KVku29po3S9WJM2S{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-KVku29po3S9WJM2S .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-KVku29po3S9WJM2S .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-KVku29po3S9WJM2S .error-icon{fill:#552222;}#mermaid-svg-KVku29po3S9WJM2S .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KVku29po3S9WJM2S .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-KVku29po3S9WJM2S .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KVku29po3S9WJM2S .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KVku29po3S9WJM2S .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-KVku29po3S9WJM2S .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KVku29po3S9WJM2S .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KVku29po3S9WJM2S .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KVku29po3S9WJM2S .marker.cross{stroke:#333333;}#mermaid-svg-KVku29po3S9WJM2S svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KVku29po3S9WJM2S p{margin:0;}#mermaid-svg-KVku29po3S9WJM2S .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-KVku29po3S9WJM2S .cluster-label text{fill:#333;}#mermaid-svg-KVku29po3S9WJM2S .cluster-label span{color:#333;}#mermaid-svg-KVku29po3S9WJM2S .cluster-label span p{background-color:transparent;}#mermaid-svg-KVku29po3S9WJM2S .label text,#mermaid-svg-KVku29po3S9WJM2S span{fill:#333;color:#333;}#mermaid-svg-KVku29po3S9WJM2S .node rect,#mermaid-svg-KVku29po3S9WJM2S .node circle,#mermaid-svg-KVku29po3S9WJM2S .node ellipse,#mermaid-svg-KVku29po3S9WJM2S .node polygon,#mermaid-svg-KVku29po3S9WJM2S .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KVku29po3S9WJM2S .rough-node .label text,#mermaid-svg-KVku29po3S9WJM2S .node .label text,#mermaid-svg-KVku29po3S9WJM2S .image-shape .label,#mermaid-svg-KVku29po3S9WJM2S .icon-shape .label{text-anchor:middle;}#mermaid-svg-KVku29po3S9WJM2S .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-KVku29po3S9WJM2S .rough-node .label,#mermaid-svg-KVku29po3S9WJM2S .node .label,#mermaid-svg-KVku29po3S9WJM2S .image-shape .label,#mermaid-svg-KVku29po3S9WJM2S .icon-shape .label{text-align:center;}#mermaid-svg-KVku29po3S9WJM2S .node.clickable{cursor:pointer;}#mermaid-svg-KVku29po3S9WJM2S .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-KVku29po3S9WJM2S .arrowheadPath{fill:#333333;}#mermaid-svg-KVku29po3S9WJM2S .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KVku29po3S9WJM2S .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KVku29po3S9WJM2S .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KVku29po3S9WJM2S .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-KVku29po3S9WJM2S .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KVku29po3S9WJM2S .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-KVku29po3S9WJM2S .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KVku29po3S9WJM2S .cluster text{fill:#333;}#mermaid-svg-KVku29po3S9WJM2S .cluster span{color:#333;}#mermaid-svg-KVku29po3S9WJM2S div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KVku29po3S9WJM2S .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-KVku29po3S9WJM2S rect.text{fill:none;stroke-width:0;}#mermaid-svg-KVku29po3S9WJM2S .icon-shape,#mermaid-svg-KVku29po3S9WJM2S .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KVku29po3S9WJM2S .icon-shape p,#mermaid-svg-KVku29po3S9WJM2S .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-KVku29po3S9WJM2S .icon-shape .label rect,#mermaid-svg-KVku29po3S9WJM2S .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KVku29po3S9WJM2S .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-KVku29po3S9WJM2S .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-KVku29po3S9WJM2S :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 实例 Instance
管理
包含
存储
包含
拥有
包含
所属
dmserver 进程
内存 / 后台线程
数据库 Database
表空间 Tablespace
数据文件 Datafile
用户 User
模式 SCHEMA
表 / 视图 / 索引等
理解二
一、整体层级(从大到小)
实例 (Instance) → 数据库 (Database) → 表空间 (Tablespace) → 模式 (SCHEMA) → 表 / 视图 / 索引等对象达梦在线服务平台
- 实例 Instance(内存 + 进程)
组成:后台线程 + 共享内存,运行在内存中。
核心规则:一个实例只能挂载打开 1 个数据库;单实例环境下,1 实例 = 1 数据库;DMDSC 集群可以多实例挂载同一个数据库文件集。
通俗理解:实例是 "服务进程",用来打开磁盘上的数据库文件。 - 数据库 Database(磁盘文件集合)
物理载体:所有数据文件 (.dbf)、控制文件、日志文件的整体,保存在磁盘。
一个数据库内部包含多个表空间(SYSTEM、MAIN、ROLL、TEMP、自定义业务表空间)。 - 表空间 Tablespace(物理存储容器)
作用:管理物理数据文件,是数据存储的载体。
关系:
1 个数据库包含多个表空间;
1 个表空间可以包含多个数据文件;
一个表空间可以被多个模式共用;
创建表时指定表空间,决定数据写到哪个 dbf 文件里。 - 模式 SCHEMA(对象命名空间,重点区分 Oracle)
模式 = 表、视图、函数、序列等对象的集合,纯粹逻辑命名空间,不直接绑定文件。
达梦独有的关系(和 Oracle 不一样)
Oracle:用户 ↔ 模式 严格一对一;
达梦 DM:一个用户可以拥有多个 SCHEMA(一对多);
默认行为:CREATE USER test; 会自动生成一个同名 test 的 SCHEMA;
可以单独执行 CREATE SCHEMA sch1 AUTHORIZATION test;,给现有用户新建额外模式。
3.2 、四者包含关系总结
- 实例 包含 数据库
一个实例只能打开唯一一套数据库文件。 - 数据库 包含 多个表空间
表空间是数据库划分存储的单元,对应物理 dbf 文件。 - 表空间 承载 多个模式下的数据
多个 SCHEMA 里的表,可以存放在同一个表空间;
一张表只能归属一个表空间。 - 模式 (SCHEMA) 归属某个用户,存放业务对象
SCHEMA 只管对象名字,不管物理存储;存储由表空间决定。
一句话串联
启动实例打开磁盘上的数据库,数据库划分出若干表空间来管理物理文件;在库中创建用户并建立多个SCHEMA,在模式里建表,并把表数据落地到指定表空间中。
mysql /oracle /达梦对比

系统内置 SCHEMA(默认自带)
SYS:系统核心字典
SYSDBA:管理员模式
SYSAUDIT:审计对象
SYSMAIN:系统主模式
SYSDBO
3.3 连接
一、JDBC URL 标准格式
plaintext
jdbc:dm://IP:PORT?schema=模式名
完整写法:
plaintext
jdbc:dm://127.0.0.1:5236/DATABASE?schema=TEST_SCHEMA
分段说明
127.0.0.1:5236
对应:数据库实例(dmserver 服务),一个端口对应一个实例。
斜杠后面的 DATABASE
达梦里这个字段填数据库名,大多数环境可以省略不写。
单实例环境基本都可以简写:
plaintext
jdbc:dm://127.0.0.1:5236
?schema=XXX 参数
这里填写的是 SCHEMA(模式名),不是实例名。
作用:登录成功后,自动把当前会话默认模式切换为此 schema,省去每次 set schema。
二、核心结论
地址里的 IP + 端口 → 实例
URL 参数 schema= → 模式 SCHEMA
达梦一个实例只对应一个 Database,不需要在 URL 切换数据库。
三、两种常用写法
最简写法(程序里自己指定 schema)
url
jdbc:dm://127.0.0.1:5236
自动指定默认模式(推荐)
url
jdbc:dm://127.0.0.1:5236?schema=BUSINESS
四、补充区分(极易混淆)
切换实例:改端口 5236 → 5237
切换 SCHEMA:修改 schema=xxx,或者执行 SET SCHEMA XXX;
达梦不能在同一个 URL 里切换 Database,多库就要多实例。
如果你用 MyBatis,我可以顺便给你写好达梦的连接配置。
3.4 端口
达梦数据库的默认端口主要取决于您使用的具体版本以及组件类型:
- 数据库实例监听端口(最常用)
达梦 8 (DM8):默认端口为 523612。
达梦 9 (DM9):默认端口更改为 52378。 - 达梦 8 其他组件的默认端口
除了数据库实例,达梦 8 的其他配套工具和服务也有各自的默认端口:
数据库管理工具端口:5237
数据库备份和恢复工具端口:5238
数据库监控工具端口:5239
数据库复制功能端口:52402
💡 补充说明:
以上均为默认配置,在实际部署(尤其是生产环境)中,为了安全考虑,通常建议修改为自定义端口12。
如果需要确认当前数据库使用的端口,可以查看达梦数据库的主配置文件 dm.ini 中的 PORT_NUM 参数
四 常用命令
4.1 基础维护命令
- 查看数据库版本:
sql
SELECT * FROM V$VERSION;
- 查看达梦数据库当前状态:
sql
SELECT status$ FROM v$instance;
- 查询数据文件位置:
sql
SELECT * FROM v$datafile;
- 设置用户口令策略:
可以使用以下命令来设置用户口令策略,例如禁止用户名与密码相同、口令长度不小于9位、至少包含一个大写字母等:
ALTER USER <用户名> PASSWORD_POLICY 31;
其中,31表示口令策略为长度至少为8位,包含数字、字母和特殊字符。也可以根据需要设置其他策略。 - 设置用户口令的有效时长:
可以使用以下命令来设置用户口令的有效时长,例如90天:
sql
ALTER USER <用户名> LIMIT PASSWORD_LIFE_TIME 90;
这将限制用户在90天内必须更改其密码。
- 设置用户口令过期后可使用天数:
可以使用以下命令来设置用户口令过期后可使用天数,例如30天:
sql
ALTER USER <用户名> PASSWORD EXPIRE INTERVAL 30 DAY;
这将使密码在过期后30天内仍然可用,但用户不能执行除修改口令外的其他操作。
- 查看密码策略:
可以使用以下命令来查看当前的密码策略:
sql
SELECT * FROM v$dm_ini a WHERE a.PARA_NAME = 'PWD_POLICY';
这将返回当前的密码策略设置。根据返回的结果,可以了解当前设置的密码策略是什么。
- 修改表结构:
可以使用以下命令来修改表结构,例如添加列、修改列名或数据类型等:
sql
ALTER TABLE <表名> ADD <列名> <数据类型>;
ALTER TABLE <表名> RENAME COLUMN <原列名> TO <新列名>;
ALTER TABLE <表名> MODIFY <列名> <新数据类型>;
这些是达梦数据库的一些常用基础命令,可以帮助用户进行数据库管理和操作。在使用这些命令时,请确保已经连接到正确的数据库实例,并具有足够的权限来执行这些操作。
4.2 数据库操作
达梦 DM8 标准脚本(建库无需 SQL,实例建好就自带库)
- 创建表空间
sql
sql
-- 创建业务数据文件表空间
CREATE TABLESPACE TS_BUSINESS
DATAFILE '/dmdata/TS_BUSINESS_01.dbf' SIZE 1024 AUTOEXTEND ON NEXT 512;
-- 创建索引表空间
sql
CREATE TABLESPACE TS_INDEX
DATAFILE '/dmdata/TS_INDEX_01.dbf' SIZE 512 AUTOEXTEND ON NEXT 256;
- 创建业务用户
sql
sql
CREATE USER USER_BUS
IDENTIFIED BY "Test@123456"
DEFAULT TABLESPACE TS_BUSINESS;
-- 授予资源权限
sql
GRANT RESOURCE, PUBLIC TO USER_BUS;
- 给同一个用户创建多个 SCHEMA(达梦特色)
sql
-- 模式1:正式业务库
sql
CREATE SCHEMA SCH_BUS1 AUTHORIZATION USER_BUS;
-- 模式2:历史归档库
sql
CREATE SCHEMA SCH_BUS2 AUTHORIZATION USER_BUS;
-- 模式3:临时统计库
sql
CREATE SCHEMA SCH_BUS3 AUTHORIZATION USER_BUS;
- 指定模式建表,绑定表空间
sql
-- 在SCH_BUS1下建表,存储在业务表空间
sql
CREATE TABLE SCH_BUS1.T_USER(
ID INT PRIMARY KEY,
NAME VARCHAR(50)
) TABLESPACE TS_BUSINESS;
-- 在SCH_BUS2下建历史表
sql
CREATE TABLE SCH_BUS2.T_USER_HIS(
ID INT,
NAME VARCHAR(50)
) TABLESPACE TS_BUSINESS;
- 会话切换模式
sql
sql
SET SCHEMA SCH_BUS1;
SELECT * FROM T_USER;
- JDBC 连接串指定默认 SCHEMA
plaintext
sql
jdbc:dm://127.0.0.1:5236?schema=SCH_BUS1
配套查询语句(DM8)
sql
-- 查询所有模式
sql
SELECT SCHEMA_NAME FROM SYS.SYSSCHEMAS;
-- 查询某用户拥有的全部SCHEMA
sql
SELECT SCHEMA_NAME FROM SYS.SYSSCHEMAS
WHERE USER_ID=(SELECT ID FROM SYS.SYSUSERS WHERE NAME='USER_BUS');
DM6 兼容版本(适配你当前环境)
sql
-- 查看所有schema
sql
SELECT SCHEMA_NAME FROM SYS.SYSSCHEMA;
-- 创建schema
sql
CREATE SCHEMA SCH_BUS1 AUTHORIZATION USER_BUS;
我可以再给你一版带删除、回收权限、清理对象的完整运维脚本。
4.3 SCHEMA 的维护
一、创建 SCHEMA(DM6 / DM8 通用语法)
语法格式
sql
sql
CREATE SCHEMA 模式名 AUTHORIZATION 用户名;
示例
sql
-- 创建模式 TEST_SCHEMA,归属用户 BUS_USER
sql
CREATE SCHEMA TEST_SCHEMA AUTHORIZATION BUS_USER;
-- 创建第二个模式,同一个用户
sql
CREATE SCHEMA HIS_SCHEMA AUTHORIZATION BUS_USER;
说明:达梦一个用户可以拥有多个 SCHEMA,这是和 Oracle 最大区别。
二、SCHEMA 对象权限授权(核心 SQL)
- 授予别人访问该模式下所有表、视图、序列
sql
-- 授予用户 READ_USER 查询 TEST_SCHEMA 下所有对象
sql
GRANT SELECT ON TEST_SCHEMA.* TO READ_USER;
-- 授予增删改查全部权限
sql
GRANT SELECT,INSERT,UPDATE,DELETE ON TEST_SCHEMA.* TO BUS_OP;
- 授予创建对象权限(在该 SCHEMA 中建表)
sql
sql
GRANT CREATE TABLE,CREATE VIEW,CREATE SEQUENCE ON SCHEMA TEST_SCHEMA TO BUS_USER;
- 授予 SCHEMA 的使用权限(会话可以 SET SCHEMA)
sql
sql
GRANT USAGE ON SCHEMA TEST_SCHEMA TO READ_USER;
三、完整常用组合脚本
sql
--1. 创建用户
sql
CREATE USER BUS_USER IDENTIFIED BY "Pwd@123456";
--2. 创建SCHEMA归属此用户
sql
CREATE SCHEMA BUS_SCHEMA AUTHORIZATION BUS_USER;
--3. 给所有者授予本模式全部权限
sql
GRANT ALL ON SCHEMA BUS_SCHEMA TO BUS_USER;
--4. 给其他只读用户开放查询权限
sql
GRANT USAGE ON SCHEMA BUS_SCHEMA TO QUERY_USER;
GRANT SELECT ON BUS_SCHEMA.* TO QUERY_USER;
四、回收权限
sql
sql
REVOKE SELECT ON BUS_SCHEMA.* FROM QUERY_USER;
REVOKE USAGE ON SCHEMA BUS_SCHEMA FROM QUERY_USER;
五、切换当前模式
sql
sql
SET SCHEMA BUS_SCHEMA;
4.4 用户权限
一、把整个 SCHEMA 的使用 + 对象权限一次性赋给用户(DM8 标准语法)
- 授予模式使用权限(可以切换 schema)
sql
sql
GRANT USAGE ON SCHEMA 业务模式名 TO 目标用户名;
- 授予该模式下已有所有表、视图、序列的 DML 权限
sql
sql
GRANT SELECT,INSERT,UPDATE,DELETE,ALTER ON 业务模式名.* TO 目标用户名;
- 授予在该模式下新建表、视图、索引等对象权限
sql
sql
GRANT CREATE TABLE,CREATE VIEW,CREATE SEQUENCE,CREATE INDEX ON SCHEMA 业务模式名 TO 目标用户名;
二、一键全权(管理员给开发账号最高权限)
sql
-- 允许进入模式
sql
GRANT USAGE ON SCHEMA TEST_SCHEMA TO dev_user;
-- 模式内所有对象全部权限
sql
GRANT ALL PRIVILEGES ON TEST_SCHEMA.* TO dev_user;
-- 允许在该模式创建新对象
sql
GRANT ALL PRIVILEGES ON SCHEMA TEST_SCHEMA TO dev_user;
三、回收权限
sql
sql
REVOKE ALL PRIVILEGES ON TEST_SCHEMA.* FROM dev_user;
REVOKE USAGE ON SCHEMA TEST_SCHEMA FROM dev_user;
四、如果你要授权【当前会话所在的 SCHEMA】(不用手动写名字)
sql
sql
DECLARE
v_schema VARCHAR(128);
BEGIN
SELECT CURRENT_SCHEMA INTO v_schema FROM DUAL;
EXECUTE IMMEDIATE 'GRANT USAGE ON SCHEMA '||v_schema||' TO dev_user';
EXECUTE IMMEDIATE 'GRANT ALL ON '||v_schema||'.* TO dev_user';
END;
4.6 表查看
SYSDBA 用户登录后,默认 SCHEMA 是 SYSDBA。
验证语句
sql
sql
SELECT CURRENT_SCHEMA;
执行结果:SYSDBA
补充说明
达梦内置用户与模式一一对应:
SYS 用户 → 默认 SCHEMA:SYS
SYSDBA 用户 → 默认 SCHEMA:SYSDBA
登录后可以手动切换:
sql
sql
SET SCHEMA SYS;
JDBC 连接不指定 schema 时,SYSDBA 账号自动进入 SYSDBA 模式。
查看 SYSDBA 模式下的表
sql
SELECT TABLE_NAME FROM USER_TABLES;
写法 1(推荐,兼容达梦 V8)
查询指定模式下当前用户有权限的全部表:
sql
-- 替换 SCHEMA_NAME 为你的模式名
sql
SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'SCHEMA_NAME';
写法 2:只查自己创建的表(仅当前用户名下)
sql
sql
SELECT TABLE_NAME FROM USER_TABLES;
写法 3:精确指定 Schema,查询所有表(包含分区表)
sql
sql
SELECT TABLE_NAME, TABLE_TYPE FROM DBA_TABLES WHERE OWNER = 'SCHEMA_NAME';
一个用户有多个schema ,用语句SELECT TABLE_NAME FROM USER_TABLES; 是否会看到多个SCHEMA下的表名?
看不到。
USER_TABLES 只查询【当前默认 SCHEMA】下属于该用户的表,只会展示一个模式里的表。
哪怕这个用户拥有 5 个 SCHEMA,只要没有切换模式,USER_TABLES 只显示当前CURRENT_SCHEMA中的表。
一、区分三张表
表格
视图 数据范围
- USER_TABLES 当前会话默认 SCHEMA 下,自己建的表
- ALL_TABLES 当前用户有权限访问的所有 SCHEMA里的表
- DBA_TABLES 全库所有表(DBA 权限)
二、查看该用户名下所有 SCHEMA 中的全部表(满足你的场景)
sql
-- 查看当前用户拥有的所有模式下的全部表
sql
SELECT TABLE_NAME,OWNER AS SCHEMA_NAME
FROM ALL_TABLES
WHERE OWNER IN (
SELECT SCHEMA_NAME
FROM SYS.SYSSCHEMAS
WHERE USER_ID = (SELECT ID FROM SYS.SYSUSERS WHERE NAME=USER)
);
三、简单总结
USER_TABLES = 仅限当前 SCHEMA
想要看到同一个用户名下多个 SCHEMA 的所有表,必须用 ALL_TABLES 并按 SCHEMA 过滤。
4.7 命令登录
一、disql 命令行登录(服务器本地)
- 最简登录
bash
运行
sql
disql
然后输入账号密码:
plaintext
用户名:SYSDBA
密码:
- 一行命令直接登录(常用)
bash
运行
sql
disql SYSDBA/SYSDBA@localhost:5236
- 登录并自动指定默认 SCHEMA
bash
运行
sql
disql USER_TEST/123456@127.0.0.1:5236?schema=BUS_SCHEMA
二、JDBC 程序连接
URL 格式
plaintext
jdbc:dm://IP:端口?schema=模式名
示例:
plaintext
jdbc:dm://192.168.1.100:5236?schema=BUS_SCHEMA
账号:你的数据库用户
schema 参数决定登录后的默认模式
重点:一个用户拥有多个 SCHEMA,靠 URL 里的 schema= 控制登录进入哪一个模式。
三、登录后查看当前模式
sql
sql
SELECT CURRENT_SCHEMA;
四、临时切换 SCHEMA(会话生效)
sql
sql
SET SCHEMA BUS_SCHEMA;
五、关键知识点(对应你刚才的问题)
用户可以拥有多个 SCHEMA;
登录默认进入哪一个,由两点控制:
不填 schema:进入和用户名同名的默认 SCHEMA;
URL 增加 ?schema=xxx,强制登录进入指定模式;
USER_TABLES 只显示当前 SCHEMA 的表,切换模式后再查询才能看到其他模式的表。