Which has the higher priority in your organization: Deploying a new database or securing the ones you already have?
Looking for a website, and resources, dedicated solely to securing Oracle databases? Check out DBSecWorx.
dbms_prvtrmie.append_boolean_arg(
sql_string IN OUT VARCHAR2,
field IN VARCHAR2,
value IN BOOLEAN,
default_value IN BOOLEAN,
prepend_comma IN BOOLEAN);
dbms_prvtrmie.append_string_arg(
sql_string IN OUT VARCHAR2
field IN VARCHAR2,
value IN VARCHAR2,
replace_quotes IN BOOLEAN,
double_quote IN BOOLEAN,
prepend_comma IN BOOLEAN);
dbms_prvtrmie.get_consumer_grp(
bjid IN NUMBER,
cg OUT sys.resource_consumer_group$);
This is the first time we have ever seen this behavior. Note that the data dictionary indicates that sys.resource_consumer_group$ is a PL/SQL record.
POSITION ARGUMENT_NAME IN_OUT DATA_TYPE TYPE
--------- -------------- ------- ------------- ----------------------------
1 objid IN NUMBER
2 cg OUT PL/SQL RECORD sys.resource_consumer_group$
but the compilation fails as shown here:
DECLARE
cgOut sys.resource_consumer_group$;
BEGIN
dbms_prvtrmie.get_consumer_grp(1, cgOut);
dbms_output.put_line(cgOut.name);
END;
/
cgOut sys.resource_consumer_group$;
*
ERROR at line 2:
ORA-06550: line 2, column 8:
PLS-00488: 'SYS.RESOURCE_CONSUMER_GROUP$' must be a type
ORA-06550: line 0, column 0:
PL/SQL: Compilation unit analysis terminated
and a query of dba_objects shows the object to be a table not a PL/SQL record.
So how the package is compiled and valid is a mystery left for the future.
dbms_prvtrmie.get_group_mappings(
mapping_rule OUT sys.resource_group_mapping$
mapping_rule_cursor_open IN OUT PL/SQL BOOLEAN,
mapping_rule_found OUT PL/SQL BOOLEAN);
DECLARE
mrule sys.resource_group_mapping$; -- again this is a table ... not a type
mrco BOOLEAN := TRUE;
mrfnd BOOLEAN;
BEGIN
dbms_prvtrmie.get_group_mappings(mrule, mrco, mrfnd);
END;
/
dbms_prvtrmie.get_obj_grants(
grantee_name OUT VARCHAR2,
grantor_name OUT VARCHAR2,
consumer_group OUT VARCHAR2,
grant_option OUT BINARY_INTEGER,
state IN OUT BOOLEAN);
Undocumented but while it appears to give the correct answer as shown in the demo at right ... returns FALSE when asked about sys.obj$ so it is not using "SYS_MANAGED" to mean owned by SYS.
dbms_prvtrmie.is_sys_managed(objname IN VARCHAR2) RETURN BOOLEAN;
BEGIN
IF dbms_prvtrmie.is_sys_managed('C##UWCLASS.SERVERS') THEN
dbms_output.put_line('T');
ELSE
dbms_output.put_line('F');
END IF;
END;
/ F
dbms_prvtrmie.wrap_with_error_handling(
sql_string IN/OUT VARCHAR2
error1 IN NUMBER,
error2 IN NUMBER,
error3 IN NUMBER,
error4 IN NUMBER,
error5 IN NUMBER,
all_errors IN BOOLEAN);
This is positively brilliant. It may be undocumented and unsupported but we plan to start using it in a lot of the code we write for maintenance purposes (not in applications).