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';
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管理艺术是有提到这个功能,理论是可以的。 你可以试一下
你也可以通过程序采用动态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;
方法2. 删除各个新建的用户 ,然后删除表空间对应的文件。 但是这样清除可能不够彻底
至于idle_time 设置问题, profile 是可以设置的, 但是 只能根据不通连接的用户,而不能对同一个用户 部分连接客户端做出设置
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管理艺术是有提到这个功能,理论是可以的。
你可以试一下
另外我的删除方法是我亲自测试过的,删的挺干净的,删除完重启运行正常,然后搭建dataguard正常
可以重建数据库,真正回到原始状态
也可以删除用户和表空间,比较快速和干净至于挂着连接不放的,直接干掉,既然你要删除用户数据,反正应用一定会报错的。连接少的话可以kill session,如果多可以直接断掉网络,或者关掉监听并重启数据库
2. 如果你想把测试的那些用户和表空间干掉,就手工清理一下,如果是整个台机器上的数据都不要了,直接 DBCA ;