2026-03-12 21:01:38
This commit is contained in:
317
FDA/fda_01.txt
Normal file
317
FDA/fda_01.txt
Normal file
@@ -0,0 +1,317 @@
|
||||
alias adm_NIHILUS='rlwrap sqlplus adm/"secret"@bakura:1521/NIHILUS as sysdba'
|
||||
|
||||
|
||||
create pluggable database NIHILUS admin user NIHILUS$OWNER identified by secret;
|
||||
alter pluggable database NIHILUS open;
|
||||
alter pluggable database NIHILUS save state;
|
||||
|
||||
|
||||
alter session set container=NIHILUS;
|
||||
|
||||
create bigfile tablespace LIVE_TS datafile size 32M autoextend on next 32M;
|
||||
create bigfile tablespace ARCHIVE_TS datafile size 32M autoextend on next 32M;
|
||||
|
||||
create user adm identified by "secret";
|
||||
grant sysdba to adm;
|
||||
|
||||
|
||||
create user usr identified by "secret";
|
||||
grant CONNECT,RESOURCE to usr;
|
||||
grant alter session to usr;
|
||||
|
||||
alter user usr default tablespace LIVE_TS;
|
||||
|
||||
alter user usr quota unlimited on LIVE_TS;
|
||||
alter user usr quota unlimited on ARCHIVE_TS;
|
||||
|
||||
alias adm_NIHILUS='rlwrap sqlplus adm/"secret"@bakura:1521/NIHILUS as sysdba'
|
||||
alias usr_NIHILUS='rlwrap sqlplus usr/"secret"@bakura:1521/NIHILUS'
|
||||
|
||||
|
||||
create flashback archive default ARCHIVE_7_DAY
|
||||
tablespace ARCHIVE_TS
|
||||
quota 1G
|
||||
retention 7 DAY;
|
||||
|
||||
grant flashback archive on ARCHIVE_7_DAY to usr;
|
||||
grant flashback archive administer to usr;
|
||||
grant execute on dbms_flashback_archive to usr;
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
SET LINESIZE 150
|
||||
|
||||
COLUMN owner_name FORMAT A20
|
||||
COLUMN flashback_archive_name FORMAT A22
|
||||
COLUMN create_time FORMAT A20
|
||||
COLUMN last_purge_time FORMAT A20
|
||||
|
||||
SELECT owner_name,
|
||||
flashback_archive_name,
|
||||
flashback_archive#,
|
||||
retention_in_days,
|
||||
TO_CHAR(create_time, 'YYYY-MM-DD HH24:MI:SS') AS create_time,
|
||||
TO_CHAR(last_purge_time, 'YYYY-MM-DD HH24:MI:SS') AS last_purge_time,
|
||||
status
|
||||
FROM dba_flashback_archive
|
||||
ORDER BY owner_name, flashback_archive_name;
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
SET LINESIZE 150
|
||||
|
||||
COLUMN flashback_archive_name FORMAT A22
|
||||
COLUMN tablespace_name FORMAT A20
|
||||
COLUMN quota_in_mb FORMAT A11
|
||||
|
||||
SELECT flashback_archive_name,
|
||||
flashback_archive#,
|
||||
tablespace_name,
|
||||
quota_in_mb
|
||||
FROM dba_flashback_archive_ts
|
||||
ORDER BY flashback_archive_name;
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
SET LINESIZE 150
|
||||
|
||||
COLUMN owner_name FORMAT A20
|
||||
COLUMN table_name FORMAT A20
|
||||
COLUMN flashback_archive_name FORMAT A22
|
||||
COLUMN archive_table_name FORMAT A20
|
||||
|
||||
SELECT owner_name,
|
||||
table_name,
|
||||
flashback_archive_name,
|
||||
archive_table_name,
|
||||
status
|
||||
FROM dba_flashback_archive_tables
|
||||
ORDER BY owner_name, table_name;
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
||||
-- Example 1
|
||||
-------------
|
||||
|
||||
create table TAB1 (
|
||||
ID number,
|
||||
DESCRIPTION varchar2(50),
|
||||
constraint TAB_1_PK primary key (id)
|
||||
);
|
||||
|
||||
alter table TAB1 flashback archive ARCHIVE_7_DAY;
|
||||
|
||||
insert into TAB1 values (1, 'one');
|
||||
commit;
|
||||
|
||||
update TAB1 set description = 'two' where id = 1;
|
||||
commit;
|
||||
|
||||
update TAB1 set description = 'three' where id = 1;
|
||||
commit;
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
SET LINESIZE 200
|
||||
|
||||
COLUMN versions_startscn FORMAT 99999999999999999
|
||||
COLUMN versions_starttime FORMAT A32
|
||||
COLUMN versions_endscn FORMAT 99999999999999999
|
||||
COLUMN versions_endtime FORMAT A32
|
||||
COLUMN versions_xid FORMAT A16
|
||||
COLUMN versions_operation FORMAT A1
|
||||
COLUMN description FORMAT A11
|
||||
|
||||
SELECT versions_startscn,
|
||||
versions_starttime,
|
||||
versions_endscn,
|
||||
versions_endtime,
|
||||
versions_xid,
|
||||
versions_operation,
|
||||
description
|
||||
FROM tab1
|
||||
VERSIONS BETWEEN TIMESTAMP SYSTIMESTAMP-(1/24) AND SYSTIMESTAMP
|
||||
WHERE id = 1
|
||||
ORDER BY versions_startscn;
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
||||
create table TAB1 (d date);
|
||||
alter table TAB1 flashback archive ARCHIVE_7_DAY;
|
||||
|
||||
insert into TAB1 values (sysdate);
|
||||
commit;
|
||||
|
||||
-- infinite_update1.sql
|
||||
begin
|
||||
loop
|
||||
update TAB1 set d=sysdate;
|
||||
commit;
|
||||
dbms_session.sleep(1);
|
||||
end loop;
|
||||
end;
|
||||
/
|
||||
|
||||
|
||||
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
|
||||
|
||||
SET LINESIZE 200
|
||||
|
||||
COLUMN versions_startscn FORMAT 99999999999999999
|
||||
COLUMN versions_starttime FORMAT A32
|
||||
COLUMN versions_endscn FORMAT 99999999999999999
|
||||
COLUMN versions_endtime FORMAT A32
|
||||
COLUMN versions_xid FORMAT A16
|
||||
COLUMN versions_operation FORMAT A1
|
||||
COLUMN description FORMAT A25
|
||||
|
||||
SELECT
|
||||
versions_startscn,
|
||||
versions_starttime,
|
||||
versions_endscn,
|
||||
versions_endtime,
|
||||
versions_xid,
|
||||
versions_operation,
|
||||
d
|
||||
FROM
|
||||
TAB1
|
||||
VERSIONS BETWEEN TIMESTAMP TIMESTAMP'2023-06-17 17:20:10' and TIMESTAMP'2023-06-17 17:20:40'
|
||||
ORDER BY versions_startscn;
|
||||
|
||||
|
||||
SELECT * from TAB1
|
||||
AS OF TIMESTAMP TIMESTAMP'2023-06-17 17:05:10';
|
||||
|
||||
|
||||
SELECT * from TAB1
|
||||
AS OF TIMESTAMP TIMESTAMP'2023-06-17 17:30:49';
|
||||
|
||||
|
||||
|
||||
EXEC DBMS_SYSTEM.set_ev(si=>163, se=>24797, ev=>10046, le=>8, nm=>'');
|
||||
|
||||
|
||||
-- Example 2
|
||||
-------------
|
||||
|
||||
alter table TAB2 no flashback archive;
|
||||
drop table TAB2 purge;
|
||||
|
||||
|
||||
create table TAB2 (
|
||||
n1 number,
|
||||
c1 varchar2(10),
|
||||
d1 DATE
|
||||
);
|
||||
|
||||
alter table TAB2 flashback archive ARCHIVE_7_DAY;
|
||||
|
||||
insert into TAB2 values(1,'One',TIMESTAMP'2023-01-01 00:00:00');
|
||||
commit;
|
||||
insert into TAB2 values(2,'Two',TIMESTAMP'2023-01-01 00:00:00');
|
||||
commit;
|
||||
insert into TAB2 values(3,'Three',TIMESTAMP'2023-01-01 00:00:00');
|
||||
commit;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
|
||||
|
||||
SET LINESIZE 200
|
||||
COLUMN versions_startscn FORMAT 99999999999999999
|
||||
COLUMN versions_starttime FORMAT A32
|
||||
COLUMN versions_endscn FORMAT 99999999999999999
|
||||
COLUMN versions_endtime FORMAT A32
|
||||
COLUMN versions_xid FORMAT A16
|
||||
COLUMN versions_operation FORMAT A1
|
||||
COLUMN description FORMAT A25
|
||||
|
||||
SELECT
|
||||
versions_startscn,
|
||||
versions_starttime,
|
||||
versions_endscn,
|
||||
versions_endtime,
|
||||
versions_xid,
|
||||
versions_operation,
|
||||
T.*
|
||||
FROM
|
||||
TAB2 VERSIONS BETWEEN TIMESTAMP (systimestamp-3/24) and systimestamp T
|
||||
where
|
||||
N1=1
|
||||
ORDER BY versions_startscn;
|
||||
|
||||
update TAB2 set d1=TIMESTAMP'2023-12-31 23:59:59' where n1=1;
|
||||
commit;
|
||||
|
||||
|
||||
select * from TAB2 as of timestamp TIMESTAMP'2023-06-18 08:47:20' where N1=1;
|
||||
|
||||
select * from TAB2 as of timestamp systimestamp where N1=1;
|
||||
select * from TAB2 as of scn 4335762 where N1=1;
|
||||
select * from TAB2 as of scn 4335824 where N1=1;
|
||||
|
||||
->
|
||||
alter table TAB2 add C2 varchar2(3);
|
||||
|
||||
update TAB2 set C2='abc' where n1=1;
|
||||
update TAB2 set C2='***' where n1=1;
|
||||
commit;
|
||||
update TAB2 set C2='def' where n1=1;
|
||||
commit;
|
||||
|
||||
|
||||
alter table TAB2 drop column C2;
|
||||
alter table TAB2 rename column C1 to C3;
|
||||
|
||||
update TAB2 set d1=systimestamp where n1=1;
|
||||
commit;
|
||||
|
||||
update TAB2 set d1=TIMESTAMP'1973-10-05 10:00:00',C3='birthday' where n1=1;
|
||||
commit;
|
||||
|
||||
update TAB2 set d1=systimestamp,C3='right now' where n1=1;
|
||||
commit;
|
||||
|
||||
|
||||
4336404 18-JUN-23 03.14.59
|
||||
select * from TAB2 as of timestamp TIMESTAMP'2023-06-18 03:15:00' where N1=1;
|
||||
|
||||
select * from TAB2 as of scn 4336403 where N1=1;
|
||||
select * from TAB2 as of scn 4336404 where N1=1;
|
||||
select * from TAB2 as of scn 4337054 where N1=1;
|
||||
|
||||
select * from TAB2 as of scn 4282896 where N1=1;
|
||||
select * from TAB2 as of scn 4283027 where N1=1;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- cleanup
|
||||
alter table TAB2 no flashback archive;
|
||||
drop table TAB2 purge;
|
||||
|
||||
alter table TAB1 no flashback archive;
|
||||
drop table TAB1 purge;
|
||||
|
||||
drop user USR cascade;
|
||||
|
||||
drop flashback archive ARCHIVE_7_DAY;
|
||||
|
||||
drop tablespace LIVE_TS including contents and datafiles;
|
||||
drop tablespace ARCHIVE_TS including contents and datafiles;
|
||||
|
||||
|
||||
-- cleanup
|
||||
alter pluggable database NIHILUS close instances=ALL;
|
||||
drop pluggable database NIHILUS including datafiles;
|
||||
Reference in New Issue
Block a user