某些表的数据需要在我的系统中更新(或删除、插入)。但我想知道哪些数据被更新、删除和插入。所以在数据改变之前,我会像这样备份不同模式的表:
create table backup_table as select * from schema1.testtable
并且在数据更改后,我想找到 backup_table 和 testtable 之间的差异,并且我想将差异保存到备份模式中的表中。
我将运行的 sql 是这样的:
CREATE TABLE TEST_COMPARE_RESULT
AS
SELECT 'BEFORE' AS STATUS, T1.*
FROM (
SELECT * FROM backup_table
MINUS
SELECT * FROM schema1.testtable
) T1
UNION ALL
SELECT 'AFTER' AS STATUS, T2.*
FROM (
SELECT * FROM schema1.testtable
MINUS
SELECT * FROM backup_table
) T2
我担心的是我听说减号操作会占用大量系统资源。在我的系统中,某些表大小会超过700M。所以我想知道oracle如何读取内存中的700M数据(PGA ??) 还是临时表空间?以及我应该如何确保资源足以进行比较操作?