Which has the higher priority in your organization: Deploying a new database or securing the ones you already have?
Looking for a website, and resources, dedicated solely to securing Oracle databases? Check out DBSecWorx.
Purpose
Recovery Appliance (Recovery Appliance) Backup and Recovery support utility.
AUTHID
DEFINER
Constants
Name
Data Type
Value
AM_DEBUG Constants
AM_DEBUG_ON
NUMBER
1
AM_DEBUG_LOW
NUMBER
2
AM_DEBUG_MED
NUMBER
3
AM_DEBUG_HIGH
NUMBER
4
AM_DEBUG_OFF
NUMBER
5
Chunk Constants
CHUNK_NOT_SHARED
NUMBER
1
CHUNK_OWNER
NUMBER
2
CHUNK_DEPENDENT
NUMBER
1
KBRS Constants
KBRS_SAVE_INFO_POOL
NUMBER
0
KBRS_SAVE_INFO_CFFILE
NUMBER
1
KBRS_SAVE_INFO_SPFILE
NUMBER
2
KBRSOPER Constants
KBRSOPER_CLSPOST
NUMBER
1
KBRSOPER_POST
NUMBER
2
KBRSOPER_RELEASE
NUMBER
3
KBRSOPER_COPY
NUMBER
4
KBRSOPER_DEL
NUMBER
5
KBRSOPER_NEWFILE
NUMBER
6
KBRSOPER_NEXT
NUMBER
7
KBRSOPER_DONE
NUMBER
8
KBRSPLBLD Constants
KBRSPLBLD_PIECE
NUMBER
1
KBRSPLBLD_PURGE
NUMBER
2
KBRSPLBLD_SMALLPURGE
NUMBER
3
KBRSPLBLD_OPTPURGE
NUMBER
4
KBRSPLBLD_ALLPURGE
NUMBER
5
KBRSPLBLD_OPTIMIZE
NUMBER
6
KBRSPLBLD_DUPPURGE
NUMBER
7
BRSPLBLD_ORIGPIECE
NUMBER
8
BRSPLBLD_FULLPIECE
NUMBER
10
KBRSPLBLD_MOVPURGE
NUMBER
11
KBRSPLBLD_BADMETA1
NUMBER
101
KBRSPLBLD_BADMETA2
NUMBER
102
KBRSPLBLD_CLEANUP
NUMBER
103
KBRSPLBLD_INITPOP
NUMBER
104
KBRSPLBLD_ADDPOP
NUMBER
105
KBRSPLBLD_USERINS
NUMBER
106
KBRSPLBLD_USERDEL
NUMBER
107
KBRSPLBLD_REBUILD
NUMBER
108
KBRSPLBLD_REPAIR
NUMBER
109
VDBF Constants
VBDF_COMPLETE
NUMBER
1
VBDF_BUILDING
NUMBER
2
VBDF_ABORT
NUMBER
3
VBDF_FIN_NOBP
NUMBER
4
VBDF_CLEANUP
NUMBER
5
VBDF_REPOPULATE
NUMBER
6
VBDF_OBSOLETE
NUMBER
7
VBDF_REPAIR
NUMBER
8
Miscellaneous Constants
BIGNUM
NUMBER
1E40
KSCNINV
NUMBER
281474976710655
Data Types
TYPE blklst IS TABLE OF blocks%ROWTYPE INDEX BY BINARY_INTEGER;
type nolst IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
type nmlst IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
type dtlst IS TABLE OF date INDEX BY BINARY_INTEGER;
TYPE collapse_bin_t IS RECORD (
blkrank NUMBER,
blockno NUMBER,
scn NUMBER,
chunkno NUMBER,
used NUMBER,
coffset NUMBER,
endblk NUMBER);
TYPE collapse_blocks_c IS REF CURSOR RETURN collapse_bin_t;
TYPE collapse_b_t IS RECORD (
blkrank N UMBER, -- 1 for restore else blockno rank
blockno NUMBER, -- min
chunkno NUMBER,
numblks NUMBER, -- count
coffset NUMBER, -- min
numbytes NUMBER); -- sum(used)
TYPE collapse_blocks_t IS TABLE OF collapse_b_t;
TYPE gaplst IS TABLE OF collapse_bin_t INDEX BY BINARY_INTEGER;
-- The SQL for this package was extracted from recover.bsq and executed independently
-- from a SQL*Plus prompt. Not having an Oracle Recovery Appliance handy some a small
-- amount of the source was commented out to obtain a successful compilation.
SQL> @c:\stage\dbms_ra_pool.sql
SP2-0808: Package created with compilation warnings
SQL> show err
Errors for PACKAGE DBMS_RA_POOL:
LINE/COL ERROR
-------- -----------------------------------------------------------------
1/1 PLW-05018: unit DBMS_RA_POOL omitted optional AUTHID clause;
default value DEFINER used
68/20 PLW-06026: package specification exposes global variable S_FIXUP_UNORD
69/18 PLW-06026: package specification exposes global variable S_BLOCKS_DIAG
86/27 PLW-07203: parameter 'P_LOC' may benefit from use of the NOCOPY compiler hint
190/29 PLW-07203: parameter 'P_OUTPUT' may benefit from use of the NOCOPY compiler hint
330/14 PLW-06026: package specification exposes global variable S_GAP
331/14 PLW-06026: package specification exposes global variable S_CG
333/23 PLW-06026: package specification exposes global variable S_DFTOTALBLOCKS
334/23 PLW-06026: package specification exposes global variable S_SIG_GAPCORRUPTION
dbms_ra_pool.begin_df(
p_vbkey IN OUT NUMBER,
p_ckpid IN OUT NUMBER,
p_dbkey IN NUMBER,
p_fno IN NUMBER,
p_blocks IN NUMBER,
p_incrscn IN NUMBER,
p_crescn IN NUMBER,
p_crestamp IN NUMBER,
p_rstscn IN NUMBER,
p_rststamp IN NUMBER,
p_pluscn IN NUMBER,
p_prlscn IN NUMBER,
p_prltstamp IN NUMBER,
p_dfkey OUT NUMBER,
p_dbinckey OUT NUMBER,
p_unorderid OUT NUMBER,
p_prvmaxscn OUT NUMBER,
p_firstblk IN NUMBER,
p_lastblk IN NUMBER);
dbms_ra_pool.build_read_plan(
p_dbkey IN NUMBER,
p_vbkey IN NUMBER,
p_dfkey IN NUMBER,
p_bufsize IN NUMBER,
p_type IN NUMBER,
p_chunks IN NUMBER,
p_stored OUT NUMBER);
dbms_ra_pool.collapse(
p_dfkey IN NUMBER,
p_vbkey IN NUMBER,
p_firstblk IN NUMBER,
p_lastblk IN NUMBER,
i_cur IN sys.dbms_ra_pool.collapse_bin_t)
RETURN sys.dbms_ra_pool.collapse_blocks_t;
dbms_ra_pool.end_df(
p_vbkey IN NUMBER,
p_dfkey IN NUMBER,
p_relfno IN NUMBER,
p_ckpscn IN NUMBER,
p_absscn IN NUMBER,
p_repair IN BOOLEAN,
p_cmpvsn IN NUMBER,
p_issft IN NUMBER,
p_unorder IN NUMBER
p_newblk_bytes IN NUMBER,
p_dupblk_bytes IN NUMBER,
p_match IN RAW,
p_replev IN NUMBER);
dbms_ra_pool.get_df_pdbinc(
p_dbinckey IN NUMBER,
p_dfkey IN NUMBER,
p_scn IN NUMBER)
RETURN NUMBER;
-- demo code from recover.bsq
BEGIN
trc('partition_lock_bp: bpkey ' || p_bpkey);
FOR i IN (SELECT DISTINCT df_key, ORA_HASH(df_key, 1023, 0) + 1 hash
FROM bp JOIN bdfdf USING(bs_key)
WHERE bp_key = p_bpkey
AND pdbinc_key =
dbms_ra_pool.get_df_pdbinc(dbinc_key, df_key, ckp_scn)
ORDER BY df_key) LOOP
dbms_ra_scheduler.get_lock(dbms_ra_scheduler.LOCK_PURGE, i.hash, p_lock_mode);
END LOOP;
END partition_lock_bp;
SELECT MIN(task_id)
INTO s_pending_interrupt
FROM task JOIN bp ON(param_num2 = bp_key)
JOIN bdfdf bf USING(bs_key)
WHERE task_type = TASK_RESTORE
AND bf.pdbinc_key =
dbms_ra_pool.get_df_pdbinc(bf.dbinc_key, bf.df_key, bf.ckp_scn)
AND state IN (STATE_RUNNING, STATE_EXECUTABLE,
STATE_TASK_WAIT)
AND ora_hash(bf.df_key, 1023, 0) + 1 = l_partition_pos;
dbms_ra_pool.planDF(
p_type IN NUMBER,
p_dfkey IN NUMBER,
p_vbkey IN NUMBER,
p_res IN NUMBER,
p_locked IN BOOLEAN,
p_must IN BOOLEAN,
p_plock IN BOOLEAN);
-- demo code from recover.bsq
BEGIN
dbms_ra_pool.planDF(l_ptype, l_dfkey, l_vbkeys(i));
EXCEPTION
WHEN OTHERS THEN
save_error;
dbms_ra_misc.unlock(dbms_ra_misc.KEY_BP, l_bpkey);
RAISE;
END;
dbms_ra_pool.prep_piece_read(
p_inbpkey IN NUMBER,
p_loc OUT VARCHAR2,
p_dbkey OUT NUMBER,
p_db_id OUT NUMBER,
p_dfkey OUT NUMBER,
p_vbkey OUT NUMBER,
p_blksize OUT NUMBER,
p_original OUT NUMBER,
p_read_bufs OUT NUMBER,
p_read_size OUT NUMBER,
p_read_waste OUT NUMBER,
p_rslvr_flags OUT NUMBER,
p_cmpvsn OUT NUMBER,
p_firstsec OUT NUMBER,
p_secsz OUT NUMBER,
p_seccnt OUT NUMBER);
dbms_ra_pool.prep_read(
p_type IN NUMBER,
p_bskey IN NUMBER,
p_vbkey IN NUMBER,
p_dfkey IN NUMBER,
p_blksize OUT NUMBER,
p_read_bufs OUT NUMBER,
p_read_size OUT NUMBER,
p_read_waste OUT NUMBER,
p_rslvr_flags OUT NUMBER,
p_cmpvsn OUT NUMBER);
dbms_ra_pool.repairChunks(
p_dbkey IN NUMBER,
p_dfkey IN NUMBER);
-- demo code from recover.bsq
IF l_savepoint <> -77 THEN
dbms_ra_pool.repairChunks(p_task_rec.db_key, p_task_rec.param_num1);
check_for_interrupt(-77);
END IF;
dbms_ra_pool.repair_df(
p_vbkey IN OUT NUMBER,
p_newvb IN OUT NUMBER,
p_dbkey IN NUMBER,
p_fno IN NUMBER,
p_blocks IN NUMBER,
p_relfno IN NUMBER,
p_crescn IN NUMBER,
p_crestamp IN NUMBER,
p_rstscn IN NUMBER,
p_rststamp IN NUMBER,
p_startscn IN NUMBER,
p_ckpscn IN NUMBER,
p_pluscn IN NUMBER,
p_prlscn IN NUMBER,
p_prltstamp IN NUMBER,
p_cmpvsn IN NUMBER,
p_issft IN NUMBER,
p_firstblk IN NUMBER,
p_lastblk IN NUMBER,
p_replev IN NUMBER,
o_dfkey OUT NUMBER,
o_ckpid OUT NUMBER);
dbms_ra_pool.validate_df_key(
p_dbkey IN NUMBER,
p_dfkey IN NUMBER,
p_sort IN NUMBER,
p_vbkey IN NUMBER,
p_allblks IN BOOLEAN,
p_ext IN BOOLEAN,
p_output OUT VARCHAR2);
-- demo code from recover.bsq
LOOP
dbms_ra_pool.validate_df_key(p_dbkey, f.df_key, l_sort, p_vbkey,
dbms_ra_pool.s_blocks_diag, p_deb_ext, l_output);
IF l_output IS NOT NULL THEN
dbms_output.put_line(l_output);
trc(l_output);
END IF;
END LOOP;