怎么删除所有表的数据 小弟想删除某用户下所有表的数据,但不要删除表的结构,怎么办,要彻底删除,因为我的目的是腾出空间,就是删除后要硬盘的大小变大,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 declarestrcommit varchar2(10);strdel varchar2(100);cursor cur_name is select table_name from user_tables ;v_tablename user_tables.table_name%type;beginopen cur_name;loopfetch cur_name into v_tablename;exit when cur_name%notfound;dbms_output.put_line(v_tablename);strdel:='delete '||v_tablename;strcommit:='commit;' execute immediate strdel ;--execute immediate strcommit ;end loop;close cur_name;end;未提交如要提交把注释那段的注释去掉就可以拉如果表中有外键可能会报错的! exp rows=no 导出一份不带数据的dmp文件删除这个用户并重建imp导入dmp文件 先exp再impexport username/password full=y file=yourdata.dmp grants=y rows=n import username/password full=y ignore=y file=yourdata.dmp grants=y 个人觉得比较简单的办法在命令模式下输入SET PAGES 999,select 'drop table ' || table_name || ';' from user_tables;然后执行输出的语句就好了。如:SQL> set PAGES 999;SQL> select 'drop table ' || table_name || ';' from user_tables; 哦,不好意思,看错了。不过你把drop table换成truncate 就可以了 建议先truncate table再alter tablespace tablespace_name coalesce select 'truncate table ' ¦ ¦ table_name ¦ ¦ ';' from user_tables ;记得加where条件字句,这样不记日志会快很多的; 为什么没人用delete table tablename;delete万一删除还可以通过回滚返回,还有为什么要set pages 999; 综合考虑还是先exp rows=no,再imp 删除数据并不能会使硬盘空间变大, 在定义数据库的时候已指明数据库的大小.现在都采用SICS硬盘, 容量不足加一块就是了. 安装一个TOAD,再到TABLESPACE选项页,看一下数据文件的使用率是多少,如果是使用率很底,可以直接修改文件的大小,达到楼主的目的select 'delete from table'||table_name||';'from user_tables; 授权问题 请求高手解决问题,蹊跷问题 紧急求助!!关于ADO连接ORACLE后执行DELETE语句失败? oracle 中行转列问题.高手进来看看.谢谢 [求救]SQL文整理工具 触发器的使用,请大家帮忙啊~~~~~~~~~~~~~~~~~~~~~~~~谢谢你们了!!!!!!!!!!!!!!!! 三个问题,请大家帮忙 关于char的问题(在线等!!) 急救! 当数据库中不知道表是否已存在,怎么写create table语句? 标志过长 Oracle物理结构
strcommit varchar2(10);
strdel varchar2(100);
cursor cur_name is select table_name from user_tables ;
v_tablename user_tables.table_name%type;
begin
open cur_name;
loop
fetch cur_name into v_tablename;
exit when cur_name%notfound;
dbms_output.put_line(v_tablename);
strdel:='delete '||v_tablename;
strcommit:='commit;'
execute immediate strdel ;
--execute immediate strcommit ;
end loop;
close cur_name;
end;未提交如要提交把注释那段的注释去掉就可以拉如果表中有外键可能会报错的!
删除这个用户并重建
imp导入dmp文件
import username/password full=y ignore=y file=yourdata.dmp grants=y
在命令模式下输入SET PAGES 999,select 'drop table ' || table_name || ';' from user_tables;
然后执行输出的语句就好了。如:
SQL> set PAGES 999;
SQL> select 'drop table ' || table_name || ';' from user_tables;
再alter tablespace tablespace_name coalesce
记得加where条件字句,这样不记日志会快很多的;
select 'delete from table'||table_name||';'from user_tables;