我们使用旧版本的oracle(7或8),并使用exp / imp来保持数据库服务器同步(有一些时间延迟)。一个穷人的复制。
其中一个服务器是“主要”,一个是“备份”。在启动时,主节点导出其完整数据库,备份将删除其所有用户,然后导入主节点导出的内容。然后,在一个时间间隔内,主数据库将导出由备份导入的增量转储,以使它们保持同步。
“放弃所有用户”部分是我们花费大量时间的地方。基本上这样做,我正在查询所有这样的用户:
select distinct owner from all_tables where owner <> 'SYSTEM' AND owner <> 'SYS';
然后根据此查询在sqlplus中执行“删除USER级联”。我的问题是,是否有更快的方法来消除所有用户及其数据?我不确定这对我有什么帮助(放松约束?其他黑客?)
答案 0 :(得分:1)
您可能需要check this out。
此解决方案在删除em之前截断表,这可以提供很好的加速,特别是如果表中有大量数据。
答案 1 :(得分:1)
删除完整的数据库,重新创建并执行导入可能会更快。当有许多物体时尤其如此。
也许是时候升级并使用智能解决方案进行重新定位,例如dbvisit replicate?