删除Oracle 10g中创建的所有内容

时间:2011-10-20 20:54:53

标签: sql oracle

是否有一个命令可以删除在Oracle 10g中创建的所有内容,以便我可以重新开始?

2 个答案:

答案 0 :(得分:5)

清除架构的最简单方法是以DBA身份登录并删除用户:

drop user apc cascade
/

但是如果你真的想要删除对象,你需要部署一些动态SQL。

declare
    stmt varchar2(2000);
begin
    for r in ( select object_type, object_name
               from user_objects
               where object_type in 
                   ( 'TYPE', 'PACKAGE', 'FUNCTION', 'PROCEDURE', 
                      'SEQUENCE', 'VIEW', 'TABLE', 'MATERIALIZED VIEW')
              _
    loop
         stmt :=  'drop '||r.object_type||' '||r.object_name;
         -- to avoid failures due to foreign keys
         if r.object_type = 'TABLE' then
             stmt := stmt || ' cascade constraints';
         end if;
         execute immediate stmt;
     end loop;
end;

在大多数情况下,这应该强制删除模式中的每个对象。但是它有可能会失败(比如说某个其他会话是否锁定了某个对象)。此外,由于TYPE继承,它不处理依赖性。所以有明显的方法可以改进:自动重新运行,激活处理等。但它提供了10个启动器。


在现实世界中,与学术界的象牙塔相对,不应该有这样的程序。每个数据库构建脚本都应该具有相同且相反的回归脚本。可悲的是,情况往往并非如此。


  

“我不知道架构是什么”

架构是用户拥有的所有对象。它与用户无法区分,因为它们共享相同的名称,并且在创建用户时隐式创建空模式。但是,严格来说,它们是两回事。 Find out more

答案 1 :(得分:0)

在mac 10.5.8上,删除关于oracle 10g db instance的每个文件删除这些dirs: - oracle(从安装过程生成的目录) - oraInventory(系统上所有oracle安装的通用目录) - / var / opt / oracle(包含设置oraInventory目录位置的文件) - db(是从oracle网站下载的文件中解压缩的dir以进行安装) - db.zip(从oracle站点下载用于安装的文件)

现在,您可以在Mac上重新安装新的oracle数据库。至少,这对我有用。

我找到了有用的信息herehere