表空间以及用户管理

本文详细介绍了DM数据库的表空间管理,包括逻辑存储架构、表空间的组成部分以及创建、扩展和修改表空间的常用语法。此外,还涵盖了用户管理,如用户创建、口令策略和资源限制,强调了创建和修改用户的相关语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、表空间管理

1.1 DM 逻辑存储架构

DM 数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。在 DM 数据库
内 部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对
象都 存放在这些表空间中。同时,表空间被进一步划分为段、簇和页(也称块)。通过这
种细分,可以使得 DM 数据库能够更加高效地控制磁盘空间的利用率。
在这里插入图片描述

在 DM8 中存储的层次结构如下:

  1. 数据库由一个或多个表空间组成;
  2. 每个表空间由一个或多个数据文件组成;
  3. 每个数据文件由一个或多个簇组成;
  4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;
  5. 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
  6. 页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元

1.2、表空间

在创建 DM 数据库时,会自动创建 5 个表空间:SYSTEM 表空间、ROLL 表空间、MAIN
表空间、TEMP 表空间和 HMAIN 表空间。

  1. SYSTEM 表空间存放了有关 DM 数据库的字典信息,用户不能在 SYSTEM 表空间
    创建表和索引。
  2. ROLL 表空间完全由 DM 数据库自动维护,用户无需干预。该表空间用来存放事务
    运行过程中执行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视
    图。
  3. MAIN 表空间在初始化库的时候,就会自动创建一个大小为 128M 的数据文件
    MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表空间为
    用户默认的表空间。
  4. TEMP 表空间完全由 DM 数据库自动维护。当用户的 SQL 语句需要磁盘空间来完
    成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完
    成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP 表空间。
  5. HMAIN 表空间属于 HTS 表空间,完全由 DM 数据库自动维护,用户无需干涉。
    当用户在创建 HUGE 表时,未指定 HTS 表空间的情况下,充当默认 HTS 表空间。

1.3、表空间使用常用语法

1.3.1、语法格式

CREATE TABLESPACE <表空间名> <数据文件子句>[<数据页缓冲池子句>][<存储加密子句>]
<数据文件子句> ::= DATAFILE <文件说明项>{,<文件说明项>}
<文件说明项> ::= <文件路径> [ MIRROR <文件路径>] SIZE <文件大小>[<自动扩展子句>]
<自动扩展子句> ::= AUTOEXTEND <ON [<每次扩展大小子句>][<最大大小子句> |OFF>
<每次扩展大小子句> ::= NEXT <扩展大小>
<最大大小子句> ::= MAXSIZE <文件最大大小>
<数据页缓冲池子句> ::= CACHE = <缓冲池名>
<存储加密子句> ::= ENCRYPT WITH <加密算法> [[BY] <加密密码>]

1.3.2、注意事项

在创建表空间时,通常只需要指定表空间名称,数据文件路径、数据文件大小、其他属
性。有几点需要注意:

  1. 单个表空间的数据文件数量不能超过 256 个
  2. 达梦数据库最多支持 65535 个表空间
  3. 数据文件的单位是 MB,在创建的时候只需要写数字。不需要额外添加单位。数据文
    件大小取决于页大小。
数据库页大小每个字符类型字段实际最大长度(字节)每行记录最大字段外其他字段总长度(字节)表空间单个数据文件 最小/最大(MB)
4KB1938204716/8388608
8KB3878409532/16777216
16KB8000819564/33554432
32KB818816176128/67108864

1.3.3、创建表空间

SQL> create tablespace test datafile '+DMDATA/data/dsc/test.dbf' size 512; 
操作已执行 
已用时间: 00:00:03.122. 执行号:932. 
SQL> select file_name, tablespace_name, status, autoextensible from dba_data_files 
where tablespace_name='TEST'; 

行号     FILE_NAME               TABLESPACE_NAME STATUS    AUTOEXTENSIBLE 
---------- ------------------------- --------------- --------- --------------
1          +DMDATA/data/dsc/test.dbf TEST          AVAILABLE YES 

已用时间: 4.082(毫秒). 执行号:933. 

--创建表空间指定两个数据文件 
SQL> create tablespace test1 datafile '+DMDATA/data/dsc/test1_01.dbf' size 
256,'+DMDATA/data/dsc/test1_02.dbf' size 256; 
操作已执行 
已用时间: 00:00:07.732. 执行号:934. 
SQL>
SQL> select file_name, tablespace_name, status, autoextensible from dba_data_files 
where tablespace_name='TEST1'; 

行号     FILE_NAME                   TABLESPACE_NAME STATUS    AUTOEXTENSIBLE 
---------- ----------------------------- --------------- --------- --------------
1          +DMDATA/data/dsc/test1_01.dbf TEST1          AVAILABLE YES 
2          +DMDATA/data/dsc/test1_02.dbf TEST1          AVAILABLE YES 

已用时间: 2.341(毫秒). 执行号:935. 

1.3.4、扩展表空间

扩展表空间有两种方法:(1)、增加数据文件(2)、resize 原数据文件大小
例:扩展表空间 TEST

--resize 数据文件 
SQL> alter tablespace test resize datafile '+DMDATA/data/dsc/test.dbf' to 500; 
操作已执行 
已用时间: 00:00:02.357. 执行号:936.
 
--增加数据文件 
SQL> alter tablespace test add datafile '+DMDATA/data/dsc/test_02.dbf' size 256; 
操作已执行 
已用时间: 00:00:03.276. 执行号:937. 

--查询表空间情况 
SQL> select file_name, tablespace_name, BYTES/1024/1024 "Size (MB)", status, 
autoextensible from dba_data_files where tablespace_name='TEST'; 

行 号        FILE_NAME                               TABLESPACE_NAME Size (MB) 
STATUS   AUTOEXTENSIBLE 
---------- ---------------------------- --------------- -------------------- 
--------- --------------
1                 +DMDATA/data/dsc/test.dbf        TEST              500 
AVAILABLE YES 
2                 +DMDATA/data/dsc/test_02.dbf TEST                  256 
AVAILABLE YES 

已用时间: 5.102(毫秒). 执行号:939.
SQL>

1.3.5、修改数据文件扩展属性

表空间默认是自动扩展的,用户可以修改表空间的相应属性。
(1)是否开启自动扩展属性 autoextend
(2)每次扩展的大小,取值范围 0~2048 单位 MB
(3)数据文件最大大小,maxsize <文件限制大小> 单位 MB

--关闭自动扩展 
SQL> alter tablespace test datafile '+DMDATA/data/dsc/test.dbf' autoextend off; 
操作已执行 
已用时间: 122.623(毫秒). 执行号:940. 
SQL> 

--开启自动扩展并设置最大限制 
SQL> alter tablespace test datafile '+DMDATA/data/dsc/test_02.dbf' autoextend on 
next 10 maxsize 10240; 
操作已执行 
已用时间: 186.332(毫秒). 执行号:941. 
SQL> 

--查询数据文件自动扩展信息 
SQL> select file_name, tablespace_name, BYTES/1024/1024 "Size (MB)", status, 
autoextensible,  INCREMENT_BY,  MAXBYTES/1024/1024  "MaxSize(MB)"  from dba_data_files where tablespace_name='TEST'; 

行 号      FILE_NAME                            TABLESPACE_NAME Size (MB) 
STATUS  AUTOEXTENSIBLE INCREMENT_BY MaxSize(MB) 
---------- ---------------------------- --------------- -------------------- 
--------- -------------- ------------ -----------
1                +DMDATA/data/dsc/test.dbf    TEST                   500 
AVAILABLE NO           0            0 
2                +DMDATA/data/dsc/test_02.dbf TEST                   256 
AVAILABLE YES         10            10240 

已用时间: 2.341(毫秒). 执行号:943.

1.3.6、修改表空间名以及移动数据文件

--在线修改表空间名称 
SQL> alter tablespace test rename to test3; 
操作已执行 
已用时间: 232.025(毫秒). 执行号:944. 

--查询表空间信息 
SQL> select file_name, tablespace_name, BYTES/1024/1024 "Size (MB)", status, 
autoextensible,  INCREMENT_BY,  MAXBYTES/1024/1024  "MaxSize(MB)"  from 
dba_data_files where tablespace_name='TEST3'; 

行 号       FILE_NAME                           TABLESPACE_NAME Size (MB) 
STATUS   AUTOEXTENSIBLE INCREMENT_BY MaxSize(MB) 
---------- ---------------------------- --------------- -------------------- --------- -------------- ------------ -----------
1                 +DMDATA/data/dsc/test.dbf  TEST3                   500 
AVAILABLE NO           0             0 
2                +DMDATA/data/dsc/test_02.dbf TEST3                256 
AVAILABLE YES          10           10240 

已用时间: 4.232(毫秒). 执行号:945. 
SQL> 

--RENAME 数据文件位置,自动帮你移动不需要人为手动 

SQL> alter tablespace test3 offline; 
操作已执行 
已用时间: 173.767(毫秒). 执行号:946. 
SQL> 
SQL> alter tablespace test3 rename datafile '+DMDATA/data/dsc/test.dbf' to 
'+DMDATA/data/dsc/test3_01.dbf'; 
操作已执行 
已用时间: 00:00:05.531. 执行号:947. 
SQL> 
SQL> alter tablespace test3 rename datafile '+DMDATA/data/dsc/test_02.dbf' to 
'+DMDATA/data/dsc/test3_02.dbf'; 
操作已执行
已用时间: 00:00:02.654. 执行号:948. 
SQL> 
SQL> alter tablespace test3 online; 
操作已执行 
已用时间: 157.354(毫秒). 执行号:949. 
SQL> 
SQL> select file_name, tablespace_name, BYTES/1024/1024 "Size (MB)", status, 
autoextensible,   INCREMENT_BY,   MAXBYTES/1024/1024   "MaxSize(MB)"   from 
dba_data_files where tablespace_name='TEST3'; 

行 号       FILE_NAME                            TABLESPACE_NAME Size (MB) 
STATUS   AUTOEXTENSIBLE INCREMENT_BY MaxSize(MB) 
---------- ----------------------------- --------------- -------------------- 
--------- -------------- ------------ ----------- 
1                  +DMDATA/data/dsc/test3_01.dbf TEST3                500 
AVAILABLE NO            0            0 
2                  +DMDATA/data/dsc/test3_02.dbf TEST3                256 
AVAILABLE YES           10           10240 

已用时间: 3.654(毫秒). 执行号:950. 

1.3.7、数据文件被删除如何恢复

1.3.7.1、准备测试环境
--创建测试表空间 
SQL> create tablespace TY datafile '/dm8/data/DAMENG/TY_01.dbf' size 256; 
操作已执行 
已用时间: 23.546(毫秒). 执行号:76303. 

--创建测试用户以及数据 

SQL> create user TY identified by TY123456 default tablespace TY default index 
tablespace TY; 
操作已执行 
已用时间: 2.365(毫秒). 执行号:76304. 
SQL> 
SQL> grant "PUBLIC","RESOURCE","SOI","VTI" to TY;
操作已执行 
已用时间: 5.284(毫秒). 执行号:76305.
 
SQL> conn TY/TY123456:5238 

服务器[LOCALHOST:5238]:处于普通打开状态 
登录使用时间 : 1.142(ms) 
SQL> 
SQL> create table test(id number); 
操作已执行 
已用时间: 3.214(毫秒). 执行号:76700. 
SQL> 
SQL> insert into test values(1); 
影响行数 1 

已用时间: 1.128(毫秒). 执行号:76701. 
SQL> insert into test values(2); 
影响行数 1 

已用时间: 0.412(毫秒). 执行号:76702. 
SQL> insert into test values(3); 
影响行数 1 

已用时间: 0.792(毫秒). 执行号:76703. 
SQL> insert into test values(4); 
影响行数 1 

已用时间: 0.722(毫秒). 执行号:76704. 
SQL> commit; 
操作已执行 
已用时间: 1.612(毫秒). 执行号:76705. 
SQL> 
SQL> select * from test; 

行号     ID 
---------- -- 
1          1 
2          2 
3          3
4          4 

已用时间: 1.232(毫秒). 执行号:76706. 
SQL> 
1.3.7.2、删除表空间数据文件
[dmdba@dmdw01 data]$ cd DAMENG/ 
[dmdba@dmdw01 DAMENG]$ ls 
arch   bak   ctl_bak   DAMENG01.log   DAMENG02.log   dmarch.ini   dm.ctl   dm.ini 
dminit20220621104445.log   dm_service.prikey   HMAIN   TY_01.dbf   MAIN.DBF 
rep_conflict.log ROLL.DBF   sqllog.ini SYSTEM.DBF TEMP.DBF   trace 
[dmdba@dmdw01 DAMENG]$ rm -fr TY_01.dbf 
1.3.7.3、查询数据以及表空间情况
SQL> conn SYSDBA/SYSDBA:5238 

服务器[LOCALHOST:5238]:处于普通打开状态 
登录使用时间 : 2.487(ms) 
SQL> 
SQL> select * from TY.test; 

行号     ID 
---------- -- 
1          1 
2          2 
3          3 
4          4 
已用时间: 0.354(毫秒). 执行号:76709. 

SQL> select file_name, tablespace_name, status from dba_data_files; 

行号    FILE_NAME                   TABLESPACE_NAME STATUS 
---------- --------------------------- --------------- --------- 
1         /dm8/data/DAMENG/SYSTEM.DBF SYSTEM          AVAILABLE 
2         /dm8/data/DAMENG/TY_01.dbf TY             AVAILABLE 
3         /dm8/data/DAMENG/MAIN.DBF   MAIN            AVAILABLE
4         /dm8/data/DAMENG/TEMP.DBF   TEMP            AVAILABLE 
5         /dm8/data/DAMENG/ROLL.DBF   ROLL            AVAILABLE 

已用时间: 14.233(毫秒). 执行号:76800. 
SQL> 
SQL> SELECT GROUP_ID,PATH,CLIENT_PATH FROM v$datafile; 

行号    GROUP_ID    PATH                       CLIENT_PATH 
---------- ----------- --------------------------- ----------- 
1         0          /dm8/data/DAMENG/SYSTEM.DBF SYSTEM.DBF 
2         1          /dm8/data/DAMENG/ROLL.DBF   ROLL.DBF 
3         3          /dm8/data/DAMENG/TEMP.DBF   TEMP.DBF 
4         4          /dm8/data/DAMENG/MAIN.DBF   MAIN.DBF 
5         6          /dm8/data/DAMENG/TY_01.dbf TY_01.dbf 

已用时间: 1.235(毫秒). 执行号:76801. 
1.3.7.4、模拟插入数据
--模拟插入数据 
SQL> insert into test values(5); 
影响行数 1 

已用时间: 0.780(毫秒). 执行号:76802. 
SQL> commit; 
操作已执行 
已用时间: 0.675(毫秒). 执行号:76803. 
SQL> 
SQL> select * from TY.test;
 
行号     ID 
---------- --
1          1 
2          2 
3          3 
4          4
5          5 

已用时间: 0.433(毫秒). 执行号:76804. 
1.3.7.5、进行数据文件检查
--执行检查 
SQL> call SP_FILE_SYS_CHECK(); 
DMSQL 过程已成功完成 
已用时间: 0.564(毫秒). 执行号:76805. 
SQL> 

--查询数据 
SQL> select * from TY.test; 
select * from TY.test; 
[-3433]:表空间处于脱机状态. 
已用时间: 0.459(毫秒). 执行号:0. 

SQL> SELECT GROUP_ID,PATH,CLIENT_PATH FROM v$datafile; 

行号     GROUP_ID    PATH                        CLIENT_PATH
---------- ----------- --------------------------- ----------- 
1          0           /dm8/data/DAMENG/SYSTEM.DBF SYSTEM.DBF 
2          1           /dm8/data/DAMENG/ROLL.DBF   ROLL.DBF 
3          3           /dm8/data/DAMENG/TEMP.DBF   TEMP.DBF 
4          4           /dm8/data/DAMENG/MAIN.DBF   MAIN.DBF 
5          6           /dm8/data/DAMENG/TY_01.dbf TY_01.dbf 

已用时间: 0.434(毫秒). 执行号:76806. 
SQL> select tablespace_name, file_name, status from dba_data_files; 

行号     TABLESPACE_NAME FILE_NAME                   STATUS 
---------- --------------- --------------------------- ---------
1         SYSTEM         /dm8/data/DAMENG/SYSTEM.DBF AVAILABLE 
2         TY            /dm8/data/DAMENG/TY_01.dbf INVALID 
3         MAIN           /dm8/data/DAMENG/MAIN.DBF   AVAILABLE
4         TEMP           /dm8/data/DAMENG/TEMP.DBF   AVAILABLE 
5         ROLL           /dm8/data/DAMENG/ROLL.DBF   AVAILABLE 

已用时间: 1.210(毫秒). 执行号:76807. 

上面看得到如果未做数据文件检查的话,被删除的数据文件上的表和对象可以查询并且
插入数据,在做了数据文件校验之后将无法正常查询。
数据文件的状态 STATUS=INVALID

1.3.7.6、先执行恢复前的准备工作
SQL> call sp_tablespace_prepare_recover('TY'); 
DMSQL 过程已成功完成 
已用时间: 0.320(毫秒). 执行号:76808.
1.3.7.7、查看数据库进程号,找到未释放的文件句柄号和被删除的数据文件
[dmdba@dmdw01 DAMENG]$ ps -ef |grep dmserver 
dmdba      2270      1 0 09:17 ?         00:00:56 /dm8/bin/dmserver path=/dm8/d 
sc/config/dsc2_config/dm.ini dcr_ini=/dm8/dsc/config/dmdcr.ini -noconsole 
dmdba      6305   2287  0 10:97 pts/0    00:00:14 dmserver path=/dm8/data/DAME 
NG/dm.ini 
dmdba      8099   6624  0 11:24 pts/2    00:00:00 grep --color=auto dmserver 
[dmdba@dmdw01 DAMENG]$ 
[dmdba@dmdw01 DAMENG]$ cd /proc/6305/fd 
[dmdba@dmdw01 fd]$ ls -ltr 
总用量 0
lrwx------ 1 dmdba dinstall 64 123 11:24 2 -> /dev/pts/0 
lrwx------ 1 dmdba dinstall 64 123 11:25 9 -> /dm8/data/DAMENG/DAMENG02.log 
lrwx------ 1 dmdba dinstall 64 123 11:25 8 -> /dm8/data/DAMENG/DAMENG01.log 
lrwx------ 1 dmdba dinstall 64 123 11:25 7 -> /dm8/data/DAMENG/TEMP.DBF 
lrwx------ 1 dmdba dinstall 64 123 11:25 6 -> /dm8/data/DAMENG/SYSTEM.DBF 
lrwx------ 1 dmdba dinstall 64 123 11:25 5 -> socket:[65217] 
lrwx------ 1 dmdba dinstall 64 123 11:25 46 -> /dm8/data/DAMENG/TY_01.dbf 
(deleted)
lrwx------   1    dmdba   dinstall   64    121   11:25   45    ->
/dm8/data/DAMENG/arch/ARCHIVE_LOCAL1_0x33956438_EP0_2022-06-21_10-51-27.log 
lrwx------ 1 dmdba dinstall 64 123 11:25 44 -> socket:[77886] 
l-wx------ 1 dmdba dinstall 64 123 11:25 43 -> pipe:[65242] 
lr-x------ 1 dmdba dinstall 64 123 11:25 42 -> pipe:[65242] 
l-wx------ 1 dmdba dinstall 64 123 11:25 41 -> pipe:[65241] 
lr-x------ 1 dmdba dinstall 64 123 11:25 40 -> pipe:[65241] 
lrwx------ 1 dmdba dinstall 64 123 11:25 4 -> socket:[65216] 
l-wx------ 1 dmdba dinstall 64 123 11:25 39 -> pipe:[65240] 
lr-x------ 1 dmdba dinstall 64 123 11:25 38 -> pipe:[65240] 
l-wx------ 1 dmdba dinstall 64 123 11:25 37 -> pipe:[65239] 
lr-x------ 1 dmdba dinstall 64 123 11:25 36 -> pipe:[65239] 
l-wx------ 1 dmdba dinstall 64 123 11:25 35 -> pipe:[65238] 
lr-x------ 1 dmdba dinstall 64 123 11:25 34 -> pipe:[65238] 
l-wx------ 1 dmdba dinstall 64 123 11:25 33 -> pipe:[65237] 
lr-x------ 1 dmdba dinstall 64 123 11:25 32 -> pipe:[65237] 
l-wx------ 1 dmdba dinstall 64 123 11:25 31 -> pipe:[65236] 
lr-x------ 1 dmdba dinstall 64 123 11:25 30 -> pipe:[65236] 
lr-x------ 1 dmdba dinstall 64 123 11:25 3 -> /dev/urandom 
l-wx------ 1 dmdba dinstall 64 123 11:25 29 -> pipe:[65235] 
lr-x------ 1 dmdba dinstall 64 123 11:25 28 -> pipe:[65235] 
l-wx------ 1 dmdba dinstall 64 123 11:25 27 -> pipe:[65234] 
lr-x------ 1 dmdba dinstall 64 123 11:25 26 -> pipe:[65234] 
l-wx------ 1 dmdba dinstall 64 123 11:25 25 -> pipe:[65233] 
lr-x------ 1 dmdba dinstall 64 123 11:25 24 -> pipe:[65233] 
l-wx------ 1 dmdba dinstall 64 123 11:25 23 -> pipe:[65232] 
lr-x------ 1 dmdba dinstall 64 123 11:25 22 -> pipe:[65232] 
l-wx------ 1 dmdba dinstall 64 123 11:25 21 -> pipe:[65231] 
lr-x------ 1 dmdba dinstall 64 123 11:25 20 -> pipe:[65231] 
l-wx------ 1 dmdba dinstall 64 123 11:25 19 -> pipe:[65230] 
lr-x------ 1 dmdba dinstall 64 123 11:25 18 -> pipe:[65230] 
l-wx------ 1 dmdba dinstall 64 123 11:25 17 -> pipe:[65229] 
lr-x------ 1 dmdba dinstall 64 123 11:25 16 -> pipe:[65229] 
l-wx------ 1 dmdba dinstall 64 123 11:25 15 -> pipe:[65228] 
lr-x------ 1 dmdba dinstall 64 123 11:25 14 -> pipe:[65228] 
l-wx------ 1 dmdba dinstall 64 123 11:25 13 -> pipe:[65227] 
lr-x------ 1 dmdba dinstall 64 123 11:25 12 -> pipe:[65227] 
lrwx------ 1 dmdba dinstall 64 123 11:25 11 -> /dm8/data/DAMENG/MAIN.DBF 
lrwx------ 1 dmdba dinstall 64 123 11:25 10 -> /dm8/data/DAMENG/ROLL.DBF 
lrwx------ 1 dmdba dinstall 64 123 11:25 1 -> /dev/pts/0
lrwx------ 1 dmdba dinstall 64 123 11:25 0 -> /dev/pts/0
1.3.7.8、将数据文件复制回去
[dmdba@dmdw01 fd]$ cp 46 /dm8/data/DAMENG/TY_01.dbf 
1.3.7.9、然后执行数据文件恢复过程并检查
--然后执行数据文件恢复过程 
SQL> call sp_tablespace_recover('TY'); 
DMSQL 过程已成功完成 
已用时间: 0.320(毫秒). 执行号:76809. 

SQL> call SP_FILE_SYS_CHECK(); 
DMSQL 过程已成功完成 
已用时间: 0.433(毫秒). 执行号:76810. 

--查询数据和表空间进行数据验证 
SQL> select tablespace_name, file_name, status from dba_data_files; 

行号     TABLESPACE_NAME FILE_NAME                   STATUS 
---------- --------------- --------------------------- ---------
1          SYSTEM          /dm8/data/DAMENG/SYSTEM.DBF AVAILABLE 
2          TY             /dm8/data/DAMENG/TY_01.dbf AVAILABLE 
3          MAIN            /dm8/data/DAMENG/MAIN.DBF   AVAILABLE 
4          TEMP            /dm8/data/DAMENG/TEMP.DBF   AVAILABLE 
5          ROLL            /dm8/data/DAMENG/ROLL.DBF   AVAILABLE 

已用时间: 3.875(毫秒). 执行号:76811. 
SQL> 
SQL> SELECT GROUP_ID,PATH,CLIENT_PATH FROM v$datafile; 

行号     GROUP_ID    PATH                        CLIENT_PATH 
---------- ----------- --------------------------- -----------
1          0           /dm8/data/DAMENG/SYSTEM.DBF SYSTEM.DBF 
2          1           /dm8/data/DAMENG/ROLL.DBF   ROLL.DBF 
3          3           /dm8/data/DAMENG/TEMP.DBF   TEMP.DBF 
4          4           /dm8/data/DAMENG/MAIN.DBF   MAIN.DBF
5          6           /dm8/data/DAMENG/TY_01.dbf TY_01.dbf 

已用时间: 0.776(毫秒). 执行号:76812. 
SQL> select * from TY.test; 

行号     ID 
---------- -- 
1          1 
2          2 
3          3 
4          4 
5          5 

已用时间: 0.778(毫秒). 执行号:76813. 

1.3.8、修改表空间数据缓冲区

可以使用的数据缓冲区有 NORMAL 和 KEEP

SQL> select id, name, cache, status$ from v$tablespace; 

行号     ID         NAME    CACHE  STATUS$ 
---------- ----------- -------- ------ ----------- 
1          0          SYSTEM          0 
2          1          ROLL            0 
3          3          TEMP            0 
4          4          MAIN            0 
5          5          TY             0 
6          7          DTS_TEST NORMAL 0 
7          8          TEST3    NORMAL 0 

7 rows got 

已用时间: 3.438(毫秒). 执行号:969. 
SQL> 

--修改表空间数据缓冲区 
SQL> alter tablespace TEST3 cache="KEEP";操作已执行 
已用时间: 120.132(毫秒). 执行号:970. 
SQL> 
SQL> select id, name, cache, status$ from v$tablespace; 

行号     ID          NAME     CACHE  STATUS$ 
---------- ----------- -------- ------ -----------
1          0           SYSTEM          0 
2          1           ROLL            0
3          3           TEMP            0 
4          4           MAIN            0 
5          5           TY             0 
6          7           DTS_TEST NORMAL 0 
7          8           TEST3    KEEP   0 

7 rows got 

已用时间: 0.553(毫秒). 执行号:971. 

1.3.9、删除表空间

SQL> select file_name, tablespace_name from dba_data_files; 

行号     FILE_NAME                     TABLESPACE_NAME 
---------- ----------------------------- --------------- 
1          +DMDATA/data/dsc/system.dbf   SYSTEM 
2          +DMDATA/data/dsc/test1_02.dbf TEST1 
3          +DMDATA/data/dsc/test1_01.dbf TEST1 
4          +DMDATA/data/dsc/test3_02.dbf TEST3 
5          +DMDATA/data/dsc/test3_01.dbf TEST3 
6          +DMDATA/data/dsc/DTS_TEST.dbf DTS_TEST 
7          +DMDATA/data/dsc/TY.dbf      TY 
8          +DMDATA/data/dsc/main.dbf     MAIN 
9          +DMDATA/data/dsc/TEMP2.DBF    TEMP 
10         +DMDATA/data/dsc/roll.dbf     ROLL

10 rows got 

已用时间: 43.243(毫秒). 执行号:100. 

--删除表空间 
SQL> drop tablespace test1; 
操作已执行 
已用时间: 113.654(毫秒). 执行号:101. 

SQL> select file_name, tablespace_name from dba_data_files; 

行号     FILE_NAME                     TABLESPACE_NAME 
---------- ----------------------------- ---------------
1          +DMDATA/data/dsc/system.dbf   SYSTEM 
2          +DMDATA/data/dsc/test3_02.dbf TEST3 
3          +DMDATA/data/dsc/test3_01.dbf TEST3 
4          +DMDATA/data/dsc/DTS_TEST.dbf DTS_TEST 
5          +DMDATA/data/dsc/TY.dbf      TY 
6          +DMDATA/data/dsc/main.dbf     MAIN 
7          +DMDATA/data/dsc/TEMP2.DBF    TEMP 
8          +DMDATA/data/dsc/roll.dbf     ROLL 

8 rows got 

已用时间: 5.322(毫秒). 执行号:102. 
SQL> exit 

--查询数据文件是否删除 
[dmdba@dmdw01 dm8]$ dmasmtool dcr_ini=/dm8/dsc/config/dmdcr.ini 
DMASMTOOL V8 
ASM>ls 
+ 
disk groups total [4]...... 
NO.1     name: DMLOG 
NO.2     name: DMDATA 
NO.3     name: VOTE 
NO.4     name: DCR 
Used time: 8.130(ms). 
ASM>cd DMDATA
+DMDATA 
Used time: 5.933(ms). 
ASM>ls 
dir : data 
dir : DSC0 
dir : DSC1 
dir : DSC2 
total count 4. 
Used time: 6.533(ms). 
ASM>cd data 
+DMDATA/data 
Used time: 4.434(ms). 
ASM>ls 
dir : dsc 
total count 1. 
Used time: 4.232(ms). 
ASM>cd dsc 
+DMDATA/data/dsc 
Used time: 4.022(ms). 
ASM>ls 
dir : bak 
file : dm.ctl 
dir : ctl_bak 
dir : HMAIN 
file : TEMP0.DBF 
file : TEMP1.DBF 
file : rep_conflict.log 
file : TEMP2.DBF 
file : system.dbf 
file : roll.dbf 
file : main.dbf 
file : TY.dbf 
file : dm_service.prikey 
file : DTS_TEST.dbf 
file : test3_01.dbf 
file : test3_02.dbf 
total count 16. 
Used time: 17.351(ms). 
ASM>

二、用户管理

DM 数据库采用“三权分立”或“四权分立”的安全机制,将系统中所有的权限按照类型进行划分,为每个管理员分配相应的权限,管理员之间的权限相互制约又相互协助,从而使整个系统具有较高的安全性和较强的灵活性。可在创建 DM 数据库时通过建库参数 PRIV_FLAG 设置使用“三权分立”或“四权分立”安全机制,0 表示“三权分立”,1 表示“四权分立”。此参数仅在 DM 安全版本下提供, 即仅 DM 安全版本提供“四权分立”安全机制,缺省采用“三权分立”安全机制。

2.1、用户创建介绍

创建用户的操作一般只能由系统预设用户 SYSDBA、SYSSSO 和 SYSAUDITOR 完成,
如果普通用户需要创建用户,必须具有 CREATE USER 的数据库权限。
创建用户的命令是 CREATE USER,创建用户所涉及的内容包括为用户指定用户名、认
证模式、口令、口令策略、空间限制、只读属性以及资源限制。其中用户名是代表用户账
号的标识符,长度为 1~128 个字符。用户名可以用双引号括起来,也可以不用,但如果用
户名以数字开头,必须用双引号括起来

2.2、用户创建常用语法

2.2.1、语法格式

CREATE USER <用户名>IDENTIFIED<身份验证模式> [PASSWORD_POLICY <口令策略>][<锁定 
子 
句>][<存储加密密钥>][<空间限制子句>][<只读标志>][<资源限制子句>][<允许 IP 子 
句>][<禁止 IP 
子句>][<允许时间子句>][<禁止时间子句>][< TABLESPACE 子句>]; 
<身份验证模式> ::= <数据库身份验证模式>|<外部身份验证模式> 
<数据库身份验证模式> ::= BY <口令>[<散列选项>] 
<散列选项> ::= HASH WITH [<密码引擎名>.]<散列算法> [<加盐选项>]
<散列算法> ::= MD5 | SHA1 | SHA224 | SHA256 | SHA384 | SHA512 
<加盐选项> ::= [NO] SALT 
<外部身份验证模式> ::= EXTERNALLY | EXTERNALLY AS <用户 DN> 
<口令策略> ::= 口令策略项的任意组合 
<锁定子句> ::= ACCOUNT LOCK | ACCOUNT UNLOCK 
<存储加密密钥> ::= ENCRYPT BY <口令> 
<空间限制子句> ::= DISKSPACE LIMIT <空间大小>| DISKSPACE UNLIMITED 
<只读标志> ::= READ ONLY | NOT READ ONLY 
<资源限制子句> ::= DROP PROFILE | 
PROFILE <profile 名> | 
[LIMIT <资源设置>] 
<资源设置> ::= <资源设置项>{,<资源设置项>} | 
<资源设置项>{ <资源设置项>} 
<资源设置项> ::= SESSION_PER_USER <参数设置>| 
CONNECT_IDLE_TIME <参数设置>| 
CONNECT_TIME <参数设置>| 
CPU_PER_CALL <参数设置>| 
CPU_PER_SESSION <参数设置>| 
MEM_SPACE <参数设置>| 
READ_PER_CALL <参数设置>| 
READ_PER_SESSION <参数设置>| 
FAILED_LOGIN_ATTEMPS <参数设置>| 
PASSWORD_LIFE_TIME <参数设置>| 
PASSWORD_REUSE_TIME <参数设置>| 
PASSWORD_REUSE_MAX <参数设置>| 
PASSWORD_LOCK_TIME <参数设置>| 
PASSWORD_GRACE_TIME <参数设置> 
<参数设置> ::=<参数值>| UNLIMITED| DEFAULT 
<允许 IP 子句> ::= ALLOW_IP <IP>{,<IP>} 
<禁止 IP 子句> ::= NOT_ALLOW_IP <IP>{,<IP>} 
<IP> ::= <具体 IP>|<网段> 
<允许时间子句> ::= ALLOW_DATETIME <时间项>{,<时间项>} 
<禁止时间子句> ::= NOT_ALLOW_DATETIME <时间项>{,<时间项>} 
<时间项> ::= <具体时间段> | <规则时间段> 
<具体时间段> ::= <具体日期><具体时间> TO <具体日期><具体时间> 
<规则时间段> ::= <规则时间标志><具体时间> TO <规则时间标志><具体时间> 
<规则时间标志> ::= MON | TUE | WED | THURS | FRI | SAT | SUN 
<TABLESPACE 子句> ::=DEFAULT TABLESPACE <表空间名>

2.2.2、口令策略

用户口令最长为 48 字节,创建用户语句中的 PASSWORD POLICY 子句用来指定该

户的口令策略,系统支持的口令策略有:
 0 无策略
 1 禁止与用户名相同
 2 口令长度不小于 9
 4 至少包含一个大写字母(
A-Z)
 8 至少包含一个数字(0-9)
 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置
口令策略为 2+4=6 即可。

--查询当前数据库口令策略,默认是 2 
SQL> SELECT * FROM V$PARAMETER WHERE NAME= 'PWD_POLICY'; 

行号     ID          NAME       TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION 
DEFAULT_VALUE ISDEFAULT 
---------- ----------- ---------- ---- ----- --------- ---------- ------------- 
---------- ------------- -----------
1          463         PWD_POLICY SYS  2     2         2          Flag of passw 
ord policy 2             1 
--修改口令策略 
例如,将 PWD_POLICY 置为 8,同时修改文件和内存参数,由于 PWD_POLICY 为动态 INI 
参数,这样设置后新的参数值可以立即生效。 

--调用过程进行修改,1 代表的是 both,2 代表 spfile 
SQL> SP_SET_PARA_VALUE(1, 'PWD_POLICY',8); 
DMSQL 过程已成功完成 
已用时间: 4.663(毫秒). 执行号:975. 

--修改完查询结果 
SQL> SELECT * FROM V$PARAMETER WHERE NAME= 'PWD_POLICY';

行号     ID         NAME        TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION 
DEFAULT_VALUE ISDEFAULT 
---------- ----------- ---------- ---- ----- --------- ---------- ------------- 
---------- ------------- ----------- 
1          463         PWD_POLICY SYS  8     8         8          Flag of passw 
ord policy 2             0 
已用时间: 5.226(毫秒). 执行号:976. 

2.2.3、资源限制

用户的资源限制管理有两种方式:
方式一,将用户关联到某个已存在的 PROFILE 对象上,之后用户的资源限制由关联
的 PROFILE 统一管理配置,且无法再使用方式二中的 LIMIT <资源设置>设置资源设置
项。
方式二,未关联 PROFILE 的用户使用 LIMIT <资源设置>设置资源设置项。 新建用
户默认使用方式二管理资源设置,在关联到 PROFILE 时,之前已设置的资源限制项会立
即失效。

资源设置项说明最大值最小值缺省值
SESSION_PER_USER在一个实例中,一个用户可以同时拥有的会话数量327681安全版本中默认值为 4096;其他版本中默认值为系统所能提供的最大值
CONNECT_TIME一个会话连接、访问和操 作数据库服务器的时间 上限(单位:1 分钟)1440(1 天)1无限制
CONNECT_IDLE_TIME会话最大空闲时间(单 位:1 分 钟)1440(1 天)1无限制
FAILED_LOGIN_ATTEMPS将引起一个账户被锁定的连续注 册失败的次数10013
CPU_PER_SESSION一个会话允许使用的CPU 时间 上限(单位:秒)31536000(365 天)1无限制
CPU_PER_CALL用户的一个请求能够使用的 CPU 时间上限(单位:秒)86400(1 天)1无限制
READ_PER_SESSION会话能够读取的总数据页数上限21474836461无限制
READ_PER_CALL每个请求能够读取的数据页数21474836461无限制
MEM_SPACE会话占有的私有内存空间上限 (单位:MB)21474836471无限制
PASSWORD_LIFE_TIME一个口令在其终止前可以使用的天数3651无限制
PASSWORD_REUSE_TIME一个口令在可以重新使用前必须经过的天数3651无限制
PASSWORD_REUSE_MAX一个口令在可以重新使用前必须改变的次数327681无限制
PASSWORD_LOCK_TIME如果超过 FAILED_LOGIN_ATTE MPS 设置 值,一个账户将被锁定的分钟数1440(1 天)11
PASSWORD_GRACE_TIME以天为单位的口令过期宽限时 间,过期口令超过该期限后,禁 止执行除修改口令以外的其他操作30110

2.2.4、创建用户

--创建用户失败的登录次数达到 3 次被锁定 5 分钟 
SQL> create user t1 identified by t12345678 limit failed_login_attemps 3, passw 
ord_lock_time 5; 
操作已执行 
已用时间: 132.451(毫秒). 执行号:979. 
SQL> 

--创建用户在 30 天内修改过 5 次后,才能重新使用过去口令 
SQL> create user t2 identified by t12345678 limit password_reuse_time 30, passw 
ord_reuse_max 5; 
操作已执行 
已用时间: 112.136(毫秒). 执行号:980. 

--创建允许的 IP 段和工作时间段可以访问的用户 
SQL> create user t3 identified by t12345678 allow_ip "192.168.10.*" allow_datet 
ime mon "8:30:00" to fri "17:30:00"; 
操作已执行 
已用时间: 75.151(毫秒). 执行号:981. 

--创建允许具体 IP 和具体时间可以访问的用户 
SQL> create user t4 identified by t12345678 allow_ip "192.168.10.100" allow_dat 
etime "2022-6-21" "8:30:00" to "2022-6-22" "17:30:00"; 
操作已执行 
已用时间: 70.991(毫秒). 执行号:982. 
SQL> 

2.2.5、修改用户

ALTER USER <用户名> [IDENTIFIED <身份验证模式>][PASSWORD_POLICY <口令策略>][<锁
定子 句>][<存储加密密钥>][<空间限制子句>][<只读标志>][<资源限制子句>][<允许 IP
子句>][<禁止 IP 子句>][<允许时间子句>][<禁止时间子句>][<TABLESPACE 子句>][<SCHE
MA 子句>];

例子:
–修改用户的资源属性,登录失败 5 次锁定时间 5 分钟,口令终止前可以使用 30 天,最大宽限时间 30 天,超过只能修改口令,不允许其他操作

SQL> alter user t1 identified by t123456789 limit failed_login_attemps 5, passw 
ord_lock_time 5, password_life_time 30, password_grace_time 30; 
操作已执行 
已用时间: 38.130(毫秒). 执行号:0. 
SQL> 

--修改用户的默认表空间 
SQL> select file_name, tablespace_name from dba_data_files; 

行号     FILE_NAME                     TABLESPACE_NAME 
---------- ----------------------------- --------------- 
1          +DMDATA/data/dsc/system.dbf   SYSTEM 
2          +DMDATA/data/dsc/test3_02.dbf TEST3 
3          +DMDATA/data/dsc/test3_01.dbf TEST3 
4          +DMDATA/data/dsc/DTS_TEST.dbf DTS_TEST 
5          +DMDATA/data/dsc/TY.dbf      TY 
6          +DMDATA/data/dsc/main.dbf     MAIN 
7          +DMDATA/data/dsc/TEMP0.DBF    TEMP 
8          +DMDATA/data/dsc/roll.dbf     ROLL 

8 rows got 

已用时间: 16.083(毫秒). 执行号:1. 
SQL> 
SQL> alter user t1 default tablespace TY default index tablespace TY; 
操作已执行 
已用时间: 11.345(毫秒). 执行号:2. 
SQL> 
SQL> select username, user_id, default_tablespace from dba_users where username 
in ('T1','T2','T3','T4'); 

行号     USERNAME USER_ID     DEFAULT_TABLESPACE 
---------- -------- ----------- ------------------
1          T3       50331753    MAIN 
2          T1       50331751    TY 
3          T4       50331754    MAIN 
4          T2       50331752    MAIN

已用时间: 39.811(毫秒). 执行号:4. 
SQL> 

2.2.6、删除用户

DROP USER [IF EXISTS] <用户名> [RESTRICT | CASCADE];
指定 IF EXISTS 关键字后,删除不存在的用户时不会报错,否则会报错。
如果在删除用户时未使用 CASCADE 选项(缺省使用 RESTRICT 选项),若该用户建立
了数据库对象,DM 将返回错误信息,而不删除此用户。
如果在删除用户时使用了 CASCADE 选项,除数据库中该用户及其创建的所有对象被删
除外,若其他用户创建的对象引用了该用户的对象,DM 还将自动删除相应的引用完整性约
束及依赖关系。

--删除用户 t1 
SQL> drop user t1 cascade; 
操作已执行 
已用时间: 503.633(毫秒). 执行号:5. 

社区地址:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值