Oracle DBMS_FBT
Version 21c

General Information
Library Note Morgan's Library Page Header
ACE Director Alum Daniel Morgan, founder of Morgan's Library, is scheduling complimentary technical Workshops on Database Security for the first 30 Oracle Database customers located anywhere in North America, EMEA, LATAM, or APAC that send an email to asra_us@oracle.com. Request a Workshop for your organization today.
Purpose This is a transaction layer package related to FlashBack Table for internal use only .... and yet execute is granted to PUBLIC. Apparently someone inside Oracle Corp. thinks unprivileged end-users should be able to perform flashback table.
AUTHID CURRENT_USER
Data Types CREATE OR REPLACE TYPE flashbacktblist AS VARRAY(100) OF VARCHAR2(261);
/

TYPE TMPTBCURTYPE IS REF CURSOR;
Dependencies
DBMS_ASSERT DBMS_SQL PLITBLM
DBMS_FBT_LIB FLASHBACKTBLIST  
Documented No
First Available 10.2
Security Model Owned by SYS with EXECUTE granted to PUBLIC
Source {ORACLE_HOME}/rdbms/admin/dbmstxin.sql
Subprograms
 
FBT_ANALYZE
Undocumented

Overload 1
dbms_fbt.fbt_analyze(
table_name    IN  VARCHAR2,
flashback_scn IN  NUMBER,
tmptbcur      OUT dbms_fbt.tmptbcurtype);
CREATE TABLE T1 (
testcol VARCHAR2(20))
ENABLE ROW MOVEMENT;

DECLARE
 rc dbms_fbt.tmptbcurtype;
BEGIN
  dbms_fbt.fbt_analyze('T1', dbms_flashback.get_system_change_number, rc);
END;
/
Overload 2 dbms_fbt.fbt_analyze(
table_name     IN  VARCHAR2,
flashback_time IN  TIMESTAMP,
tmptbcur       OUT dbms_fbt.tmptbcurtype);
CREATE TABLE T2 (
testcol VARCHAR2(20))
ENABLE ROW MOVEMENT;

DECLARE
 rc dbms_fbt.tmptbcurtype;
BEGIN
  dbms_fbt.fbt_analyze('T2', SYSTIMESTAMP, rc);
END;
/
 
FBT_DISCARD
Purge dbms_fbt.fbt_discard;
exec dbms_fbt.fbt_discard;
 
FBT_EXECUTE
Undocumented

Overload 1
dbms_fbt.fbt_execute(
table_names   IN sys.flashbacktblist,
flashback_scn IN NUMBER);
CREATE TABLE t3 (
testcol DATE)
ENABLE ROW MOVEMENT;

DECLARE
 n  NUMBER := dbms_flashback.get_system_change_number;
 tl sys.flashbacktblist;
BEGIN
  tl := sys.flashbacktblist();
  tl.EXTEND;
  tl(1) := 'T3';
  dbms_fbt.fbt_execute(tl, n);
END;
/
Overload 2 dbms_fbt.fbt_execute(
table_names    IN sys.flashbacktblist,
flashback_time IN TIMESTAMP);
CREATE TABLE t4 (
testcol DATE)
ENABLE ROW MOVEMENT;

DECLARE
 fblist sys.flashbacktblist;
BEGIN
  fblist := sys.flashbacktblist('T4');
  dbms_fbt.fbt_execute(fblist, SYSTIMESTAMP);
END;
/

Related Topics
Built-in Functions
Built-in Packages
FLASHBACK
FLASHBACK TABLE
What's New In 21c
What's New In 23c

Morgan's Library Page Footer
This site is maintained by Dan Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2023 Daniel A. Morgan All Rights Reserved
  DBSecWorx