Database: Oracle 11g R2
Tool: TOAD for Oracle 10.6
我想要备份一张桌子。因此,我使用了以下查询:
CREATE TABLE table_backup AS (
SELECT *
FROM table
);
我需要对表进行一些更改,并在验证更改后将其还原到以前的版本。
为此,我将DROP表并使用上述查询从备份中恢复它。
我的问题是,当我这样做时,是否所有的拨款,索引,分区等都保留在已恢复的表格中?
此外,是否有更好的方法来实现我的要求。
答案 0 :(得分:1)
删除表会使相关对象无效并删除表上的对象权限。如果要重新创建表,则必须重新授予表的对象权限,重新创建表的索引,完整性约束和触发器,并重新指定其存储参数。
当您执行create table as ... select
语句时,会移动或复制许可,索引,分区等。原始表和复制表之间没有关系。当您放弃原始表时,其所有授权等都将丢失。将备份表重命名为原始备份表并不能神奇地恢复它们。
其他选项包括:
您还需要考虑任何参照约束(PK / FK)以及它们是否会受到重命名或删除/重新创建/导出/导入的影响。