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.
Purpose
Enables an application to manage services and sessions connected via a service name.
AUTHID
DEFINER
Constants
Name
Data Type
Value
Calling Arguments
GOAL_NONE
NUMBER
0
GOAL_SERVICE_TIME
NUMBER
1
GOAL_THROUGHPUT
NUMBER
2
Connection Balancing Goal
CLB_GOAL_SHORT (load balance CPU)
NUMBER
1
CLB_GOAL_LONG (load balance connections)
NUMBER
2
Disconnect Session
POST_TRANSACTION
NUMBER
0
IMMEDIATE
NUMBER
1
NOREPLAY
NUMBER
2
Other Attributes
ALL_INSTANCES
VARCHAR2(2)
'*'
TAF Failover Methods
FAILOVER_METHOD_NONE
VARCHAR2(5)
'NONE'
FAILOVER_METHOD_BASIC
VARCHAR2(6)
'BASIC'
TAF Failover Restore
FAILOVER_RESTORE_NONE
VARCHAR2(5)
'NONE'
FAILOVER_RESTORE_BASIC
VARCHAR2(6)
'LEVEL1'
TAF Failover Stop Option Attributes
STOP_OPTION_NONE
VARCHAR2(5)
'NONE'
STOP_OPTION_IMMEDIATE
VARCHAR2(6)
'IMMEDIATE'
STOP_OPTION_TRANSACTIONAL
VARCHAR2(6)
'TRANSACTIONAL'
TAF Failover Types
FAILOVER_TYPE_NONE
VARCHAR2(5)
'NONE'
FAILOVER_TYPE_SESSION
VARCHAR2(8)
'SESSION'
FAILOVER_TYPE_SELECT
VARCHAR2(7)
'SELECT'
FAILOVER_TYPE_TRANSACTION
VARCHAR2(12)
'TRANSACTION'
Data Types
TYPE svc_parameter_array IS TABLE OF VARCHAR2(100)
INDEX BY VARCHAR2(100);
CREATE TYPE svc_parameter_t IS OBJECT (
param_name VARCHAR2(30),
param_value VARCHAR2(100));
/
CREATE OR REPLACE TYPE svc_parameter_list_t
IS VARRAY(30) OF svc_parameter_t;
/
Dependencies
DBMS_APP_CONT_ADMIN
DBMS_SERVICE_ERR
SERVICE$
DBMS_DISRUPT
DBMS_SERVICE_LIB
SVC_PARAMETER_LIST_T
DBMS_GSM_CLOUDADMIN
DBMS_SERVICE_PRVT
SVC_PARAMETER_T
DBMS_GSM_DBADMIN
DBMS_SYS_ERROR
V$PARAMETER
DBMS_SERVICE_CONST
PLITBLM
V$SESSION
Documented
Yes
Exceptions
Error Code
Reason
ORA-01013
err_intr
ORA-44301
err_null_service_name
ORA-44302
err_null_network_name
ORA-44303
err_service_exists
ORA-44304
err_service_does_not_exist
ORA-44305
err_service_in_use
ORA-44306
err_service_name_too_long
ORA-44307
err_network_prefix_too_long
ORA-44308
err_not_initialized
ORA-44309
err_general_failure
ORA-44310
err_max_services_exceeded
ORA-44311
err_service_not_running
ORA-44312
err_database_closed
ORA-44313
err_invalid_instance
ORA-44314
err_network_exists
ORA-44315
err_null_attributes
ORA-44316
err_invalid_argument
ORA-44317
err_database_readonly
ORA-44318
err_max_sn_length
ORA-44319
err_aq_service
ORA-44320
err_glb_service
ORA-44771
err_invalid_pdb_name
ORA-44772
err_crs_api
ORA-44773
err_pdb_closed
ORA-44774
err_pdb_invalid
ORA-44775
err_pdb_name
ORA-44776
err_pdb_exp
ORA-44777
err_pdb_fail
ORA-44778
err_tg_rettm
ORA-44779
err_tg_repto
ORA-44780
err_tg_co
ORA-44781
err_tg_aq
ORA-44782
err_crs_fail
ORA-44783
err_mxrlbsvc
ORA-44784
err_delint
ORA-44785
err_tg_dbsvc
ORA-44786
err_pdb_imp
ORA-44791
err_inv_stop
ORA-44793
err_inv_intl
First Available
10.1
Object Privileges
GRANT execute ON dbms_service TO <schema_name>;
GRANT alter system TO <schema_name>;
GRANT select ON v_$session TO <schema_name>;
GRANT alter system TO uwclass;
GRANT execute ON dbms_service TO uwclass;
GRANT select ON v_$session TO uwclass;
Security Model
Owned by SYS with EXECUTE granted to the DBA, GSMADMIN_INTERNAL roles and SYSRAC
Creates a service name in the data dictionary. Services are also created in the data dictionary implicitly when you set the service in the service_names parameter or by means of ALTER SYSTEM SET service_names
Overload 1
dbms_service.create_service(
service_name IN VARCHAR2,
network_name IN VARCHAR2,
parameter_array IN svc_parameter_array);
PRAGMA SUPPLEMENTAL_LOG_DATA(create_service, NONE);
dbms_service.create_service(
service_name IN VARCHAR2,
network_name IN VARCHAR2,
goal IN NUMBER DEFAULT NULL,
dtp IN BOOLEAN DEFAULT NULL,
aq_ha_notifications IN BOOLEAN DEFAULT NULL,
failover_method IN VARCHAR2 DEFAULT NULL,
failover_type IN VARCHAR2 DEFAULT NULL,
failover_retries IN NUMBER DEFAULT NULL,
failover_delay IN NUMBER DEFAULT NULL,
clb_goal IN NUMBER DEFAULT NULL,
edition IN VARCHAR2 DEFAULT NULL);
PRAGMA SUPPLEMENTAL_LOG_DATA(create_service, NONE);
Disconnects sessions with the named service as the current instance
dbms_service.disconnect_session(
service_name IN VARCHAR2,
disconnect_option IN NUMBER DEFAULT post_transaction,
guid IN IN VARCHAR2 DEFAULT NULL);
PRAGMA SUPPLEMENTAL_LOG_DATA(disconnect_session, NONE);
dbms_service.modify_service(
service_name IN VARCHAR2,
goal IN NUMBER DEFAULT NULL,
dtp IN BOOLEAN DEFAULT NULL,
aq_ha_notifications IN BOOLEAN DEFAULT NULL,
failover_method IN VARCHAR2 DEFAULT NULL,
failover_type IN VARCHAR2 DEFAULT NULL,
failover_retries IN NUMBER DEFAULT NULL,
failover_delay IN NUMBER DEFAULT NULL,
clb_goal IN NUMBER DEFAULT NULL,
edition IN VARCHAR2 DEFAULT NULL,
modify_edition IN BOOLEAN DEFAULT FALSE);
PRAGMA SUPPLEMENTAL_LOG_DATA(modify_service, NONE);
dbms_service.stop_service(
service_name IN VARCHAR2,
instance_name IN VARCHAR2 DEFAULT NULL,
stop_option IN VARCHAR2 DEFAULT NULL,
drain_timeout IN NUMBER DEFAULT NULL,
replay IN BOOLEAN DEFAULT TRUE);
PRAGMA SUPPLEMENTAL_LOG_DATA(stop_service, NONE);