Oracle XS_NAMESPACE
Version 12.1.0.2

General Information
Library Note Morgan's Library Page Header
The Library is currently in the process of being upgraded from Oracle Database Version 12.1.0.2 to 12.2.0.1. Demos are being upgraded to reflect the new Container paradigm as well as EBR (Edition Based Redefinition) and may contain references to CDBs, PDBs, and other objects you may not be familiar with such as CDB_OBJECTS_AE: Welcome to 12c.

Also important ... there are rumors on the web about SPARC and Solaris being discontinued. Welcome to the age of fake news. There is absolutely not a byte of truth to these irresponsible rumors.
Purpose Real Application Security Namespace Management
AUTHID CURRENT_USER
Constants
Name Data Type Value
Attribute Events
NO_EVENT PLS_INTEGER 0
FIRSTREAD_EVENT PLS_INTEGER 1
UPDATE_EVENT PLS_INTEGER 2
FIRSTREAD_PLUS_UPDATE_EVENT PLS_INTEGER 3
Data Types -- the full DDL can be found in {ORACLE_HOME}/rdbms/admin/xsns.sql
CREATE OR REPLACE NONEDITIONABLE TYPE sys.xs$ns_attribute_list AS
VARRAY(1000) OF XS$NS_ATTRIBUTE;
/

 CREATE OR REPLACE NONEDITIONABLE TYPE sys.xs$list IS
VARRAY(1000) OF VARCHAR2(4000);
Dependencies
CDB_XS_NS_TEMPLATES XS$LIST XS_ADMIN_INT
CDB_XS_NS_TEMPLATE_ATTRIBUTES XS$NS_ATTRIBUTE XS_ADMIN_UTIL
PLITBLM XS$NS_ATTRIBUTE_LIST XS_NAMESPACE_INT
Documented Yes
First Available 12.1.0.2
Security Model Owned by SYS with EXECUTE granted to PUBLIC
Source {ORACLE_HOME}/rdbms/admin/xsns.sql

The DBA role is granted the ADMIN_ANY_SEC_POLICY, which allows it to administer namespace templates and attributes.
Subprograms
 
ADD_ATTRIBUTES
Add a attributes to the namespace template

Overload 1
xs_namespace.add_attributes(
template         IN VARCHAR2,
attribute        IN VARCHAR2,
default_value    IN VARCHAR2 := NULL,
attribute_events IN PLS_INTEGER := xs_namespace.no_event);
-- demo from Oracle RAS doc
BEGIN
  sys.xs_namespace.add_attributes('POAttrs', 'item_type', 'generic', xs_namespace.update_event);
  sys.xs_namespace.remove_attributes('POAttrs', 'item_type');
END;
Add a attributes to the namespace template

Overload 2
xs_namespace.add_attributes(
template  IN VARCHAR2,
attr_list IN xs$ns_attribute_list);
TBD
 
CREATE_TEMPLATE
Document creation API xs_namespace.create_template(
name        IN VARCHAR2,
attr_list   IN XS$NS_ATTRIBUTE_LIST := NULL,
schema      IN VARCHAR2             := NULL,
package     IN VARCHAR2             := NULL,
function    IN VARCHAR2             := NULL,
acl         IN VARCHAR2             := 'SYS.NS_UNRESTRICTED_ACL',
description IN VARCHAR2             := NULL);
-- based on demo from Oracle RAS doc
DECLARE
 attrlist xs$ns_attribute_list;
BEGIN
  attrlist := xs$ns_attribute_list();
  attrlist.extend(2);
  attrlist(1) := xs$ns_attribute('desc', 'general');
  attrlist(2) := xs$ns_attribute(name=>'item_no',
  attribute_events => xs_namespace.firstread_event);

  sys.xs_namespace.create_template(POAttrs, attrlist, 'SH', 'order','fulfillment', 'sys.ns_unrestricted_acl', 'Purchase Order');
END;
/

col acl format a20
col description format a42

SELECT name, acl, description
FROM cdb_xs_ns_templates;

col attribute format a23
col namespace format a15
col default_value format a20

SELECT *
FROM cdb_xs_ns_template_attributes
 
DELETE_TEMPLATE
Delete the namespace template xs_namespace.delete_template(
template      IN VARCHAR2,
delete_option IN PLS_INTEGER := xs_admin_util.default_option);
exec xs_namespace.delete_template('POAttrs', xs_admin_util.cascade_option);
 
REMOVE_ATTRIBUTES
Remove all attributes to the namespace template

Overload 1
xs_namespace.remove_attributes(template IN VARCHAR2);
exec sys.xs_namespace.remove_attributes('POAttrs');
Remove a single attribute from the namespace template

Overload 2
xs_namespace.remove_attributes(
template  IN VARCHAR2,
attribute IN VARCHAR2);
See ADD_ATTRIBUTES Demo Above
Remove a list of attribute from the namespace template

Overload 3
xs_namespace.remove_attributes(
template  IN VARCHAR2,
attr_list IN XS$LIST);
TBD
 
SET_DESCRIPTION
Set namespace description xs_namespace.set_description(
template    IN VARCHAR2,
description IN VARCHAR2);
exec sys.xs_namespace.set_description('POAttrs','Purchase Order Attributes');
 
SET_HANDLER
Set handler for attribute events xs_namespace.set_handler(
template IN VARCHAR2,
schema   IN VARCHAR2,
package  IN VARCHAR2,
function IN VARCHAR2);
exec sys.xs_namespace.set_handler(POAttrs', 'SH', 'orders', 'populate_po');

Related Topics
DBMS_XS_PRINCIPALS
DBMS_XS_SESSIONS_FFI
DBMS_XS_SIDP
DBMS_XS_SYSTEM
DBMS_XS_SYSTEM_FFI
Packages
XS_ACL
XS_ADMIN_UTIL
XS_DATA_SECURITY
XS_DATA_SECURITY_UTIL
XS_DIAG
XS_DIAG_INT
XS_NAMESPACE_INT
XS_SECURITY_CLASS
What's New In 12cR1
What's New In 12cR2

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-2017 Daniel A. Morgan All Rights Reserved