Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下
对于单个user和tablespace 来说, 可以使用如下命令来完成。
步骤一: 删除user
drop user ×× cascade
说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。
步骤二: 删除tablespace
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
但是,因为是供开发环境来使用的db, 需要清理的user 和 table space 很多。
思路:
Export出DB中所有的user和tablespace, 筛选出系统的和有用的tablespace,把有用的信息load到一张表中去。
然后写例程循环,把不在有用表的tablespace删掉
1. select username,default_tablespace from dba_users;
2.
create table MTUSEFULSPACE
(
ID Number(4) NOT NULL PRIMARY KEY,
USERNAME varchar2(30),
TABLESPACENAME varchar2(60),
OWNERNAME varchar2(30)
);
3.
declare icount number(2);
tempspace varchar2(60);
begin
for curTable in (select username as allusr,default_tablespace as alltblspace from dba_users)
loop
tempspace :=curTable.alltblspace;
dbms_output.put_line(tempspace);
select count(TABLESPACENAME) into icount from MTUSEFULSPACE where TABLESPACENAME = tempspace;
if icount=0 then
DROP TABLESPACE tempspace INCLUDING CONTENTS AND DATAFILES;
end if;
commit;
end loop;
end;
执行后会报如下错误
ORA-06550: 第 10 行, 第 5 列:
PLS-00103: 出现符号 "DROP"在需要下列之一时:
begin case declare exit
for goto if loop mod null pragma raise return select update
while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
好像是被锁了。。
没办法,例程不能写,就只能组出语句执行了。
把需要删除的user, tablespace 导出到Excel. 使用CONCATENATE 组出SQL.
贴到SQLdevelop 批量执行。
整个删除会比较耗时间, 100多个user. 用了12个小时左右。
如要找datafile的具体位置,可以使用
select t1.name,t2.name from v$tablespace t1, v$datafile t2 where t1.ts# = t2.ts#;
SQL code
--删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
--删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
--删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
相关推荐
Oracle数据库管理中,删除用户和表空间是常见的维护任务,特别是在开发环境中,为了保持数据库的整洁和高效运行,定期清理无用的用户和表空间至关重要。以下是对标题和描述中涉及知识点的详细解释: 1. **Oracle ...
本文将详细介绍如何在Linux下的Oracle环境中删除用户和表空间,以及处理可能遇到的问题。 首先,我们来看如何删除Oracle数据库中的用户。用户删除是一个系统级别的操作,需要以SYSDBA权限登录到数据库。以下是删除...
本文将详细介绍如何在Oracle环境下进行这些操作,包括创建表空间、为用户分配权限、以及如何删除表空间和用户。 ### 一、创建表空间 #### 1.1 创建表空间的基本语法 创建表空间的基本语法如下: ```sql CREATE ...
当创建新用户时,可以为用户分配默认表空间和临时表空间,以便他们在该表空间中创建对象: ```sql CREATE USER my_user IDENTIFIED BY my_password DEFAULT TABLESPACE MY_DATA TEMPORARY TABLESPACE MY_TEMP; ...
Oracle 数据库是一个强大的关系型数据库管理系统,其用户管理和表空间机制是数据库管理和操作的基础。本文主要探讨了 Oracle 用户(user)和表空间(tablespace)的相关概念、创建、配置、修改以及删除等核心操作,...
在Oracle 10g数据库管理中,创建、修改和删除用户以及用户表空间是数据库管理员(DBA)的常见任务。这些操作对于维护数据库的安全性、性能和数据完整性至关重要。下面将详细阐述如何在Oracle 10g中执行这些操作。 ###...
综上所述,删除Oracle表空间是一个涉及多个步骤的过程,需要仔细规划和执行。通过正确地准备、脱机、处理依赖、删除数据文件,最终才能安全地删除表空间。在实际工作中,一定要根据具体的数据库环境和需求进行适当...
表空间可以分为永久表空间和临时表空间两大类。创建表空间的命令如下: 1. **创建数据表空间**: ```sql CREATE TABLESPACE BCC DATAFILE 'D:\oracle\oradata\BCC\BCC.dbf' SIZE 100M AUTOEXTEND ON NEXT 32M ...
### 完整Oracle创建表空间、用户及设置用户权限脚本解析 #### 一、创建表空间 在Oracle数据库管理中,创建表空间是数据库管理的基础之一。表空间是Oracle数据库中逻辑存储结构的一部分,它将数据库物理存储空间...
创建新用户时,可以为其指定默认表空间和临时表空间: ```sql CREATE USER BCC IDENTIFIED BY BCC DEFAULT TABLESPACE BCC TEMPORARY TABLESPACE BCC_TEMP; ``` **参数解释:** - `IDENTIFIED BY`:设置用户的...
为了更好地理解实例、用户和表空间之间的关系,我们可以绘制一张简单的示意图: - **实例**: 一个数据库可以有多个实例,每个实例对应着一组后台进程和内存结构。 - **用户**: 每个实例下可以创建多个用户,用户...
主要用于创建表空间,创建用户,指定默认表空间临时表空间,删除表空间等
oracle 11G创建表空间、用户、密码、索引、分配权限、删除表空间、数据泵导入、导出
根据给定的文件信息,我们可以总结出以下关于Oracle数据库中用户和表空间创建的相关知识点: ### 一、Oracle表空间创建 #### 1. 表空间概念 在Oracle数据库中,表空间是逻辑存储单元,它由一个或多个数据文件组成...
#### 五、撤销权限与删除用户 当不再需要某个用户时,可以撤销其权限并最终删除该用户: ```sql REVOKE privilege FROM user_name; DROP USER swoa CASCADE; ``` #### 六、删除表空间 删除表空间时,需要注意...
使用`CASCADE`选项可以同时删除用户的所有对象(如表、视图等)。 2. **创建新用户**: ```sql CREATE USER oa IDENTIFIED BY oa DEFAULT TABLESPACE oa QUOTA UNLIMITED ON oa; GRANT DBA TO oa; ``` 创建一...
创建用户时可以指定该用户的默认表空间和临时表空间。创建用户的语法如下: ```sql CREATE USER test IDENTIFIED BY test DEFAULT TABLESPACE test_data TEMPORARY TABLESPACE test_temp; ``` 其中,`CREATE USER` ...
在Oracle数据库管理中,创建表空间和用户是基础但至关重要的操作,这直接影响到数据库的性能、安全性和数据管理效率。以下将详细解析如何在Oracle数据库中创建表空间和用户,以及这一过程中涉及的关键概念和步骤。 ...