oracle:视图,闪回归档
2015-02-02 22:48
323 查看
视图实际上是一个或多个表上的预查询,这些表称为基表。
从视图中检索信息与从表中检索信息的方法完全相同。通过某些视图,也可以对基表进行DML操作。
视图中并不存储着行,它们始终存储在表中。
视图的优点: 可以将复杂查询编写为视图,并授予用户访问视图的权限。这样就可以对用户屏蔽一定的复杂性。
限制用户只能访问视图,这样就可以阻止用户直接查询表。
限制某个视图只能访问基表中的某些行。这样可以对最终用户屏蔽部分行。
创建并使用视图
CREATE [OR REPLACE] [{FORCE | NOFORCE}] VIEW view_name
[ ( alias_name [,alias_name ...]) ] AS subquery
[ WITH {CHECK OPTION | READ ONLY} CONSTRAINT constraint_name];
用户必须具有CREATE VIEW 特权才能创建视图。
简单视图:包含一个子查询,只从一个基表中检索数据。
复杂视图:包含一个子查询,且具有以下特点:1.从多个基表中检索数据。2.使用GROUP BY或DISTINCT子句对行分组。3.包含函数调用。
只能对简单视图执行DML操作,复杂视图不支持DML操作。
通过为视图添加CHECK OPTION 约束,可以指定对视图执行的DML操作必须满足子查询的条件。
CREATE VIEW cheap_products_view AS
SELECT *
FROM products
WHERE price < 15
WITH CHECK OPTION CONSTRAINT cheap_products_view_price
通过为视图添加READ ONLY约束,可以指定该视图是只读的。不允许DML操作。
获取有关视图的信息:
1.使用DESCRIBE命令
2.从user_view视图中获取(all_view)
从user_constraints视图中可以获得有关视图约束的信息。
修改视图
CREATE OR REPLACE可以彻底替换一个视图。
ALTER VIEW可以用来修改视图的约束。
ALTER VIEW cheap_products_view
DROP CONSTRAINT cheap_products_view_price;
删除视图
DROP VIEW cheap_products_view;
闪回数据归档
创建闪回数据归档并将它添加到表之后,就可以完成下列任务:
查看行在特定时间戳的情况
查看行在两个时间戳之间的情况
CREATE FLASHBACK ARCHIVE test_archive
TABLESPACE example
QUOTA 1 M
RETENTION 1 DAY;
修改现有表,将数据存储在归档中:
ALTER TABLE store.products FLASHBACK ARCHIVE test_archive;
随后对store.products表所做的修改都会记录在归档中。
查看5分钟以前:
SELECT product_id,name,price
FROM store.products
AS OF TIMESTAMP
(SYSTIMESTAMP - INTERVAL '5' MINUTE);
还可以查看特定时间戳,两个时间戳之间,某个时间戳和当前时间之间的情况。
停止对表的数据归档ALTER TABLE store.products NO FLASHBACK ARCHIVE
创建表时,可以为表指定一个闪回归档。
可以修改闪回归档
可以从闪回归档中清除给定时间戳之前的数据
可以清除闪回归档中的所有数据
可以删除闪回归档
从视图中检索信息与从表中检索信息的方法完全相同。通过某些视图,也可以对基表进行DML操作。
视图中并不存储着行,它们始终存储在表中。
视图的优点: 可以将复杂查询编写为视图,并授予用户访问视图的权限。这样就可以对用户屏蔽一定的复杂性。
限制用户只能访问视图,这样就可以阻止用户直接查询表。
限制某个视图只能访问基表中的某些行。这样可以对最终用户屏蔽部分行。
创建并使用视图
CREATE [OR REPLACE] [{FORCE | NOFORCE}] VIEW view_name
[ ( alias_name [,alias_name ...]) ] AS subquery
[ WITH {CHECK OPTION | READ ONLY} CONSTRAINT constraint_name];
用户必须具有CREATE VIEW 特权才能创建视图。
简单视图:包含一个子查询,只从一个基表中检索数据。
复杂视图:包含一个子查询,且具有以下特点:1.从多个基表中检索数据。2.使用GROUP BY或DISTINCT子句对行分组。3.包含函数调用。
只能对简单视图执行DML操作,复杂视图不支持DML操作。
通过为视图添加CHECK OPTION 约束,可以指定对视图执行的DML操作必须满足子查询的条件。
CREATE VIEW cheap_products_view AS
SELECT *
FROM products
WHERE price < 15
WITH CHECK OPTION CONSTRAINT cheap_products_view_price
通过为视图添加READ ONLY约束,可以指定该视图是只读的。不允许DML操作。
获取有关视图的信息:
1.使用DESCRIBE命令
2.从user_view视图中获取(all_view)
从user_constraints视图中可以获得有关视图约束的信息。
修改视图
CREATE OR REPLACE可以彻底替换一个视图。
ALTER VIEW可以用来修改视图的约束。
ALTER VIEW cheap_products_view
DROP CONSTRAINT cheap_products_view_price;
删除视图
DROP VIEW cheap_products_view;
闪回数据归档
创建闪回数据归档并将它添加到表之后,就可以完成下列任务:
查看行在特定时间戳的情况
查看行在两个时间戳之间的情况
CREATE FLASHBACK ARCHIVE test_archive
TABLESPACE example
QUOTA 1 M
RETENTION 1 DAY;
修改现有表,将数据存储在归档中:
ALTER TABLE store.products FLASHBACK ARCHIVE test_archive;
随后对store.products表所做的修改都会记录在归档中。
查看5分钟以前:
SELECT product_id,name,price
FROM store.products
AS OF TIMESTAMP
(SYSTIMESTAMP - INTERVAL '5' MINUTE);
还可以查看特定时间戳,两个时间戳之间,某个时间戳和当前时间之间的情况。
停止对表的数据归档ALTER TABLE store.products NO FLASHBACK ARCHIVE
创建表时,可以为表指定一个闪回归档。
可以修改闪回归档
可以从闪回归档中清除给定时间戳之前的数据
可以清除闪回归档中的所有数据
可以删除闪回归档
相关文章推荐
- oracle:索引、视图和闪回数据归档
- Oracle的闪回数据归档
- oracle归档日志超出了恢复闪回恢复区(flash_recovery_area)限制的解决方法
- Oracle 11g 闪回数据归档
- oracle 11g rac开启归档日志和闪回
- ORACLE归档和闪回开关
- oracle归档日志超出了恢复闪回恢复区(flash_recovery_area)限制的解决方法
- Oracle闪回归档(上) —— Oracle Flashback Archive
- Oracle闪回归档(上) —— Oracle Flashback Archive
- oracle 闪回、归档的设置建议
- Oracle物化视图定时全量刷新导致归档日志骤增
- oracle 闪回恢复区、archive归档 问题
- Oracle闪回归档(下) —— Oracle Flashback Archive
- Oracle 11g闪回归档技术
- Oracle 11g RAC开启归档,闪回并设置各自不同的路径
- oracle归档和闪回
- oracle 闪回数据归档 分区表
- oracle物理体系结构-----归档重做日志和闪回恢复区
- oracle 使用闪回事务查询是 视图flashback_transaction_query中列operation为unknown 问题分析
- Oracle闪回(FlashBack)归档 数据库