10 Creating a DBFS Store

This chapter contains this topic:

Package DBMS_DBFS_CONTENT_SPI

The Oracle Database File System Content Store Provider Interface (DBFS Content SPI) describes an internal contract between the implementation of the DBFS Content API, package body DBMS_DBFS_CONTENT, and individual content providers.

Because PL/SQL does not allow a compile-time declarative type conformation between package signatures, store providers must informally conform to the SPI. This means that you must implement the SPI using a package that at minimum contains all of the methods specified by DBMS_DBFS_CONTENT_SPI, with the same method signatures and semantics. These provider packages may implement other methods and expose other interfaces, but the DBFS Content API itself does not use these interfaces.

Because the Provider SPI is merely a contract specification, there is no package body for DBMS_DBFS_CONTENT_SPI, and it is not possible to actually invoke any methods using this package.

The SPI references various elements (constants, types, exceptions) defined by the DBFS Content API (package DBMS_DBFS_CONTENT).

Additionally, there is an almost one-to-one correspondence between the client API exported by the DBFS Content API and the Content API that the DBFS Content API itself expects to work against.

The main distinction in the method-naming conventions is that all path name references are always store-qualified, that is, the notion of mount points and full absolute path names have been normalized and converted to store-qualified path names by the DBFS Content API before it invokes any of the Provider SPI methods.

Because the DBFS Content API and Provider SPI is a one-to-many pluggable architecture, the DBFS Content API uses dynamic SQL to invoke methods in the Provider SPI; this may lead to runtime errors.

There are no explicit initial or final methods to indicate when the DBFS Content API plugs and unplugs a particular Provider SPI. Provider SPIs must be able to auto-initialize themselves at any SPI entry point.

See Also: