完全清除数据解决思路
完全清除数据
公司有个测试数据库,现在快测试完 ,我想把里面的所有东西都清了,应该怎么操作才好呢,就是还原到刚装完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管理艺术是有提到这个功能,理论是可以的。
你可以试一下
公司有个测试数据库,现在快测试完 ,我想把里面的所有东西都清了,应该怎么操作才好呢,就是还原到刚装完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管理艺术是有提到这个功能,理论是可以的。
你可以试一下