达梦数据库 OWNER
达梦数据库 OWNER 权限和用途
在达梦数据库中,OWNER
是指对象的所有者。当创建一个新的表、视图或其他数据库对象时,默认情况下该对象的创建者即成为此对象的 OWNER
[^1]。
OBJECT_OWNER 的定义
对于每一个数据库对象而言,都有一个属性称为 OBJECT_OWNER
,用于记录谁拥有这个特定的对象。这有助于权限管理和审计跟踪等功能实现。
权限管理
作为某个对象的 OWNER
,意味着对该对象具有最高级别的控制权:
- 对自己拥有的对象可以执行删除、修改结构等操作而无需额外授权;
例如,在创建新用户之后为其分配相应角色或单独设置某些具体权利之前,通常会先让管理员账户(如 DBA)完成初始配置工作后再转移所有权给目标用户[^2]。
-- 将表 test_table 的所有权转让给用户 dimp_test
ALTER TABLE test_table OWNER TO dimp_test;
需要注意的是,虽然 OWNER
用户享有广泛的操作自由度,但在实际应用环境中应当遵循最小化原则来合理规划各个用户的职责范围以及他们所能触及的数据边界。
安全性和隔离机制
通过明确指定不同实体之间的所属关系,能够有效增强系统的安全性并促进多租户架构下的数据隔离效果。每个应用程序或者业务部门都可以独立维护自己的模式及其内部组件而不必担心相互干扰。
达梦数据库批量删除视图
要在达梦数据库中批量删除视图,你可以使用以下SQL语句:
select 'DROP VIEW OA.' || a.view_name ||';' from dba_views a where owner='OA';
这条SQL语句会查询OA模式下的所有视图并生成相应的删除语句。执行这条语句后,你会得到一系列的删除语句,每条语句对应一个视图。你可以将这些语句复制到SQL编辑器中执行,从而批量删除这些视图。
另外,如果你想要级联删除OA模式下的所有表,你可以使用以下SQL语句:
select 'DROP TABLE OA.' || a.table_name ||' cascade;' from dba_tables a where owner='OA';
这条SQL语句会查询OA模式下的所有表并生成相应的删除语句。执行这条语句后,你会得到一系列的删除语句,每条语句对应一个表。同样,你可以将这些语句复制到SQL编辑器中执行,从而批量删除这些表。
如果你还想要删除OA模式下的所有包,你可以使用以下SQL语句:
select 'DROP PACKAGE OA."' || name ||'";' from sysobjects where SYSOBJECTS."SUBTYPE$"='PKG' AND SCHID IN ( SELECT ID FROM sysobjects where type$='SCH' AND NAME='OA' );
这条SQL语句会查询OA模式下的所有包并生成相应的删除语句。执行这条语句后,你会得到一系列的删除语句,每条语句对应一个包。同样,你可以将这些语句复制到SQL编辑器中执行,从而批量删除这些包。123
引用[.reference_title]
- 1 2 3 达梦数据库-批量删除对象sql[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2
allinsert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
达梦数据库统计表大小
达梦数据库统计表大小可以通过查询系统表来获取。可以使用以下 SQL 语句查询某个表的大小信息:
SELECT t.table_name, t.num_rows, s.avg_row_len, s.data_length, s.index_length, s.data_free
FROM dm_all_tables t, dm_all_tablespaces ts, dm_all_segments s
WHERE t.tablespace_name = ts.tablespace_name
AND t.table_name = s.segment_name
AND t.owner = ts.tablespace_owner
AND t.table_name = 'your_table_name';
其中,your_table_name
需要替换为要查询的表名。执行该语句后,会返回该表的行数、平均行长度、数据长度、索引长度和空闲空间等信息。