oracle怎么删除表空间下所有的表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle怎么删除表空间下所有的表相关的知识,希望对你有一定的参考价值。

1、创建两个测试表,指定表空间TEMP;

create table test_ts_1(id number) tablespace temp;

create table test_ts_2(id number) tablespace temp;

2、查询表空间下的表;可以发现刚建的两张表;

select * from user_tables t where tablespace_name = 'TEMP';

3、编写脚本,删除TEMP表空间下的所有表;

begin

  for v_cur in (select distinct t.table_name from user_tables t where tablespace_name = 'TEMP') loop

    execute immediate 'drop table '||v_cur.table_name||' purge';

  end loop;

end;

4、再次查询,可以发现TEMP表空间下的表,已经被删除;

select * from user_tables t where tablespace_name = 'TEMP'

参考技术A

您好,很高兴为您解答。


ORACLE删除表空间中的所有表,如果是非sysdbA连接用如下sql语句

 

declare 
vsql varchar2(200);
cursor c1 is 
  select 'drop table '||table_name||' cascade constraints' v_name 
   from user_tables;
    
  BEGIN
  for i in c1 loop
  vsql:=i.v_name;
  execute immediate vsql;
end loop;
end;
/

 

如果是sysdba连接的加上表空间名称

declare 
vsql varchar2(200);
cursor c1 is 
  select 'drop table '||table_name||' cascade constraints' v_name 
   from user_tables where tablespace_name='table_space_name';
    
  BEGIN
  for i in c1 loop
  vsql:=i.v_name;
  execute immediate vsql;
end loop;
end;
/


如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】


希望我的回答对您有所帮助,望采纳!


                                                                                                                             ~ O(∩_∩)O~

本回答被提问者和网友采纳
参考技术B SELECT 'DROP TABLE ' || TABLE_NAME || ' CASCADE CONSTRAINTS' V_NAME
  FROM DBA_TABLES
 WHERE TABLESPACE_NAME = 'USERS';

按照表空间名查询所有包含的表,并根据表名拼接删除语句。

执行上面查询语句生成的语句,即可删除所有表。

参考技术C select 'drop table '||table_name||';' from dba_tables t where t.tablespace_name='表空间名字';
把执行结果copy出来,执行一下就行了,如果想一次执行,就写个游标,执行动态SQL
参考技术D select 'drop table ' || s.segment_name || ' purge; ' from dba_segments s where s.segment_type='TABLE' and s.tablespace_name = 'XXXXX'

执行查询出来的结果

注意 9i以下的版本不需要 purge 选项

oracle数据库创建自动增长的表空间语句怎么写?

要创建个JYDB的表空间,最初大小为5G,空间满了每次自动增长1G,最好能设置剩余10%空间自动增长。

按磁盘剩余空间的10%自动增长,这个实现不了。 如果表空间设置为自动增长,在空间不足的情况下Oracle系统会自动增长表空间的,但是也不会超过磁盘的总空间大小。 创建表空间的语法如下:create tablespace jydbdatafile 'XXX\XXX\xx.dbf' --这里数据文件的路径你自己视情况定size 5120Mautoextend onnext 1024Mextent management local --这里设置表空间为本地管理 参考技术A

create tablespace news_tablespace datafile 'c:\\SmartDB01.ora' size 500M;

设置表空间自动增长

ALTER DATABASE DATAFILE 'c:\\SmartDB01.ora' AUTOEXTEND ON;//打开自动增长
ALTER DATABASE DATAFILE 'c:\\SmartDB01.ora' AUTOEXTEND ON NEXT 200M ;//每次自动增长200m
ALTER DATABASE DATAFILE 'c:\\SmartDB01.ora' AUTOEXTEND ON NEXT 200M MAXSIZE 1024M;//每次自动增长200m,数据表最大不超过1G

参考技术B CREATE SMALLFILE TABLESPACE "表空间名称" DATAFILE '表空间保存的路径' SIZE 20M AUTOEXTEND ON NEXT 20K MAXSIZE UNLIMITED NOLOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS; 参考技术C create tablespace "JYDB" logging datafile 'd:\oracle\oradata\JYDB.dbf' size 5000M autoextend on next 1000M maxsize unlimited extent management local segment space management auto; 参考技术D create tablespace JYDB datafile 'path' SIZE 5000M AUTOEXTEND ON NEXT 1024M
MAXSIZE UNLIMITED MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

以上是关于oracle怎么删除表空间下所有的表的主要内容,如果未能解决你的问题,请参考以下文章

oracle怎么删除用户添加的系统表空间

ORACLE删除当前用户下所有的表的方法

Oracle数据库表空间删除报错误删除不了怎么办?

在oracle中如何删除一个用户下所有该用户所建的表?

怎么删除用户,表空间,数据文件

Oracle 11G删除数据库表空间的文件