应用
要将 Application 与数据库中的某些内容相关联,有三个主要部分:
应用程序权限: 应用程序权限描述权限,如 SELECT,INSERT,UPDATE,DELETE,…应用程序权限可以概括为聚合权限。
XS$PRIVILEGE(
    name=>'privilege_name'
    [, implied_priv_list=>XS$NAME_LIST('"SELECT"', '"INSERT"', '"UPDATE"', '"DELETE"')]
)
XS$PRIVILEGE_LIST(
    XS$PRIVILEGE(...),
    XS$PRIVILEGE(...),
    ...
);
申请用户:
简单应用用户:
BEGIN 
    SYS.XS_PRINCIPAL.CREATE_USER('user_name'); 
END;
直接登录申请用户:
BEGIN 
    SYS.XS_PRINCIPAL.CREATE_USER(name => 'user_name', schema => 'schema_name');
END;
BEGIN 
    SYS.XS_PRINCIPAL.SET_PASSWORD('user_name', 'password'); 
END;
CREATE PROFILE prof LIMIT 
    PASSWORD_REUSE_TIME 1/4440 
    PASSWORD_REUSE_MAX 3 
    PASSWORD_VERIFY_FUNCTION Verify_Pass;
BEGIN 
    SYS.XS_PRINCIPAL.SET_PROFILE('user_name', 'prof'); 
END;
BEGIN 
    SYS.XS_PRINCIPAL.GRANT_ROLES('user_name', 'XSONNCENT');
END;
(可选的:)
BEGIN 
    SYS.XS_PRINCIPAL.SET_VERIFIER('user_name', '6DFF060084ECE67F', XS_PRINCIPAL.XS_SHA512“); 
END;
应用角色:
常规应用角色:
DECLARE
    st_date TIMESTAMP WITH TIME ZONE;
    ed_date TIMESTAMP WITH TIME ZONE;
BEGIN
    st_date := SYSTIMESTAMP;
    ed_date := TO_TIMESTAMP_TZ('2013-06-18 11:00:00 -5:00','YYYY-MM-DD HH:MI:SS');
    SYS.XS_PRINCIPAL.CREATE_ROLE
        (name => 'app_regular_role',
        enabled => TRUE,
        start_date => st_date,
        end_date => ed_date);
END;
动态应用程序角色:(基于身份验证状态启用动态)
BEGIN
    SYS.XS_PRINCIPAL.CREATE_DYNAMIC_ROLE
        (name => 'app_dynamic_role',
        duration => 40,
        scope => XS_PRINCIPAL.SESSION_SCOPE);
END;
预定义的应用程序角色:
定期:
- XSPUBLIC
- XSBYPASS
- XSSESSIONADMIN
- XSNAMESPACEADMIN
- XSPROVISIONER
- XSCACHEADMIN
- XSDISPATCHER
动态:(取决于应用程序用户的身份验证状态)
- DBMS_AUTH:(直接登录或其他数据库身份验证方法)
- EXTERNAL_DBMS_AUTH:(直接登录或其他数据库身份验证方法,用户是外部的)
- DBMS_PASSWD:(用密码直接登录)
- MIDTIER_AUTH:(通过中间层应用程序进行身份验证)
- XSAUTHENTICATED:(直接或中间层申请)
- XSSWITCH:(用户从代理用户切换到应用程序用户)