用户用来连接数据库并进行相关操作。除了用户的概念,还有权限和角色两个概念。权限指执行特定类型的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
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
用时间: 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
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
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
文章
阅读量
获赞