–scope的取值: momery spfile both
–momery:只改当前内存(即数据库),不改参数文件;重启数据库后恢复原样
–spfile:只改参数文件,不改数据库;重启数据库后变为修改后的
–both:数据库,参数都改
–授予闪回权限:grant flashback any table to scott;
–授予事务查询权限:grant select any transaction to scott;
SQL> – 1.闪回表:将表回退到过去的一个时间上
SQL> flashback table flashback_table to scn 3784220;
SQL> --开启表的行移动
SQL> alter table flashback_table enable row movement;
SQL> --2.闪回删除
SQL> flashback table testseq to before drop;
SQL> --闪回重名的表
SQL> flashback table testseq to before drop rename to testseq_old;
SQL> --查看回收站,管理员没有回收站
SQL> show recyclebin
SQL> --清空回收站
SQL> purge recyclebin;
SQL> --通过回收站的名字查看表要加双引号
SQL> select * from “BIN$UhseqyX1Reyl5iurpupyEg==$0”;
SQL> /*
SQL> 小结:
SQL> 基本概念: 1. SCN 2. 900秒 3. 权限 flashback any tables
SQL> 闪回表:将表回退到过去的一个时间
SQL> 1. 行移动
SQL> 2. 执行闪回表
SQL> 注意: 系统表不能闪回;不能跨越DDL
SQL> 问题: 如何得到离该操作最近的一个时间??
SQL> 闪回删除: Oracle的回收站
SQL> 1. 执行闪回删除
SQL> 2. 通过回收站中的名字闪回(双引号)
SQL> 3. 重名的表
SQL> 4. 触发器(disable)
SQL> */
SQL> --3.闪回版本查询
SQL> --执行闪回版本查询
SQL> select tid,tname,versions_operation 操作,versions_starttime 起始时间,
2 versions_endtime 结束时间,versions_xid 事务号
3 from versions_table
4 versions between TIMESTAMP MINVALUE and MAXVALUE
5 order by 1,4;
SQL> --4.闪回事务查询
SQL> --视图flashback_transaction_query
SQL> desc flashback_transaction_query
SQL> --得到XID
SQL> select tid,tname,versions_operation 操作,versions_starttime 起始时间,
2 versions_endtime 结束时间,versions_xid 事务号
3 from transaction_table
4 versions between TIMESTAMP MINVALUE and MAXVALUE
5 order by 事务号;
SQL> --通过XID查询事务信息,再利用undo_sql撤销事务操作
SQL> select operation,undo_sql
2 from flashback_transaction_query
3 where xid=‘080029005C050000’;
2.在Sqlplus下实际执行的结果录屏
SQL> host cls
SQL> /*
SQL> 1. 错误地删除了记录
SQL> 2. 错误地删除了表
SQL> 3. 查询历史记录
SQL> 4. 如何撤销一个已经提交的事务
SQL>
SQL> 闪回的类型
SQL> 1. 闪回表:将表回退到过去的一个时间上
SQL> 2. 闪回删除:Oracle回收站
SQL> 3. 闪回版本查询:所有历史记录
SQL> 4. 闪回事务查询: 通过select语句得到一个 undo_sql
SQL>
SQL> 5. 闪回数据库
SQL> 6. 闪回归档日志
SQL> */
SQL> --SCN系统改变号(时间)
SQL> select to_char(systimestamp,‘yyyy-mm-dd hh24:mi:ss*ff’) 时间,
2 timestamp_to_scn(systimestamp) SCN
3 from dual;
时间 SCN
2012-10-25 10:31:02*000000 3783972
SQL> /*
SQL> SQL> show parameter undo
SQL>
SQL> NAME TYPE VALUE
SQL> ------------------------------------ ----------- --------------------
SQL> undo_management string AUTO
SQL> undo_retention integer 1200
SQL> undo_tablespace string UNDOTBS1
SQL> SQL> --scope的取值: momery spfile both
SQL> SQL> alter system set undo_retention=900 scope=both;
SQL> */
SQL> --权限 grant flashback any table to scott;
SQL> create table flashback_table
2 (fid number,fname varchar2(20));
表已创建。
SQL> insert into flashback_table values(1,‘Tom’);
已创建 1 行。
SQL> insert into flashback_table values(2,‘Mary’);
已创建 1 行。
SQL> insert into flashback_table values(3,‘Mike’);
已创建 1 行。
SQL> commit;
提交完成。
SQL> --当前时间
SQL> select to_char(systimestamp,‘yyyy-mm-dd hh24:mi:ss*ff’) 时间,
2 timestamp_to_scn(systimestamp) SCN
3 from dual;
时间 SCN
2012-10-25 10:36:22*046000 3784220
SQL> select * from flashback_table;
FID FNAME
1 Tom
2 Mary
3 Mike
SQL> --删除mary
SQL> delete from flashback_table where fid =2;
已删除 1 行。
SQL> commit;
提交完成。
SQL> select * from flashback_table;
FID FNAME
1 Tom
3 Mike
SQL> --执行闪回表
SQL> flashback table flashback_table to scn 3784220;
flashback table flashback_table to scn 3784220
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表
SQL> --开启表的行移动
SQL> alter table flashback_table enable row movement;
表已更改。
SQL> flashback table flashback_table to scn 3784220;
闪回完成。
SQL> select * from flashback_table;
FID FNAME
1 Tom
2 Mary
3 Mike
SQL> --问题:如何获取最近的一个时间?
SQL> host cls
SQL> --闪回删除
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP20 TABLE
TESTSAVEPOINT TABLE
TEST2 TABLE
MYPERSON TABLE
EMP10 TABLE
EMPINCOME TABLE
VIEW1 VIEW
TNAME TABTYPE CLUSTERID
VIEW2 VIEW
TESTSEQ TABLE
HREMP SYNONYM
MSG1 TABLE
TEST1 TABLE
PM_CI TABLE
PM_STU TABLE
FLASHBACK_TABLE TABLE
SYS_TEMP_FBT TABLE
已选择20行。
SQL> drop table test1;
表已删除。
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TEST1 BIN$Rn2qG7V+SO2k+aNrG/oYww==$0 TABLE 2012-10-25:10:45:11
SQL> purge recyclebin;
回收站已清空。
SQL> --管理员没有回收站
SQL> select * from TESTSEQ;
TID TNAME
3 aaa
4 aaa
5 aaa
8 aaa
SQL> drop table TESTSEQ;
表已删除。
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TESTSEQ BIN$UhseqyX1Reyl5iurpupyEg==$0 TABLE 2012-10-25:10:47:38
SQL> select * from TESTSEQ;
select * from TESTSEQ
第 1 行出现错误:
ORA-00942: 表或视图不存在
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP20 TABLE
TESTSAVEPOINT TABLE
TEST2 TABLE
MYPERSON TABLE
EMP10 TABLE
EMPINCOME TABLE
VIEW1 VIEW
TNAME TABTYPE CLUSTERID
VIEW2 VIEW
HREMP SYNONYM
MSG1 TABLE
BIN$UhseqyX1Reyl5iurpupyEg==$0 TABLE
PM_CI TABLE
PM_STU TABLE
FLASHBACK_TABLE TABLE
SYS_TEMP_FBT TABLE
已选择19行。
SQL> select * from BIN$UhseqyX1Reyl5iurpupyEg==$0;
select * from BIN$UhseqyX1Reyl5iurpupyEg==$0
第 1 行出现错误:
ORA-00933: SQL 命令未正确结束
SQL> select * from “BIN$UhseqyX1Reyl5iurpupyEg==$0”;
TID TNAME
3 aaa
4 aaa
5 aaa
8 aaa
SQL> host cls
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TESTSEQ BIN$UhseqyX1Reyl5iurpupyEg==$0 TABLE 2012-10-25:10:47:38
SQL> --执行闪回删除
SQL> flashback table testseq to before drop;
闪回完成。
SQL> show recyclebin
SQL> select * from testseq;
TID TNAME
3 aaa
4 aaa
5 aaa
8 aaa
SQL> host cls
SQL> drop table testseq;
表已删除。
SQL> create table testseq(tid number);
表已创建。
SQL> drop table testseq;
表已删除。
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TESTSEQ BIN$ZsXHtmHLTLu40DAC6jiKqg==$0 TABLE 2012-10-25:10:51:22
TESTSEQ BIN$hBllsvl5Tum9hHaSvtQhag==$0 TABLE 2012-10-25:10:51:01
SQL> flashback table testseq to before drop;
闪回完成。
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TESTSEQ BIN$hBllsvl5Tum9hHaSvtQhag==$0 TABLE 2012-10-25:10:51:01
SQL> select * from testseq;
未选定行
SQL> flashback table testseq to before drop;
flashback table testseq to before drop
第 1 行出现错误:
ORA-38312: 原始名称已被现有对象使用
SQL> --闪回重名的表
SQL> flashback table testseq to before drop rename to testseq_old;
闪回完成。
SQL> select * from testseq_old;
TID TNAME
3 aaa
4 aaa
5 aaa
8 aaa
SQL> host cls
SQL> /*
SQL> 小结:
SQL> 基本概念: 1. SCN 2. 900秒 3. 权限 flashback any tables
SQL> 闪回表:将表回退到过去的一个时间
SQL> 1. 行移动
SQL> 2. 执行闪回表
SQL> 注意: 系统表不能闪回;不能跨越DDL
SQL> 问题: 如何得到离该操作最近的一个时间??
SQL> 闪回删除: Oracle的回收站
SQL> 1. 执行闪回删除
SQL> 2. 通过回收站中的名字闪回(双引号)
SQL> 3. 重名的表
SQL> 4. 触发器(disable)
SQL> */
SQL> host cls
SQL> --闪回版本查询
SQL> create table versions_table
2 (tid number,tname varchar2(20));
表已创建。
SQL> insert into versions_table values(1.‘Tom’);
insert into versions_table values(1.‘Tom’)
第 1 行出现错误:
ORA-00917: 缺失逗号
SQL> insert into versions_table values(1,‘Tom’);
已创建 1 行。
SQL> commit;
提交完成。
SQL> insert into versions_table values(2,‘Mary’);
已创建 1 行。
SQL> commit;
提交完成。
SQL> insert into versions_table values(3,‘Mike’);
已创建 1 行。
Docker步步实践
目录文档:
①Docker简介
②基本概念
③安装Docker
④使用镜像:
⑤操作容器:
⑥访问仓库:
⑦数据管理:
⑧使用网络:
⑨高级网络配置:
⑩安全:
⑪底层实现:
⑫其他项目:
nsert into versions_table values(2,‘Mary’);
已创建 1 行。
SQL> commit;
提交完成。
SQL> insert into versions_table values(3,‘Mike’);
已创建 1 行。
Docker步步实践
目录文档:
[外链图片转存中…(img-FGKmG9Ab-1714435376609)]
[外链图片转存中…(img-lezWQruP-1714435376609)]
①Docker简介
②基本概念
③安装Docker
[外链图片转存中…(img-aGVOKv3e-1714435376609)]
④使用镜像:
[外链图片转存中…(img-fu4QiziY-1714435376610)]
⑤操作容器:
[外链图片转存中…(img-ZRn9TIb2-1714435376610)]
⑥访问仓库:
[外链图片转存中…(img-QBETgcTI-1714435376610)]
⑦数据管理:
[外链图片转存中…(img-5mkG6ukV-1714435376611)]
⑧使用网络:
[外链图片转存中…(img-qxueM4qz-1714435376611)]
⑨高级网络配置:
[外链图片转存中…(img-RaA0PP3k-1714435376611)]
⑩安全:
[外链图片转存中…(img-MNXzN8Vw-1714435376611)]
⑪底层实现:
[外链图片转存中…(img-3Vi2MH1S-1714435376612)]
⑫其他项目:
[外链图片转存中…(img-PIJiLqbA-1714435376612)]