达梦数据库操作之删除用户及表空间,初始化数据库,请谨慎操作

背景:

        建设期的项目,测试数据库的测试数据太多,太杂,现需要删除数据库在用的用户及表空间,然后进行初始化脚本的操作。

思路:

一、删除指定用户

1. 查询用户信息

在删除用户之前,建议先确认用户的存在及其相关信息:

SELECT * FROM DBA_USERS WHERE USERNAME = 'your_username';

其中,your_username 是您要删除的用户名。

2. 检查用户是否有关联对象

如果用户创建了表、视图或其他数据库对象,需要先删除这些对象,否则无法直接删除用户。可以通过以下命令检查:

SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER = 'your_username';
3. 删除用户
  • 如果用户没有关联对象,可以直接使用以下命令删除:
  DROP USER your_username;
  • 如果用户有关联对象,需使用 CASCADE 选项,这将删除用户及其所有对象:
  DROP USER your_username CASCADE;

注意:使用 CASCADE 会永久删除用户及其所有对象,请谨慎操作。

4. 注意事项
  • 只有具有 DBA 权限的用户(如 SYSDBA)才能执行删除用户的操作。
  • 系统用户(如 SYSDBASYSAUDITORSYSSSO)不能被删除。
  • 删除用户后,与该用户相关的模式也会被删除。

二、删除指定表空间

1. 查询表空间信息

在删除表空间之前,先查看当前数据库中的表空间列表:

SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
2. 检查表空间中的对象

确保表空间中没有表、索引或其他对象,否则无法删除。可以使用以下命令检查:

SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLESPACE_NAME = 'your_tablespace';
SELECT INDEX_NAME FROM DBA_INDEXES WHERE TABLESPACE_NAME = 'your_tablespace';

如果查询结果不为空,需要先将这些对象移动到其他表空间或删除它们。

3. 删除表空间
  • 如果表空间中没有对象,可以直接删除:
  DROP TABLESPACE your_tablespace;
  • 如果表空间中包含对象,需使用 INCLUDING CONTENTS 选项:
  DROP TABLESPACE your_tablespace INCLUDING CONTENTS;

此命令会删除表空间及其中的所有对象,并释放磁盘空间。

4. 注意事项
  • 只有具有 DBA 权限的用户才能执行删除表空间的操作。
  • 系统表空间(如 SYSTEMTEMP)不能被删除。
  • 表空间删除后,数据将永久丢失,请谨慎操作。

操作流程

1、删除用户:

SELECT * FROM DBA_USERS WHERE USERNAME = '***';

上图说明用户有关联对象,需使用 CASCADE 选项。

DROP USER ***CASCADE;

验证结果:

2、删除表空间

SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;

SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLESPACE_NAME = '***';
SELECT INDEX_NAME FROM DBA_INDEXES WHERE TABLESPACE_NAME = '***';

确保表空间中没有表、索引或其他对象。

DROP TABLESPACE ***;

3、新建用户及表空间,给权限

CREATE TABLESPACE *** DATAFILE '/data/dmdb/DAMENG/*****.DBF' SIZE 1024 AUTOEXTEND ON NEXT 1024 MAXSIZE 0;
create user *** identified by "u8VBngWaKM" DEFAULT TABLESPACE ***;
grant public,resource,soi,vti to ****;

4、查询已有的存储路径或新建一个存储路径

select owner,directory_name,directory_path from dba_directories;

我这里有,所以就不需要新建了,若没有,执行以下SQL新建。

CREATE DIRECTORY DMDIR AS '/data/dmdb1';

5、[数据库ECS操作]上传初始化dmp文件,并修改用户及用户组

6、[数据库ECS操作]执行导入命令

[dmdba@dm02 dmdb]$ cd /data/dmdb/
[dmdba@dm02 dmdb]$ whoami
dmdba
[dmdba@dm02 dmdb]$ nohup dimpdp userid=SYSDBA/'"**********"'@*******4:52*** directory=DMDIR file=init_13.5.*.dmp log=******_20250722.log remap_schema=v12_*****:***** remap_tablespace=****_init:****** &

7、连接数据库,使用新建用户验证数据:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值