据库的常用命令补充,包含表空间管理、数据文件设置、用户管理、权限分配等操作:
一、表空间管理
1 创建表空间
create tablespace "HOT" datafile '/dmdata/data/DAMENG/class_room/HOT.DBF' size 128 cache = normal;
2 修改表空间
alter tablespace "HOT" add datafile '/dmdata/data/DAMENG/class_room/HOT2.DBF' size 1024 cache = normal;
alter tablespace HOT drop DATAFILE '/dmdata/data/DAMENG/class_room/HOT2.DBF';
alter tablespace bookshop resize DATAFILE 'd:\book.dbf' TO 128;
alter tablespace "HOT" datafile '//dmdata/data/DAMENG/class_room/HOT2.DBF' autoextend ON next 100 MAXsize 2048;
3 删除表空间
-- 需确保表空间无对象且未被使用
drop tablespace "HOT";
4 查询表空间信息
-- 查看所有表空间
select * from DBA_tablespaceS;
-- 查看表空间数据文件信息
select * from DBA_DATA_FILES;
--查询表空间与数据文件对应关系
select ts.NAME, df.PATH from V$tablespace AS ts, V$DATAFILE AS df where ts.ID = df.GROUP_ID;
5 修改表空间名
可修改已存在的由用户创建的表空间的名称。比如可修改 bookshop 表空间名为books。
alter tablespace bookshop RENAME TO books;
6修改表空间状态
用户表空间有联机和脱机两种状态。系统(SYSTEM)表空间、回滚(ROLL)表空间、重做日志表空间(RLOG)和临时(TEMP)表空间不允许脱机。设置表空间状态为脱机状态时,如果该表空间有未提交的事务,则脱机失败报错。脱机后可对表空间的数据进行备份。
1 .修改bookshop表空间状态为脱机
alter tablespace bookshop OFFLINE;
2. 修改bookshop表空间状态为联机
alter tablespace bookshop ONLINE;
注意:DM MPP环境下,可能发现节点间的表空间不一致情况,例如:EP01为ONLINE状态,EP02为OFFLINE状态,这个时候,无论执行ONLINE还是OFFLINE都是报错。需要用户介入,才可以解决问题。用户LOCAL方式登录实例,并执行SP_SET_SESSION_LOCAL_TYPE(1),使得该会话可以执行DDL操作,再执行ONLINE或者OFFLINE即可。
7修改表空间数据缓冲区
用户表空间可以切换使用的数据缓冲区。系统(SYSTEM)表空间、回滚(ROLL)表空间、重做日志表空间(RLOG)和临时(TEMP)表空间不允许修改数据缓冲区。可以使用的数据缓冲区NORMAL和KEEP。表空间修改成功后,并不会立即生效,而是需要服务器重启。缓冲池名KEEP是达梦的保留关键字,使用时必须加双引号。
alter tablespace bookshop CACHE= "KEEP";
8 表空间文件失效检查
linux操作系统中,被进程打开的文件仍可以在OS系统中被删除,因此存在DM数据文件可能被误删的风险。如果数据文件被删除,DM系统能够及时检测出来,并立刻停止对其继续使用并通知用户。
在dm.ini中参数FIL_CHECK_INTERVAL的值指定DM系统检查数据文件是否仍存在的时间间隔。将其设为0表示不进行检查。
也可以通过系统过程SP_FILE_SYS_CHECK()来手动的进行检查。
系统一旦检测出某个表空间内的数据文件被删除,则与该表空间所有的操作都将会失败,并报错该表空间内有数据文件被删除。
cd /dmdata/data/DMTEST/
vim dm.ini
:/FIL_CHECK_INTERVAL
修改FIL_CHECK_INTERVAL 参数为设为0表示不进行检查。
9表空间失效文件恢复
linux系统中被删除的文件,只要其句柄没有被关闭,可以在/proc//fd中找到其对应的文件副本。其中指打开该文件的进程id。
利用该方法,结合OS命令,DM提供失效文件的恢复方案如下:
1、调用系统过程SP_tablespace_PREPARE_RECOVER(表空间名称)准备进行恢复;
2、如果使用过程中DM报错表空间数据文件被删除,通过操作系统的ps命令找到当前dmserver的PID:ps -ef|grep dmserver; 查出dmserver 进程的PID
3、使用操作系统ll命令查看被删除文件对应的副本:ll /proc/<PID>/fd,,会发现被删除的文件后有(deleted)字样;
4、使用操作系统的cp命令将文件复制到原位置:cp 源路径目的路径;
5、复制成功后,调用系统过程SP_tablespace_RECOVER(表空间名称)完成表空间失效文件的恢复。
注意,要保证数据文件正确修复,需要保证在SP_tablespace_PREPARE_RECOVER后进行数据文件的复制。
10、ROLL表空间--增大 undo_retention(回滚段的保留时长)
select * from v$parameter t where name like 'UNDO_RETENTION';
alter system set 'UNDO_RETENTION'= 300 both;
11、TEMP表空间
达梦 TEMP 表空间,数据库启动时会按照如下参数重建 TEMP 表空间。
1、查看表空间参数
select name, value, type from v$parameter t where name like 'TEMP%';
TEMP_SIZE:临时表空间初始大小
TEMP_PATH: 临时表空间路径
TEMP_SPACE_LIMIT:临时表空间的空间限制,0 表示不限制。
2、修改临时表空间的初始大小:
alter system set 'TEMP_SIZE'=100 spfile;
3、收缩 TEMP 表空间的方法:
1、重启数据库,TEMP 表空间数据文件会重建。
2、在线收缩临时表空间使用 SP_TRUNC_TS_FILE 函数(老版本,新版本该方法已经 去除,
可以直接适用 alter tablespace XX resize 命令缩小数据文件
HMAIN:HUGE 表的默认表空间(HTS 表空间)
二、管理数据文件
1、添加数据文件
alter tablespace bookshop add DATAFILE 'd:\book.dbf' SIZE 64;
一个表空间中,数据文件和镜像文件一起不能超过256个。例如,如果创建表空间的时候已经指定了1个数据文件,那么添加数据文件的时候,最多只能添加255个了。
2、删除数据文件
alter tablespace HOT drop DATAFILE 'd:\book.dbf';
删除表空间中数据文件时必须遵守文件ID从大到小的原则。先从具有最大文件ID的数据文件开始,且表空间中文件ID为零的数据文件不能被删除。
3、修改数据文件的大小
alter tablespace bookshop resize DATAFILE 'd:\book.dbf' TO 128;
alter tablespace bookshop resize DATAFILE 'd:\book.dbf' TO 32;
4、指定数据文件的扩展属性
可以指定数据文件是否可以扩展,每次扩展的空间大小以及数据文件可扩展到的最大空间大小,子句的语法为:
AUTOEXTEND OFF|ON [NEXT <文件扩展大小>] [MAXSIZE <文件限制大小>]
OFF表示文件不可扩展,ON表示文件可扩展。文件扩展大小表示当需要扩展文件时,文件一次增大的空间大小,取值范围是0—2048,单位是M。文件限制大小表示文件可扩展的最大空间大小,为0或者UNLIMITED表示无限制,单位是M。缺省情况下,文件扩展大小是1M,文件的最大大小是无限制的。
创建表空间时可指定文件的扩展属性。如创建表空间时指定数据文件的扩展属性为可自动扩展,每次扩展大小为10M,最大可扩展到100M:
create tablespace bookshop DATAFILE 'd:\book.dbf' SIZE 32 AUTOEXTEND ON NEXT 10 MAXSIZE 100;
在表空间中添加文件时可指定文件的扩展属性。如添加数据文件时指定扩展属性为不可自动扩展:
alter tablespace bookshop add DATAFILE 'd:\book.dbf' SIZE 1024 AUTOEXTEND OFF;
可修改表空间中已存在的数据文件的扩展属性。如修改数据文件的扩展属性为可自动扩展:
alter tablespace bookshop DATAFILE 'd:\book.dbf' AUTOEXTEND ON;
5、修改数据文件的路径
待修改的数据文件所在表空间必须处于脱机状态并且只可修改用户创建的表空间中文件的路径。如修改bookshop表空间中文件book.dbf的路径为e:\ book.dbf
alter tablespace bookshop RENAME DATAFILE 'd:\book.dbf' TO 'e:\book.dbf';
6、添加HUGE数据文件路径
可以为普通表空间添加HUGE数据文件路径将其升级为混合表空间,也可以为混合表空间添加HUGE数据文件路径,一个混合表空间最多可以添加255个HUGE数据文件路径。如为普通表空间bookshop添加HUGE数据文件路径e:\HUGE,将bookshop升级为混合表空间。
alter tablespace bookshop add HUGE PATH 'e:\HUGE';
三、管理重做日志文件
1、添加重做日志文件
在服务器打开状态下,可以添加新的重做日志文件。添加的数据文件大小最小为4096*页大小,如页大小为8K,则可添加的文件最小值为4096*8k=32M。如添加重做大小为128M的重做日志文件DAMENG03.log
alter database add LOGFILE 'd:\DAMENG03.log' size 128;
2、扩展重做日志文件
在服务器打开状态下,可以扩展已有的重做日志文件的大小。如扩展重做日志文件DAMENG03.log到256M。
alter database resize LOGFILE 'd:\DAMENG03.log' to 256;
四、管理回滚表空间
回滚表空间的管理和用户表空间的管理基本是一样的,区别是回滚空间的空间名固定为ROLL,不可修改。可增加和扩展回滚空间中的回滚文件,设置回滚空间的扩展属性,
回滚文件的路径记录在控制文件里面,可以使用dmctlcvt工具在DM服务器关闭的状态下对控制文件进行修改。使用dmctlcvt工具将控制文件转换为文本文件,编辑文本文件中要修改的文件的路径后再使用dmctlcvt工具将文本文件转换为控制文件即可。
dmctlcvt c2t D:\dm.ctl D:\ctl.txt
dmctlcvt t2c D:\ctl.txt D:\dm.ctl
五、管理控制文件
可以在dm.ini中通过设置CTL_PATH配置参数的值来指定控制文件的路径,缺省控制文件dm.ctl在数据目录下。例如可以把dm.ctl文件复制到D盘下,同时修改dm.ini中CTL_PATH = D:\dm.ctl。
六、 用户管理
1、用户创建命令
1.1 用户创建基础操作
以下是在达梦数据库(DM8)中创建用户并分配指定权限的详细步骤:
create user HOT identified by "Wad150365." default tablespace "HOT";
grant "PUBLIC", "RESOURCE" ,"SOI" to HOT;
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE INDEX, BACKUP DATABASE TO HOT;
1.2、用户修改用户密码
ALTER USER "TEST_USER" IDENTIFIED BY "NewPassword123";
删除用户
DROP USER "TEST_USER" CASCADE; -- CASCADE级联删除用户对象
查询用户信息
select * from DBA_USERS;
查看用户权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'TEST_USER';
DBA_SYS_PRIVS 试图中获取有关特定用户(如 TEST_USER)的所有系统权限的信息。
解释查询结果:
GRANTEE:表示被授予权限的用户名。
PRIVILEGE:表示授予权限的具体权限名称。
ADMIN_OPTION:表示该用户是否有权将此权限再授予其他用户(如果有,则值为Y,否则为N)
2、权限知识
2.1、基础连接权限
权限名称 | 作用描述 |
| 核心权限:允许用户连接到数据库实例(无此权限将无法登录) |
2.2、对象创建权限
权限名称 | 作用描述 |
| 允许在用户自己模式下创建表 |
| 允许在任何模式下创建表(需谨慎授予) |
| 允许创建视图 |
| 允许在自有表上创建索引 |
| 允许创建序列 |
| 允许创建存储过程/函数 |
| 允许创建触发器 |
2.3、数据操作权限
权限名称 | 作用描述 |
| 允许查询所有模式的表(跨模式读取) |
| 允许向所有模式的表插入数据 |
| 允许更新所有模式的表数据 |
| 允许删除所有模式的表数据 |
2.4、管理类权限
权限名称 | 作用描述 |
| 允许修改用户密码/属性 |
| 允许修改表空间属性 |
| 允许无限制使用所有表空间(默认无此权限需单独授权) |
2.5、常用角色说明
角色名称 | 包含的核心权限 |
PUBLIC | 基础权限:包含 |
RESOURCE | 开发权限:包含 |
DBA | 管理员权限:包含绝大多数系统权限(慎用) |
2.6、典型权限组合示例
1. 开发用户
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO user1;
GRANT RESOURCE TO user1; -- 补充开发权限
ALTER USER user1 LIMIT SPACE ON users_tbs UNLIMITED;
2. 数据分析用户
GRANT CREATE SESSION, SELECT ANY TABLE TO analyst;
GRANT CREATE VIEW TO analyst; -- 允许创建分析视图
3. 运维用户
GRANT CREATE SESSION, ALTER TABLESPACE, ALTER USER TO dba_assist;
GRANT SELECT ANY TABLE, INSERT ANY TABLE TO dba_assist;
注意事项:
- 使用
ANY
类权限(如SELECT ANY TABLE
)会跨越模式权限控制,生产环境需谨慎授予 - 建议优先通过角色(ROLE)管理权限,而非直接授予用户
- 通过
SELECT * FROM DBA_SYS_PRIVS
可查看完整权限列表 - 表空间管理:
-
LIMIT SPACE ON
确保用户可在HOT表空间无限制存储- 若需限制空间使用量:
ALTER USER "HOT" LIMIT SPACE ON "HOT" 1024; -- 单位MB
- 权限验证:
-- 查看用户权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'HOT';
-- 查看用户角色
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'HOT';
扩展建议:
- 若需要跨模式操作,可额外授权:
GRANT SELECT ANY TABLE TO "HOT"; -- 跨模式查询
GRANT INSERT ANY TABLE TO "HOT"; -- 跨模式插入
- 生产环境建议添加密码有效期限制:
ALTER USER "HOT" PASSWORD EXPIRE_DAYS 90;
权限示意图:
用户权限组成
├── 系统权限
│ ├── CREATE SESSION(显式授权)
│ ├── CREATE TABLE(来自RESOURCE角色)
│ └── ...
├── 角色权限
│ ├── PUBLIC(基础权限)
│ └── RESOURCE(核心开发权限)
└── 表空间权限
└── HOT表空间无限制使用权