SYSTEM、ROLL、MAIN 和 TEMP 表空间查看语句:
SELECT * FROM V$TABLESPACE;
HMAIN 表空间查看语句:
SELECT * FROM V$HUGE_TABLESPACE;
其它系统表
select * from v$dm_ini;
select * from v$instance;
select * from v$parameter;
select * from v$rlogfile;
select * from v$database;
select * from v$dm_arch_ini;
select * from Dba_users;
select * from user_users;
select * from Dba_roles;
select * from Dba_tables;
select * from Dba_constraints;
select * from Dba_views;
select * from Dba_indexes;
select * from Dba_role_privs;
select * from Dba_sys_privs;
select * from Dba_tablespaces;
select * from Dba_data_files;
select * from DBA_FREE_SPACE;
select * from DBA_TEMP_FILES;
MAIN 表空间在初始化库的时候,就会自动创建一个大小为 128M 的数据文件
MAIN.DBF。在创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表
空间为用户默认的表空间。
如果用户在创建表的时候,
指定了存储表空间 A,并且和当前用户的默认表空间 B 不一致时,表存储在用户指定的表空
间 A 中,并且默认情况下,在这张表上面建立的索引也将存储在 A 中,但是用户的默认表空
间是不变的,仍为 B。
在安装过程中,DM 数据库会预设数据库管理员账号
SYSDBA、数据库安全员账号 SYSSSO 和数据库审计员账号 SYSAUDITOR,其缺省口令都与
用户名一致。“四权分立”的安全机制,将系统管理员分数据库管理员、数据库对象操作员、
数据库安全员和数据库审计员四类,在“三权分立”的基础上,新增数据库对象操作员账户
SYSDBO,其缺省口令为 SYSDBO。用户需要在安装过程中或者安装完毕后立即修改缺省口令,
避免因口令泄漏造成的安全问题。
1.用户创建
如创建用户 TEST_USER 时可指定该用户使用的最大磁盘空间为 50M。
CREATE USER TEST_USER IDENTIFIED BY TEST_PASSWORD DISKSPACE LIMIT 50;
对用户的空间限制也可进行更改,如修改用户 TEST_USER 的磁盘空间限制为无限制。
ALTER USER TEST_USER DISKSPACE UNLIMITED;
2.如创建表 TEST 时可指定该表对象可使用的最大磁盘空间为 500M。
CREATE TABLE TEST (SNO INT, MYINFO VARCHAR) DISKSPACE LIMIT 500;
对表对象空间的限制也可进行更改,如修改表 TEST 的磁盘空间限制为 50M。
ALTER TABLE TEST MODIFY DISKSPACE LIMIT 50;
3.创建表时,在 STORAGE 子句中,可对表指定存储的表空间。如果没有指定,则该表将
创建在用户的默认表空间中。
4.对于普通表和索引,DM8 提供了以下的存储参数:
1. 初始簇数目 INITIAL:指建立表时分配的簇个数,必须为整数,最小值为 1,最大
值为 256,缺省为 1;
2. 下次分配簇数目 NEXT:指当表空间不够时,从数据文件中分配的簇个数,必须为
整数,最小值为 1,最大值为 256,缺省为 1;
3. 最小保留簇数目 MINEXTENTS:当删除表中的记录后,如果表使用的簇数目小于这
个值,就不再释放表空间,必须为整数,最小值为 1,最大值为 256,缺省为 1;
4. 填充比例 FILLFACTOR:指定插入数据时数据页的充满程度,取值范围从 0 到
100。默认值为 0,等价于 100,表示全满填充,未充满的空间可供页内的数据更
新时使用。插入数据时填充比例的值越低,可由新数据使用的空间就越多;更新数
据时填充比例的值越大,更新导致出现的页分裂的几率越大;
5. 表空间名:在指定的表空间上建表或索引,表空间必须已存在,默认为用户缺省的
表空间。
如表 PERSON 建立在表空间 TS_PERSON 中,初始簇大小为 5,最小保留簇数目为 5,
下次分配簇数目为 2,填充比例为 85。
CREATE TABLE PERSON.PERSON
( PERSONID INT IDENTITY(1,1) CLUSTER PRIMARY KEY,
SEX CHAR(1) NOT NULL,
NAME VARCHAR(50) NOT NULL,
EMAIL VARCHAR(50),
PHONE VARCHAR(25))
STORAGE
( INITIAL 5, MINEXTENTS 5,
NEXT 2, ON TS_PERSON, FILLFACTOR 85);
也可以在分区表上指定某个分区的存储参数,如下面的建表语句指定了 PAR2 分区存储
在 TS_PAR2 表空间上。
CREATE TABLE PARTITION_TABLE
(C1 INT,
C2 INT)
PARTITION BY RANGE(C1)
(PARTITION PAR1 VALUES LESS THAN(5),
PARTITION PAR2 VALUES LESS THAN(100) STORAGE (ON TS_PAR2));
6.HUGE 表是建立在自己特有的 HTS 表空间上的。建立 HUGE 表如果不使用默认的表空间,
则必须要先创建一个 HUGE TABLESPACE,默认 HTS 表空间为 HMAIN。
如建立一个名称 HTS_NAME 的 HTS 表空间,表空间路径为为 e:\HTSSPACE。示例如下:
CREATE HUGE TABLESPACE HTS_NAME PATH 'e:\HTSSPACE';
对于 HUGE 表可以指定如下参数:
1. 区大小(一个区的数据行数)。 区大小可以通过设置表的存储属性来指定,区的大
小必须是 2 的多少次方,如果不是则向上对齐。取值范围:1024 行~1024*1024
行。默认值为 65536 行。
2. 是否记录区统计信息,即在修改时是否做数据的统计。
3. 所属的表空间。创建 HUGE 表,需要通过存储属性指定其所在的表空间,不指定则
存储于默认表空间 HMAIN 中。HUGE 表指定的表空间只能是 HTS 表空间。
4. 文件大小。创建 HUGE 表时还可以指定单个文件的大小,通过表的存储属性来指定,
取值范围为 16M~1024*1024M。不指定则默认为 64M。文件大小必须是 2 的多少
次方,如果不是则向上对齐。
5. 日志属性。1)LOG NONE:不做镜像;2)LOG LAST:做部分镜像;3)LOG ALL:
全部做镜像。
如下面的建表语句:STUDENT 表的区大小为 65536 行,文件大小为 64M,指定所在的
表空间为 HTS_NAME,做完整镜像,S_COMMENT 列指定的区大小为不做统计信息,其它列(默
认)都做统计信息。
CREATE HUGE TABLE STUDENT
(
S_NO INT,
S_CLASS VARCHAR,
S_COMMENT VARCHAR(79) STORAGE(STAT NONE)
)STORAGE(SECTION(65536) , FILESIZE(64), ON HTS_NAME) LOG ALL;
7.创建表空间
创建表空间时需要指定表空间名和其拥有的数据文件列表。比如创建名为 bookshop 的
表空间,并指定该空间上拥有 2 个数据文件,每个数据文件的大小为 128M。
CREATE TABLESPACE bookshop DATAFILE 'd:\bookshop1.dbf' SIZE 128,
'd:\bookshop2.dbf' SIZE 128;
理论上最多允许有 65535 个表空间,但用户允许创建的表空间 ID 取值范围为
0~32767,超过 32767 的只允许系统使用,ID 由系统自动分配,ID 不能重复使用,即使
删除掉已有表空间,也无法重复使用已用 ID 号,也就是说只要创建 32768 次表空间后,用
户将无法再创建表空间。
8.可以指定数据文件是否可以扩展,每次扩展的空间大小以及数据文件可扩展到的最大空
间大小,子句的语法为:
AUTOEXTEND OFF|ON [NEXT <文件扩展大小>] [MAXSIZE <文件限制大小>]
OFF 表示文件不可扩展,ON 表示文件可扩展。文件扩展大小表示当需要扩展文件时,
文件一次增大的空间大小,取值范围是 0—2048,单位是 M。文件限制大小表示文件可扩展
125
第 14 章 数据库布局和存储管理
的最大空间大小,为 0 或者 UNLIMITED 表示无限制,单位是 M。缺省情况下,文件扩展大
小是 1M,文件的最大大小是无限制的。
创建表空间时可指定文件的扩展属性。如创建表空间时指定数据文件的扩展属性为可自
动扩展,每次扩展大小为 10M,最大可扩展到 100M:
CREATE TABLESPACE bookshop DATAFILE 'd:\book.dbf' SIZE 32 AUTOEXTEND ON NEXT
10 MAXSIZE 100;
9.查看数据库大小写是否敏感
--获得大小写敏感信息
SQL命令:SELECT SF_GET_CASE_SENSITIVE_FLAG();
--1:敏感 0:不敏感
创建用户
1、创建用户:
使用SYSDBA用户:create user XXXXX(用户名)
2、创建用户密码:
使用SYSSSO用户:alter user XXXXX identified by “XXXXXX123”
3、给用户赋予DBA权限:
使用SYSDBA用户:grant dba to XXXXX
4、给用户赋予执行权限:
使用SYSSSO用户:grant create table,select table,update table,insert table to XXXXX
5、执行:grant resource,public to XXXXX
6、修改数据库用户密码7天过期:
使用SYSSSO用户:alter user “用户名” limit password_life_time unlimited
7、修改用户口令过期时间限制:
alter user “用户名” limit failed_login_attemps unlimited;
8、修改用户失败登录次数限制:
alter user “用户名” limit password_life_time unlimited;
9、修改用户口令锁定限制:
alter user “用户名” limit password_lock_time unlimited;
用户管理
查询有哪些用户
select username from dba_users;
1、sys --- 达梦数据库的内置管理用户,不能登录数据库,数据库使用的大部分的数据字典和动态性能视图,sys
2、Sysdba ---数据库的管理员
3、Sysauditor --- 审计用户
4、Syssso---安全用户
5、sysdbo --数据操作员 (安全版有,四权分立)
10.
a.表空间
dm的表空间模仿oracle的表空间
同一表空间下可以存在同名对象
SQL> alter tablespace "%s" offline; //表空间脱机
SQL> alter tablespace "%s" online;
b. 模式切换
SQL> SELECT SYS_CONTEXT ('userenv', 'current_schema') FROM DUAL; //当前模式
SQL> SET SCHEMA "SYSDBA"; //大小写敏感
SQL> ALTER SESSION SET CURRENT_SCHEMA = "SYSDBA"; //非常安全的一个方式
c. 数据大小
SQL> SELECT SUM(bytes) from dba_data_files; //数据库占用空间(kb为单位)
SQL> SELECT * from v$datafile; //数据库读写占用
SQL> SELECT TABLE_USED_SPACE('SYSDBA', 'D') * 1024; //表大小,大小写敏感
d. 归档模式
SQL> select arch_mode from v$database; //归档是否打开
SQL> select * from V$DM_ARCH_INI; //归档信息
e. 实例名
SQL> select distinct value from v$parameter;
其他
SQL> select * from SYSTABLECOMMENTS; //查询系统视图
SQL> select count(*) from dba_tables;
SQL> select * from user_tables;
SQL> select * from dba_tablespaces;
SQL> select * from user_tablespaces;
SQL> SELECT * from all_objects;
SQL> select * from dba_objects;
SQL> select * from user_objects;
SQL> select * from dba_users;
f. 特殊字符
“:默认处理方式是在”前加一个”作为标识
命令参数大小写:应用\”\”,否则它自动小写变大写。需要转义的字符加\
g. text数据类型
查找的时候不能用’=’号,要用link
表空间管理
表空间介绍
select TABLESPACE_NAME,STATUS from dba_tablespaces;
System表空间: 数据字典和全局的系统数据。
ROLL表空间:存放了数据库运行过程中产生的回滚记录。
TEMP表空间:临时表空间。
MAIN表空间:数据库默认的表空间,创建数据对象时,如果不指定存储位置,默认存放到该表空间。
HMAIN表空间:huge 表空间。
查所有表空间信息:
Select name from v$tablespace union select name from v$huge_tablespace
增加表空间
create tablespace tab1 datafile '/dm7/data/DAMENG/tab1_01.dbf' size 32;
案例2 创建一个表空间,初始大小50M,最大100M.
create tablespace tab2 datafile '/dm7/data/DAMENG/tab2_01.dbf' size 50 autoextend on maxsize 100;
案例3 创建一个表空间,初始50M,每次扩展1M,最大100M.
create tablespace tab3 datafile '/dm7/data/DAMENG/tab3_01.dbf' size 50 autoextend on next 1 maxsize 100;
案例4 创建一个表空间,初始50M,表空间由2个数据文件组成,分别存储到不同的磁盘上,每次扩展1m,每个数据文件最大100M.
create tablespace tab4 datafile '/dm7/data/DAMENG/tab4_01.dbf' size 50 autoextend on next 1 maxsize 100 , '/dm7/data/DAMENG/tab4_02.dbf' size 50 autoextend on next 1 maxsize 100;
维护表空间
表空间不足,如何去维护表空间:
1、创建大表空间,数据导出,导入。
2、Resize 数据文件大小。
3、增加数据文件
alert tablespace tabs2 add datafile '/dm7/data/DAMENG/tab2_02.dbf' size 50 autoextend on maxsize 100;
更换存储位置
达梦表空间的状态:
0 ---online
1 ----- offline
注意:SYSTEM,ROLL, TEMP 不能offline;
案例1:更换tbs1的存储位置
- 表空间offline
alter tablespace tbs1 offline; - 修改存储位置
alter tablespace tbs1 rename datafile '/dm7/data/DAMENG/tbs1_01.dbf' to '/dm7/data/tbs1_01.dbf'; - 表空间online
alter tablespace tbs1 online;
删除表空间
drop tablespace tbs1;
如果表空间有数据库不允许直接删除!