注册
达梦数据库学习02:达梦数据库数据库对象管理
技术分享/ 文章详情 /

达梦数据库学习02:达梦数据库数据库对象管理

Hi70KG 2023/07/24 1853 1 0

达梦用户说明

用户用来连接数据库并进行相关操作。除了用户的概念,还有权限和角色两个概念。权限指执行特定类型的SQL命令或访问其他模式对象的权利,它用于限制用户可执行的操作。将具有相同权限的用户组织在一起,这一组具有相同权限的用户称为角色。角色是权限的集合,一个权限可赋予不同的角色。数据库管理类的预定义角色有3个:DBA、PUBLIC、RESOURCE
查看用户相关的信息在达梦数据库中可以通过以下视图查看用户相关的信息。
DBA_ROLES:显示系统中所有的角色
DBA_TAB_PRIVS:显示系统中所有用户的数据库对象权限信息DBA_SYS_PRIVS:显示系统中所有传授给用户和角色的权限
DBA_USERS:显示系统中所有的用户
DBA_ROLE_PRIVS:显示系统中所有的角色权限
查看所有角色的SQL语句如下

SQL> select * from dba_roles; ROLE PASSWORD_REQUIRED AUTHENTICATION_TYPE ---------------- ----------------- ------------------- DBA NULL NULL DB_AUDIT_ADMIN NULL NULL DB_AUDIT_OPER NULL NULL DB_AUDIT_PUBLIC NULL NULL DB_AUDIT_SOI NULL NULL DB_AUDIT_SVI NULL NULL DB_AUDIT_VTI NULL NULL DB_POLICY_ADMIN NULL NULL DB_POLICY_OPER NULL NULL DB_POLICY_PUBLIC NULL NULL DB_POLICY_SOI NULL NULL DB_POLICY_SVI NULL NULL DB_POLICY_VTI NULL NULL PUBLIC NULL NULL RESOURCE NULL NULL SOI NULL NULL SVI NULL NULL SYS_ADMIN NULL NULL VTI NULL NULL

查看所有用户的信息的SQL语句如下

SQL> select USERNAME,USER_ID,DEFAULT_TABLESPACE from dba_users; USERNAME USER_ID DEFAULT_TABLESPACE ---------- ----------- ------------------ SYS 50331648 SYSTEM SYSDBA 50331649 MAIN SYSAUDITOR 50331650 SYSTEM SYSSSO 50331651 SYSTEM

用户操作

1.创建用户

SQL> create user test identified by "dameng123";

对用户授权

grant public,resource to test;

查看用户信息

SQL> select username,account_status,default_tablespace from dba_users; USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE ---------- -------------- ------------------ SYS OPEN SYSTEM TEST OPEN MAIN SYSDBA OPEN MAIN SYSAUDITOR OPEN SYSTEM SYSSSO OPEN SYSTEM

查看系统中所有用户对应的角色的SQL语句如下

SQL> select * from dba_role_privs; GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE ---------------- ---------------- ------------ ------------ SYSDBA DBA Y NULL DBA VTI Y NULL SYSSSO DB_POLICY_SOI Y NULL SYSSSO DB_POLICY_PUBLIC Y NULL SYSSSO DB_POLICY_OPER Y NULL SYSSSO DB_POLICY_ADMIN Y NULL SYSAUDITOR DB_AUDIT_SOI Y NULL SYSAUDITOR DB_AUDIT_PUBLIC Y NULL SYSAUDITOR DB_AUDIT_OPER Y NULL SYSAUDITOR DB_AUDIT_ADMIN Y NULL SYSDBA SOI Y NULL SYSDBA SYS_ADMIN N NULL SYSDBA PUBLIC Y NULL SYSDBA RESOURCE Y NULL PUBLIC SVI N NULL DB_AUDIT_ADMIN DB_AUDIT_VTI Y NULL DB_AUDIT_PUBLIC DB_AUDIT_SVI N NULL DB_POLICY_PUBLIC DB_POLICY_SVI N NULL DB_POLICY_ADMIN DB_POLICY_VTI Y NULL

连接test用户

用时间: 3.542(毫秒). 执行号:707. SQL> conn test/dameng123; 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 12.045(ms) SQL> select user; USER() ------ TEST

创建表空间

SQL> conn SYSDBA/SYSDBA; 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 3.593(ms) SQL> create tablespace test datafile '/data/dmdata/DAMENG/test.dbf' size 128 autoextend on maxsize 65536 cache=normal;

修改用户默认表空间

SQL> alter user test default tablespace test default index tablespace test; 操作已执行 已用时间: 4.569(毫秒). 执行号:901. SQL> select USERNAME,DEFAULT_TABLESPACE,DEFAULT_INDEX_TABLESPACE from dba_users; USERNAME DEFAULT_TABLESPACE DEFAULT_INDEX_TABLESPACE ---------- ------------------ ------------------------ SYS SYSTEM SYSTEM TEST TEST TEST SYSDBA MAIN SYSTEM SYSAUDITOR SYSTEM SYSTEM SYSSSO SYSTEM SYSTEM

删除用户

SQL> drop user test cascade; 操作已执行 已用时间: 52.986(毫秒). 执行号:904. SQL> select USERNAME,DEFAULT_TABLESPACE,DEFAULT_INDEX_TABLESPACE from dba_users; USERNAME DEFAULT_TABLESPACE DEFAULT_INDEX_TABLESPACE ---------- ------------------ ------------------------ SYS SYSTEM SYSTEM SYSDBA MAIN SYSTEM SYSAUDITOR SYSTEM SYSTEM SYSSSO SYSTEM SYSTEM

表空间管理

表空间说明

达梦数据库分为物理结构和逻辑结构,表空间是一个逻辑概念,它是由数据文件组成

创建表空间

查看表空间和数据文件的信息SQL如下:

SQL> select a.name,b.id,b.path from v$tablespace a,v$datafile b where a.id = b.group_id; NAME ID PATH ------ ----------- ------------------------------ SYSTEM 0 /data/dmdata/DAMENG/SYSTEM.DBF ROLL 0 /data/dmdata/DAMENG/ROLL.DBF TEST 0 /data/dmdata/DAMENG/test.dbf TEMP 0 /data/dmdata/DAMENG/TEMP.DBF MAIN 0 /data/dmdata/DAMENG/MAIN.DBF

创建表空间

SQL> create tablespace tbs_test datafile '/data/dmdata/DAMENG/tbs_test01.dbf' size 32,'/data/dmdata/DAMENG/tbs_test02.dbf' size 32; SQL> select a.name,b.id,b.path from v$tablespace a,v$datafile b where a.id = b.group_id; NAME ID PATH -------- ----------- ---------------------------------- SYSTEM 0 /data/dmdata/DAMENG/SYSTEM.DBF ROLL 0 /data/dmdata/DAMENG/ROLL.DBF TEST 0 /data/dmdata/DAMENG/test.dbf TEMP 0 /data/dmdata/DAMENG/TEMP.DBF MAIN 0 /data/dmdata/DAMENG/MAIN.DBF TBS_TEST 0 /data/dmdata/DAMENG/tbs_test01.dbf TBS_TEST 1 /data/dmdata/DAMENG/tbs_test02.dbf

扩展表空间

(1)扩展现有的数据文件大小

SQL> alter tablespace tbs_test add datafile '/data/dmdata/DAMENG/tbs_test03.dbf' size 32; 操作已执行 已用时间: 8.535(毫秒). 执行号:910. SQL> select a.name,b.id,b.path from v$tablespace a,v$datafile b where a.id = b.group_id; NAME ID PATH -------- ----------- ---------------------------------- SYSTEM 0 /data/dmdata/DAMENG/SYSTEM.DBF ROLL 0 /data/dmdata/DAMENG/ROLL.DBF TEST 0 /data/dmdata/DAMENG/test.dbf TEMP 0 /data/dmdata/DAMENG/TEMP.DBF MAIN 0 /data/dmdata/DAMENG/MAIN.DBF TBS_TEST 0 /data/dmdata/DAMENG/tbs_test01.dbf TBS_TEST 1 /data/dmdata/DAMENG/tbs_test02.dbf TBS_TEST 2 /data/dmdata/DAMENG/tbs_test03.dbf

(2)增加新的数据文件

SQL> alter tablespace tbs_test resize datafile '/data/dmdata/tbs_test01.dbf' to 64; SQL> select tablespace_name,file_id,bytes/1024/1024 as "MB",file_name from dba_data_files where tablespace_name='TBS_TEST'; TABLESPACE_NAME FILE_ID MB --------------- ----------- -------------------- FILE_NAME ---------------------------------- TBS_TEST 2 32 /data/dmdata/DAMENG/tbs_test03.dbf TBS_TEST 0 64 /data/dmdata/DAMENG/tbs_test01.dbf TBS_TEST 1 32 /data/dmdata/DAMENG/tbs_test02.dbf

表管理

普通表

通常所说的表,它以“B+树”的形式存储在物理磁盘上

常规创建普通表

SQL> create table tb_test (id int);

查询方式创建普通表

SQL> create table tb_test01 as select * from sysobjects;

查看表定义

SQL> sp_tabledef('SYSDBA','TB_TEST'); COLUMN_VALUE ---------------------------------------------------------------------- CREATE TABLE "SYSDBA"."TB_TEST" ( "ID" INT) STORAGE(ON "MAIN", CLUSTERBTR) ; 已用时间: 1.589(毫秒). 执行号:1107. SQL> sp_tabledef('SYSDBA','TB_TEST01'); COLUMN_VALUE ---------------------------------------------------------------------- CREATE TABLE "SYSDBA"."TB_TEST01" ( "NAME" VARCHAR(128) NOT NULL, "ID" INT NOT NULL, "SCHID" INT NOT NULL, "TYPE$" VARCHAR(10) NOT NULL, "SUBTYPE$" VARCHAR(10), "PID" INT, "VERSION" INT NOT NULL, "CRTDATE" DATETIME(6), "INFO1" INT, "INFO2" INT, "INFO3" BIGINT, "INFO4" BIGINT, "INFO5" VARBINARY(128), "INFO6" VARBINARY(2048), "INFO7" BIGINT, "INFO8" VARBINARY(1024), "VALID" CHAR(1)) STORAGE(ON "MAIN", CLUSTERBTR) ;

堆表

对聚集索引进行了调整,采用的是“扁平B树”

常规创建堆表

在使用SQL语句建表时直接更改STORAGE选项来修改表的类型。默认为CLUSTERBTR,表示普通“B+树”表,如果建堆表,需要指定NOBRANCH选项或BRANCH选项
创建的tb_test02表有3个并发分支、5个非并发分支
SQL语句如下

SQL> create table tb_test02 (id int) storage(branch(3,5)); SQL> sp_tabledef('SYSDBA','TB_TEST02'); COLUMN_VALUE ----------------------------------------------------- CREATE TABLE "SYSDBA"."TB_TEST02" ( "ID" INT) STORAGE(ON "MAIN", BRANCH(3, 5)) ;

索引管理

在SQL中使用合适的索引可以提高查询的效率

创建索引

创建普通索引创建索引时可以指定索引的存储表空间,如果未指定,那么索引存放在用户的默认表空间下

SQL> create table tb_test03 as select * from sysobjects; SQL> create index idx_id on tb_test03(id)storage(on main); SQL> select ID from sysobjects where name='IDX_ID'; ID ----------- 33555467 SQL> select indexdef(33555467,1); INDEXDEF(33555467,1) ----------------------------------------------------- CREATE INDEX "IDX_ID" ON "SYSDBA"."TB_TEST03"("ID" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;

达梦社区技术https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服