MINI MINI MANI MO
Rem
Rem $Header: rdbms/admin/dbmslobu.sql /main/9 2015/08/19 11:54:50 raeburns Exp $
Rem
Rem dbmslobu.sql
Rem
Rem Copyright (c) 2006, 2015, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem dbmslobu.sql - DBMS_LOBUTIL diagnostics package for 11globs
Rem
Rem DESCRIPTION
Rem DBMS_LOBUTIL diagnostics package for 11globs
Rem
Rem NOTES
Rem The new package DBMS_LOBUTIL is a container for diagnostic and
Rem utility functions and procedures specific to 11globs.
Rem
Rem Since diagnostic operations are not part of the standard programmatic
Rem APIs in DBMS_LOB, they are provided in a separate namespace to avoid
Rem clutter. The diagnostic API is also not quite as critical to document
Rem for end-users; its main use is for internal developer, QA, and DDR use
Rem (especially since it peeks into the internal structure of 11glob
Rem inodes and lobmaps).
Rem
Rem
Rem NOTE: DBMS_LOBUTIL is owned by SYS and should be executable only by
Rem suitably privileged users (since the package does not provide a
Rem standard programmatic API).
Rem
Rem
Rem NOTE: The API is subject to change, often in backwards-incompatible
Rem ways, depending on changes to the underlying data structures for
Rem 11glob inodes, and the diagnostic needs of the API.
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/dbmslobu.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/dbmslobu.sql
Rem SQL_PHASE: DBMSLOBU
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catpdbms.sql
Rem END SQL_FILE_METADATA
Rem
Rem MODIFIED (MM/DD/YY)
Rem raeburns 05/31/15 - use FORCE for types with only type dependents
Rem surman 12/29/13 - 13922626: Update SQL metadata
Rem surman 03/27/12 - 13615447: Add SQL patching tags
Rem xihua 12/16/10 - logminer support for deduplication
Rem kshergil 12/07/10 - deduplication metadata
Rem kkunchit 11/02/06 - overallocations, lobid
Rem kkunchit 10/02/06 - superchunks
Rem kkunchit 07/28/06 - Created
Rem
@@?/rdbms/admin/sqlsessstart.sql
-- dbms_lobutil_inode_t: inode information
CREATE OR REPLACE TYPE dbms_lobutil_inode_t AS OBJECT
(
lobid RAW(10), -- lobid
flags NUMBER, -- inode flags
length NUMBER, -- lob length
version NUMBER, -- lob version
extents NUMBER, -- #extents in inode
lhb NUMBER -- lhb dba
);
/
show errors;
-- dbms_lobutil_lobmap_t: lobmap information
CREATE OR REPLACE TYPE dbms_lobutil_lobmap_t AS OBJECT
(
lobid RAW(10), -- lobid
eflag NUMBER, -- extent flags
rdba NUMBER, -- extent header rdba
nblks NUMBER, -- #blocks in extent
offset NUMBER, -- offset of extent header
length NUMBER -- logical length of extent
);
/
show errors;
-- dbms_lobutil_lobextent_t: extent information
CREATE OR REPLACE TYPE dbms_lobutil_lobextent_t FORCE AS OBJECT
(
rid VARCHAR(32), -- rowid proxy
row# NUMBER, -- rownum proxy
lobid RAW(10), -- lobid
extent# NUMBER, -- extent# [0 .. ] for a lobmap
hole VARCHAR(1), -- is the extent a hole? (y/n)
cont VARCHAR(1), -- is the extent a superchunk continuation? (y/n)
over VARCHAR(1), -- is the chunk an overallocation? (y/n)
rdba NUMBER, -- rdba of extent start
nblks NUMBER, -- #blocks in extent
offset NUMBER, -- logical offset of extent start
length NUMBER -- logical length of extent
);
/
show errors;
-- dbms_lobutil_lobextents_t: expanded extent map information
CREATE OR REPLACE TYPE dbms_lobutil_lobextents_t
AS
TABLE OF dbms_lobutil_lobextent_t;
/
show errors;
-- dbms_lobutil_dedupset_t: deduplication set information
CREATE OR REPLACE TYPE dbms_lobutil_dedupset_t AS OBJECT
(
ismem VARCHAR(1), -- is this lob a member of a dedup set? (Y/N)
setid RAW(10), -- deduplication setid
lobid RAW(10), -- this lobid
nmem NUMBER, -- number of members in set
fhash RAW(80), -- full hash of set
phash RAW(80) -- prefix hash of set
);
/
show errors;
Rem
Rem DBMS_LOBUTIL package
Rem
CREATE OR REPLACE PACKAGE dbms_lobutil AS
-- inode query
FUNCTION getinode(lob_loc IN BLOB)
RETURN dbms_lobutil_inode_t DETERMINISTIC;
PRAGMA RESTRICT_REFERENCES(getinode, WNDS, RNDS, WNPS, RNPS, TRUST);
FUNCTION getinode(lob_loc IN CLOB CHARACTER SET ANY_CS)
RETURN dbms_lobutil_inode_t DETERMINISTIC;
PRAGMA RESTRICT_REFERENCES(getinode, WNDS, RNDS, WNPS, RNPS, TRUST);
-- lobmap query
FUNCTION getlobmap(lob_loc IN BLOB, n IN NUMBER)
RETURN dbms_lobutil_lobmap_t DETERMINISTIC;
PRAGMA RESTRICT_REFERENCES(getlobmap, WNDS, RNDS, WNPS, RNPS, TRUST);
FUNCTION getlobmap(lob_loc IN CLOB CHARACTER SET ANY_CS, n IN NUMBER)
RETURN dbms_lobutil_lobmap_t DETERMINISTIC;
PRAGMA RESTRICT_REFERENCES(getlobmap, WNDS, RNDS, WNPS, RNPS, TRUST);
-- extent expansion
FUNCTION getextents(crs IN sys_refcursor)
RETURN dbms_lobutil_lobextents_t DETERMINISTIC PIPELINED;
PRAGMA RESTRICT_REFERENCES(getextents, WNDS, RNDS, WNPS, RNPS, TRUST);
-- deduplication set query
FUNCTION getdedupset(lob_loc IN BLOB)
RETURN dbms_lobutil_dedupset_t DETERMINISTIC;
PRAGMA RESTRICT_REFERENCES(getdedupset, WNDS, RNDS, WNPS, RNPS, TRUST);
FUNCTION getdedupset(lob_loc IN CLOB CHARACTER SET ANY_CS)
RETURN dbms_lobutil_dedupset_t DETERMINISTIC;
PRAGMA RESTRICT_REFERENCES(getdedupset, WNDS, RNDS, WNPS, RNPS, TRUST);
-- copy the primary lob of a dedup set.
PROCEDURE copy_primary_dedup(lob_loc IN OUT NOCOPY BLOB,
phash IN RAW, fhash IN RAW,
scn IN NUMBER DEFAULT 0,
par IN NUMBER);
PROCEDURE copy_primary_dedup(lob_loc IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
phash IN RAW, fhash IN RAW,
scn IN NUMBER DEFAULT 0,
par IN NUMBER);
END;
/
show errors;
Rem
Rem grants
Rem
GRANT EXECUTE ON dbms_lobutil_inode_t TO PUBLIC;
GRANT EXECUTE ON dbms_lobutil_lobmap_t TO PUBLIC;
GRANT EXECUTE ON dbms_lobutil_lobextent_t TO PUBLIC;
GRANT EXECUTE ON dbms_lobutil_lobextents_t TO PUBLIC;
GRANT EXECUTE ON dbms_lobutil_dedupset_t TO PUBLIC;
GRANT EXECUTE ON dbms_lobutil TO PUBLIC;
Rem
Rem synonyms
Rem
CREATE OR REPLACE PUBLIC SYNONYM dbms_lobutil_inode_t
FOR sys.dbms_lobutil_inode_t
/
show errors;
CREATE OR REPLACE PUBLIC SYNONYM dbms_lobutil_lobmap_t
FOR sys.dbms_lobutil_lobmap_t
/
show errors;
CREATE OR REPLACE PUBLIC SYNONYM dbms_lobutil_lobextent_t
FOR sys.dbms_lobutil_lobextent_t
/
show errors;
CREATE OR REPLACE PUBLIC SYNONYM dbms_lobutil_lobextents_t
FOR sys.dbms_lobutil_lobextents_t
/
show errors;
CREATE OR REPLACE PUBLIC SYNONYM dbms_lobutil_dedupset_t
FOR sys.dbms_lobutil_dedupset_t
/
show errors;
CREATE OR REPLACE PUBLIC SYNONYM dbms_lobutil FOR sys.dbms_lobutil
/
show errors;
@?/rdbms/admin/sqlsessend.sql
OHA YOOOO