It is generally accepted that service definition is required in RAC environments.
However, the concept of Services was made available in 8i --- predating RAC. Services can be defined in non-OPS / non-RAC / non-MultiTenant / MultiTenant environments. A single PDB in a 12c MultiTenant database can host multiple services.
A quick start to the implementation.
Note : srvctl is to be used to create and manage services in a RAC environment. srvctl registers the services with the Cluster Registry. In a Non-RAC environment, use DBMS_SERVICE.
First, no services are running :
Next, I startup the MultiTenant CDB database.
So, now I have the default pdb1 srevice for pluggable database PDB1 running.
Next, I manually create two new services and start them.
The two new services NEW_APP1 and NEW_APP2 that I created in PDB1 are now registered with the listener. Remember that these services are in the Database Instance CDB1.
My next blog post will be about using these services.
.
.
.
However, the concept of Services was made available in 8i --- predating RAC. Services can be defined in non-OPS / non-RAC / non-MultiTenant / MultiTenant environments. A single PDB in a 12c MultiTenant database can host multiple services.
A quick start to the implementation.
Note : srvctl is to be used to create and manage services in a RAC environment. srvctl registers the services with the Cluster Registry. In a Non-RAC environment, use DBMS_SERVICE.
First, no services are running :
[grid@ora12102 ~]$ lsnrctl status LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 14-JUN-2016 23:14:48 Copyright (c) 1991, 2014, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production Start Date 14-JUN-2016 23:14:28 Uptime 0 days 0 hr. 0 min. 19 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/diag/tnslsnr/ora12102/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora12102)(PORT=1521))) Services Summary... Service "+ASM" has 1 instance(s). Instance "+ASM", status READY, has 1 handler(s) for this service... The command completed successfully [grid@ora12102 ~]$
Next, I startup the MultiTenant CDB database.
[oracle@ora12102 ~]$ . oraenv ORACLE_SID = [CDB1] ? CDB1 The Oracle base remains unchanged with value /u01/app/oracle [oracle@ora12102 ~]$ sqlplus '/ as sysdba' SQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 14 23:15:47 2016 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 1644167168 bytes Fixed Size 2925024 bytes Variable Size 1056968224 bytes Database Buffers 570425344 bytes Redo Buffers 13848576 bytes Database mounted. Database opened. SQL> alter pluggable database pdb1 open; Pluggable database altered. SQL> [grid@ora12102 ~]$ lsnrctl status LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 14-JUN-2016 23:17:23 Copyright (c) 1991, 2014, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production Start Date 14-JUN-2016 23:14:28 Uptime 0 days 0 hr. 2 min. 54 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/diag/tnslsnr/ora12102/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora12102)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ora12102)(PORT=5501))(Security=(my_wallet_directory=/u01/app/oracle/admin/CDB1/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "+ASM" has 1 instance(s). Instance "+ASM", status READY, has 1 handler(s) for this service... Service "CDB1" has 1 instance(s). Instance "CDB1", status READY, has 1 handler(s) for this service... Service "CDB1XDB" has 1 instance(s). Instance "CDB1", status READY, has 1 handler(s) for this service... Service "pdb1" has 1 instance(s). Instance "CDB1", status READY, has 1 handler(s) for this service... The command completed successfully [grid@ora12102 ~]$
So, now I have the default pdb1 srevice for pluggable database PDB1 running.
Next, I manually create two new services and start them.
SQL> exit Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options [oracle@ora12102 ~]$ sqlplus 'sys/oracle@PDB1 as sysdba' SQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 14 23:20:30 2016 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> show con_id CON_ID ------------------------------ 3 SQL> show con_name CON_NAME ------------------------------ PDB1 SQL> SQL> exec dbms_service.create_service(service_name=>'NEW_APP1',network_name=>'NEW_APP1'); PL/SQL procedure successfully completed. SQL> exec dbms_service.create_service('NEW_APP2','NEW_APP2'); PL/SQL procedure successfully completed. SQL> exec dbms_service.start_service('NEW_APP1'); PL/SQL procedure successfully completed. SQL> exec dbms_service.start_service('NEW_APP2'); PL/SQL procedure successfully completed. SQL> [grid@ora12102 ~]$ lsnrctl status LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 14-JUN-2016 23:22:54 Copyright (c) 1991, 2014, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production Start Date 14-JUN-2016 23:14:28 Uptime 0 days 0 hr. 8 min. 26 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/diag/tnslsnr/ora12102/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora12102)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ora12102)(PORT=5501))(Security=(my_wallet_directory=/u01/app/oracle/admin/CDB1/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "+ASM" has 1 instance(s). Instance "+ASM", status READY, has 1 handler(s) for this service... Service "CDB1" has 1 instance(s). Instance "CDB1", status READY, has 1 handler(s) for this service... Service "CDB1XDB" has 1 instance(s). Instance "CDB1", status READY, has 1 handler(s) for this service... Service "NEW_APP1" has 1 instance(s). Instance "CDB1", status READY, has 1 handler(s) for this service... Service "NEW_APP2" has 1 instance(s). Instance "CDB1", status READY, has 1 handler(s) for this service... Service "pdb1" has 1 instance(s). Instance "CDB1", status READY, has 1 handler(s) for this service... The command completed successfully [grid@ora12102 ~]$
The two new services NEW_APP1 and NEW_APP2 that I created in PDB1 are now registered with the listener. Remember that these services are in the Database Instance CDB1.
My next blog post will be about using these services.
.
.
.
3 comments:
The Services created using dbms_services in Standalone PDB database, it fails to auto restart when database restarted, though PDB come up.
We have raised SR with Oracle they confirmed this as bug as below:
#######
Bug 20993808 https://bug.oraclecorp.com/pls/bug/webbug_edit.edit_info_top?rptno=20993808 : SERVICES NOT AUTO-STARTING WITH PDB STARTUP
You may not be able to access this bug as this internal with Oracle review.
#######
Jay,
IMHO non-auto-start should be the default behaviour for custom services. If you do set auto-start, give me a switch to disable it.
Jay,
IMHO non-auto-start should be the default behaviour for custom services. If you do set auto-start, give me a switch to disable it.
Post a Comment