Oracle DBMS_DBFS_CONTENT_SPI
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 Private types and constants tore providers must conform to. The SPI is not a client-side API and serves as a private contract between the implementation of the DBFS API and various stores that wish to be pluggable into it.

The DBFS API defines client-visible behavior (normal and exceptional) of various store operations, while allowing different stores to implement as rich a set of features as they choose. The API allows stores to self-describe their capabilities and allows intelligent client applications to tune their behavior based on these capabilities (rather than hard-code logic specific to stores identified by name or by implementation).

The SPI has 2 space usage methods: "spaceUsage()" and "spaceUsageFull()". The difference between the two is that the latter function should implement a "bulk" API ---i.e. the ability to query and aggregate space usage information for all stores specified as the "propvalue" fields of the "store_names" property list (the other fields of the property list can be ignored). If the SPI does not support the "bulk" aggregation API, the DBFS API will itself do the necessary iteration and aggregation, however, at the risk of inaccurate data due to potential double-counting.
AUTHID DEFINER
Dependencies
DBMS_DBFS_CONTENT_CONTEXT_T DBMS_DBFS_CONTENT_PROPERTIES_T DBMS_DBFS_CONTENT_RAW_T
DBMS_DBFS_CONTENT_LIST_ITEMS_T    
Documented Yes: Packages and Types Reference
Exceptions
Error Code Reason
ORA-00054 Resource busy and acquire with NOWAIT specified
ORA-00060 Deadlock detected
First Available Not known but in 11gR2
Security Model Owned by SYS with no privileges granted
Source {ORACLE_HOME}/rdbms/admin/dbmscapi.sql
Subprograms
 
CHECKACCESS
Undocumented dbms_dbfs_content_spi.checkAccess(
store_name IN VARCHAR2,
path       IN VARCHAR2,
pathtype   IN INTEGER,
operation  IN VARCHAR2,
principal  IN VARCHAR2)
return INTEGER;
TBD
 
CREATEDIRECTORY
Undocumented dbms_dbfs_content_spi.createDirectory(
store_name IN            VARCHAR2,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
prop_flags IN            INTEGER,
recurse    IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
CREATEFILE
Undocumented dbms_dbfs_content_spi.createFile(
store_name IN            VARCHAR2,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
content IN    OUT NOCOPY BLOB,
prop_flags IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
CREATEGETATTRVIEW
Providers that are willing/able to create a fastpath lookup view (whose structure conforms to the schema of "dbms_fuse.dir_entry_t") should define "createGetattrView()" and "dropGetattrView()" methods, and create/drop the underlying view as needed. dbms_dbfs_content_spi.createGetAttrView(
store_name IN         VARCHAR2,
ctx        IN         dbms_dbfs_content_context_t,
view_name  OUT NOCOPY VARCHAR2);
TBD
 
CREATELINK
Undocumented dbms_dbfs_content_spi.createLink(
store_name IN            VARCHAR2,
srcPath    IN            VARCHAR2,
dstPath    IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
prop_flags IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
CREATEREFERENCE
Undocumented dbms_dbfs_content_spi.createReference(
store_name IN            VARCHAR2,
srcPath    IN            VARCHAR2,
dstPath    IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
prop_flags IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
DELETECONTENT
Delete Store Content dbms_dbfs_content_spi.deleteContent(
store_name  IN VARCHAR2,
contentID   IN RAW,
filter      IN VARCHAR2,
soft_delete IN INTEGER,
ctx         IN dbms_dbfs_content_context_t);
TBD
 
DELETEDIRECTORY
Delete Store Directory dbms_dbfs_content_spi.deleteDirectory(
store_name  IN VARCHAR2,
path        IN VARCHAR2,
filter      IN VARCHAR2,
soft_delete IN INTEGER,
recurse     IN INTEGER,
ctx         IN dbms_dbfs_content_context_t);
TBD
 
DELETEFILE
Delete Store File dbms_dbfs_content_spi.deleteFile(
store_name  IN VARCHAR2,
path        IN VARCHAR2,
filter      IN VARCHAR2,
soft_delete IN INTEGER,
ctx         IN dbms_dbfs_content_context_t);
TBD
 
DROPGETATTRVIEW
Drop a Get Attributes view dbms_dbfs_content_spi.dropGetAttrView(
store_name IN         VARCHAR2,
view_name  OUT NOCOPY VARCHAR2);
TBD
 
GETFEATURES
Undocumented dbms_dbfs_content_spi.getFeatures(store_name IN VARCHAR2)
RETURN INTEGER;
TBD
 
GETPATH
Undocumented

Overload 1
dbms_dbfs_content_spi.getPath(
store_name IN            VARCHAR2,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
content       OUT NOCOPY BLOB,
item_type     OUT        INTEGER,
prop_flags IN            INTEGER,
forUpdate  IN            INTEGER,
deref      IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
Overload 2 dbms_dbfs_content_spi.getPath(
store_name IN            VARCHAR2,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
amount     IN OUT        NUMBER,
offset     IN            NUMBER,
buffer        OUT NOCOPY RAW,
prop_flags IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
Overload 3 dbms_dbfs_content_spi.getPath(
store_name IN            VARCHAR2,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
amount     IN OUT        NUMBER,
offset     IN            NUMBER,
buffers       OUT NOCOPY dbms_dbfs_content_RAW_t,
prop_flags IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
GETPATHBYSTOREID
Lookup pathnames by (store_name, std_guid) or (store_mount, std_guid) tuples dbms_dbfs_content_spi.getPathByStoreID(
store_name IN VARCHAR2,
guid       IN INTEGER)
RETURN VARCHAR2;
TBD
 
GETPATHNOWAIT
Returns the path or, if locked, returns ORA-00054 dbms_dbfs_content_spi.getPathNoWait(
store_name IN            VARCHAR2,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
content       OUT NOCOPY BLOB,
item_type     OUT        INTEGER,
prop_flags IN            INTEGER,
deref      IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
GETSTOREID
RETURNs a provider specific store identifier dbms_dbfs_content_spi.getStoreID(store_name IN VARCHAR2)
RETURN NUMBER;
TBD
 
GETVERSION
RETURNs the version of a store based on a standard naming convention dbms_dbfs_content_spi.getVersion(store_name IN VARCHAR2)
RETURN VARCHAR2;
TBD
 
ISPATHLOCKED
Undocumented dbms_dbfs_content_spi.isPathLocked(
store_name IN     VARCHAR2,
path       IN     VARCHAR2,
who        IN     VARCHAR2,
lock_type  IN OUT INTEGER,
ctx        IN     dbms_dbfs_content_context_t);
TBD
 
LIST
Undocumented dbms_dbfs_content_spi.list(
store_name IN VARCHAR2,
path       IN VARCHAR2,
filter     IN VARCHAR2,
recurse    IN INTEGER,
ctx        IN dbms_dbfs_content_context_t)
RETURN dbms_dbfs_content_list_items_t pipelined;
TBD
 
LISTCURSOR
Undocumented dbms_dbfs_content_spi.listCursor(
store_name IN VARCHAR2,
mnt_prefix IN VARCHAR2,
path       IN VARCHAR2,
withProps  IN INTEGER,
doSort     IN INTEGER,
doFts      IN INTEGER,
doBulk     IN INTEGER,
ctx        IN dbms_dbfs_content_context_t)
RETURN INTEGER;
TBD
 
LOCKPATH
Undocumented

Overload 1
dbms_dbfs_content_spi.lockpath(
store_name IN VARCHAR2,
path       IN VARCHAR2,
lock_type  IN INTEGER,
lock_data  IN VARCHAR2,
ctx        IN dbms_dbfs_content_context_t);
TBD
Overload 2 dbms_dbfs_content_spi.lockPath(
store_name     IN VARCHAR2,
path           IN VARCHAR2,
who            IN VARCHAR2,
lock_type      IN INTEGER,
waitForRowLock IN INTEGER,
ctx            IN dbms_dbfs_content_context_t);
TBD
 
MOVEPATH
Undocumented dbms_dbfs_content_spi.movePath(
store_name IN            VARCHAR2,
oldPath    IN            VARCHAR2,
newPath    IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
PURGEALL
Undocumented dbms_dbfs_content_spi.purgeAll(
store_name IN VARCHAR2,
path       IN VARCHAR2,
filter     IN VARCHAR2,
ctx        IN dbms_dbfs_content_context_t);
TBD
 
PURGEPATH
Undocumented dbms_dbfs_content_spi.purgePath(
store_name IN VARCHAR2,
path       IN VARCHAR2,
filter     IN VARCHAR2,
ctx        IN dbms_dbfs_content_context_t);
TBD
 
PUTPATH
Undocumented

Overload 1
dbms_dbfs_content_spi.putPath(
store_name IN            VARCHAR2,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
content    IN OUT NOCOPY BLOB,
item_type     OUT        INTEGER,
prop_flags IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
Overload 2 dbms_dbfs_content_spi.putPath(
store_name IN            VARCHAR2,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
amount     IN            NUMBER,
offset     IN            NUMBER,
buffer     IN            RAW,
prop_flags IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
Overload 3 dbms_dbfs_content_spi.putPath(
store_name IN            VARCHAR2,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
written       OUT        NUMBER,
offset     IN            NUMBER,
buffers    IN            dbms_dbfs_content_RAW_t,
prop_flags IN            INTEGER,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
RENAMEPATH
Undocumented dbms_dbfs_content_spi.renamePath(
store_name IN            VARCHAR2,
oldPath    IN            VARCHAR2,
newPath    IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
RESTOREALL
Undocumented dbms_dbfs_content_spi.restoreAll(
store_name IN VARCHAR2,
path       IN VARCHAR2,
filter     IN VARCHAR2,
ctx        IN dbms_dbfs_content_context_t);
TBD
 
RESTOREPATH
Undocumented dbms_dbfs_content_spi.restorePath(
store_name IN VARCHAR2,
path       IN VARCHAR2,
filter     IN VARCHAR2,
ctx        IN dbms_dbfs_content_context_t);
TBD
 
SEARCH
Undocumented dbms_dbfs_content_spi.search(
store_name IN VARCHAR2,
path       IN VARCHAR2,
filter     IN VARCHAR2,
recurse    IN INTEGER,
ctx        IN dbms_dbfs_content_context_t)
RETURN dbms_dbfs_content_list_items_t pipelined;
TBD
 
SETPATH
Undocumented dbms_dbfs_content_spi.setPath(
store_name IN            VARCHAR2,
contentID  IN            RAW,
path       IN            VARCHAR2,
properties IN OUT NOCOPY dbms_dbfs_content_properties_t,
ctx        IN            dbms_dbfs_content_context_t);
TBD
 
SPACEUSAGE
Clients can query filesystem space usage statistics via the"spaceUsage()" method. Store providers, IN turn, are expected to support at least the "spaceUsage()" method for their stores (and to make a best effort determination of space usagem esp. if the store consists of multiple segments scattered across multiple tablespaces/datafiles/disk-groups, etc.).

Overload 1
dbms_dbfs_content_spi.spaceUsage(
store_name IN  VARCHAR2,
blksize    OUT INTEGER,
tbytes     OUT INTEGER,
fbytes     OUT INTEGER,
nfile      OUT INTEGER,
ndir       OUT INTEGER,
nlink      OUT INTEGER,
nref       OUT INTEGER);
TBD
Overload 2 dbms_dbfs_content_spi.spaceUsage(
store_name  IN  VARCHAR2,
blksize     OUT INTEGER,
tbytes      OUT INTEGER,
fbytes      OUT INTEGER,
nfile       OUT INTEGER,
ndir        OUT INTEGER,
nlink       OUT INTEGER,
nref        OUT INTEGER,
useEstimate IN  INTEGER);
TBD
 
SPACEUSAGEFULL
Similar to SpaceUsage this proc should implement a "bulk" API, i.e. the ability to query and aggregate space usage information for all stores specified as the "propvalue" fields of the "store_names" property list (the other fields of the property list can be ignored).

Overload 1
dbms_dbfs_content_spi.spaceUsageFull(
store_names IN  dbms_dbfs_content_properties_t,
blksize     OUT INTEGER,
tbytes      OUT INTEGER,
fbytes      OUT INTEGER,
nfile       OUT INTEGER,
ndir        OUT INTEGER,
nlink       OUT INTEGER,
nref        OUT INTEGER);
TBD
Overload 2 dbms_dbfs_content_spi.spaceUsageFull(
store_names IN  dbms_dbfs_content_properties_t,
blksize     OUT INTEGER,
tbytes      OUT INTEGER,
fbytes      OUT INTEGER,
nfile       OUT INTEGER,
ndir        OUT INTEGER,
nlink       OUT INTEGER,
nref        OUT INTEGER,
useEstimate IN  INTEGER);
TBD
 
UNLOCKPATH
Undocumented

Overload 1
dbms_dbfs_content_spi.unlockPath(
store_name IN VARCHAR2,
path       IN VARCHAR2,
ctx        IN dbms_dbfs_content_context_t);
TBD
Overload 2 dbms_dbfs_content_spi.unlockPath(
store_name     IN VARCHAR2,
path           IN VARCHAR2,
who            IN VARCHAR2,
waitForRowLock IN INTEGER,
ctx            IN dbms_dbfs_content_context_t);
TBD

Related Topics
Built-in Functions
Built-in Packages
DBMS_DBFS_CONTENT
DBMS_DBFS_CONTENT_ADM
DBMS_DBFS_HS
DBMS_DBFS_SFS
DBMS_DBFS_SFS_ADMIN
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