完全清除数据解决思路

完全清除数据
公司有个测试数据库,现在快测试完 ,我想把里面的所有东西都清了,应该怎么操作才好呢,就是还原到刚装完ORACLE的那种状态,主要是删除表空间,用户,数据,各种结构,SEQUENCES,等等吧。请大神指点啊。PS,还有个问题就是老是有人挂着连接不放手,你们会不会设置idle time来T掉这些啊, 我又怕T了会影响他们程序。
------解决方案--------------------
手动清理比较安全,但是也可以先创建整个库的框架,然后把配置数据导入进去,简单来说,就是做一个“模板库”
------解决方案--------------------
引用:
公司有个测试数据库,现在快测试完 ,我想把里面的所有东西都清了,应该怎么操作才好呢,就是还原到刚装完ORACLE的那种状态,主要是删除表空间,用户,数据,各种结构,SEQUENCES,等等吧。请大神指点啊。PS,还有个问题就是老是有人挂着连接不放手,你们会不会设置idle time来T掉这些啊, 我又怕T了会影响他们程序。

通过删除某个用户下的对象来实现,可以用spool先生成脚本,再执行这个脚本。
你也可以通过程序采用动态sql的方式来实现。
如:通过spool来删除当前用户下对象:
--删除某个用户下的对象
set heading off;
set feedback off;
spool c:/dropobj.sql;
 
 prompt --Drop tables
 select 'drop table ' 
------解决方案--------------------
 table_name 
------解决方案--------------------
';'
------解决方案--------------------
chr(13)
------解决方案--------------------
chr(10) from user_tables; 
 
 prompt --Drop view
 select 'drop view ' 
------解决方案--------------------
 view_name
------解决方案--------------------
';'
------解决方案--------------------
chr(13)
------解决方案--------------------
chr(10) from user_views;
 
 prompt --Drop sequence
 select 'drop sequence ' 
------解决方案--------------------
 sequence_name
------解决方案--------------------
';'
------解决方案--------------------
chr(13)
------解决方案--------------------
chr(10) from user_sequences; 
 
 prompt --Drop function
 select 'drop function ' 
------解决方案--------------------
 object_name
------解决方案--------------------
';'
------解决方案--------------------
chr(13)
------解决方案--------------------
chr(10) from user_objects  where object_type='FUNCTION';

 prompt --Drop procedure
 select 'drop procedure ' 
------解决方案--------------------
 object_name
------解决方案--------------------
';'
------解决方案--------------------
chr(13)
------解决方案--------------------
chr(10) from user_objects  where object_type='PROCEDURE';
 
 prompt --Drop package
 select 'drop package ' 
------解决方案--------------------
 object_name
------解决方案--------------------
';'
------解决方案--------------------
chr(13)
------解决方案--------------------
chr(10) from user_objects  where object_type='PACKAGE';
 
spool off;
set heading on;
set feedback on;

------解决方案--------------------
方法1.  可以通过dbca  去删除,再重建
方法2. 删除各个新建的用户 ,然后删除表空间对应的文件。 但是这样清除可能不够彻底
至于idle_time   设置问题, profile 是可以设置的, 但是 只能根据不通连接的用户,而不能对同一个用户 部分连接客户端做出设置

------解决方案--------------------
还原到装完oracle的状态,直接dbca删除实例就好了
------解决方案--------------------
1,将数据库恢复到只安装软件状态,查询并彻底删除数据库
SELECT 'rm -f '
------解决方案--------------------
name as rf FROM v$datafile
       union
       SELECT 'rm -f '
------解决方案--------------------
name as rf FROM v$controlfile
       union
       SELECT 'rm -f '
------解决方案--------------------
name as rf FROM v$archived_log
       union
       SELECT 'rm -f '
------解决方案--------------------
name as rf FROM v$flashback_database_logfile;
       得出要删除的文件命令,在linux下执行
将数据库和实例文件删除
最原始的备机文件分布:
1,/u01/oracle/product/11.2.0/dbhome_1/dbs下只有init.ora文件------其他备份后再删除
2,/u01下没有oradata文件夹--将该文件夹删除
3,u01/oracle下只有checkpoints  product文件夹----其他文件夹备份后删除

二,用dbca图形界面删除
三,设置idle time
我没用过,我们这里只有数据库工程师才有权限碰数据库。所有没有做这样的设置
oracle管理艺术是有提到这个功能,理论是可以的。
你可以试一下