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连接的加上表空间名称
declarevsql 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_NAMEFROM 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 --这里设置表空间为本地管理 参考技术Acreate 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怎么删除表空间下所有的表的主要内容,如果未能解决你的问题,请参考以下文章