My 2node RAC environment has 1 PDB. Here I add (create) a new Service to the PDB.
Oracle recommends using srvctl instead of DBMS_SERVICE to add a Service.
Can I add a service without having the PDB OPEN ?
I add the Service to the TNSNAMES.ORA and try to connect to it.
So, apparently, the service isn't running. Shall I try re-adding the service ?
Yet, it doesn't work ! How do I add and start service to a PDB ? What's missing ?
I had forgotten to *START* the service ! Let me go back and add another service with the PDB CLOSEd.
However, these entries in PDB_PLUG_IN_VIOLATIONS seem to be a bug :
So, remember, it is not sufficient to ADD a Service. You must also START the Service using srvctl.
.
.
.
Oracle recommends using srvctl instead of DBMS_SERVICE to add a Service.
Can I add a service without having the PDB OPEN ?
[oracle@collabn1 ~]$ srvctl start database -d RAC [oracle@collabn1 ~]$ srvctl add service -db RAC -service MYSVC -preferred RAC1,RAC2 \ > -tafpolicy BASIC -clbgoal SHORT -pdb PDB [oracle@collabn1 ~]$ [oracle@collabn1 ~]$ sqlplus '/ as sysdba' SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:16:01 2017 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, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> select con_id, name, open_mode from v$pdbs; CON_ID NAME OPEN_MODE ---------- ------------------------------ ---------- 2 PDB$SEED READ ONLY 3 PDB MOUNTED SQL> alter pluggable database pdb open; -- command issued in both instances Pluggable database altered. SQL> SQL> select con_id, pdb, name, creation_date, clb_goal 2 from v$services 3 where pdb='PDB' 4 / CON_ID PDB ---------- ------------------------------ NAME CREATION_ CLB_G ---------------------------------------------------------------- --------- ----- 3 PDB pdb.racattack 29-DEC-16 LONG SQL>
I add the Service to the TNSNAMES.ORA and try to connect to it.
MYSVC = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn-cluster-scan.racattack)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = MYSVC.racattack) ) ) [oracle@collabn1 ~]$ tnsping MYSVC TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 29-APR-2017 23:22:43 Copyright (c) 1997, 2014, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn-cluster-scan.racattack)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = MYSVC.racattack))) OK (0 msec) [oracle@collabn1 ~]$ sqlplus hemant/hemant@MYSVC SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:22:51 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor Enter user-name:
So, apparently, the service isn't running. Shall I try re-adding the service ?
[oracle@collabn1 ~]$ srvctl add service -db RAC -service MYSVC -preferred RAC1,RAC2 \ > -tafpolicy BASIC -clbgoal SHORT -pdb PDB PRKO-3117 : Service MYSVC already exists in database RAC [oracle@collabn1 ~]$ srvctl remove service -db RAC -service MYSVC -pdb PDB PRKO-2002 : Invalid command line option: -pdb [oracle@collabn1 ~]$ srvctl remove service -db RAC -service MYSVC [oracle@collabn1 ~]$ srvctl add service -db RAC -service MYSVC -preferred RAC1,RAC2 \ > -tafpolicy BASIC -clbgoal SHORT -pdb PDB [oracle@collabn1 ~]$ [oracle@collabn1 ~]$ sqlplus hemant/hemant@MYSVC SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:31:15 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor Enter user-name:
Yet, it doesn't work ! How do I add and start service to a PDB ? What's missing ?
[oracle@collabn1 ~]$ srvctl remove service -db RAC -service MYSVC [oracle@collabn1 ~]$ srvctl start service -db RAC -service MYSVC [oracle@collabn1 ~]$ SQL> select distinct name from v$services; NAME ---------------------------------------------------------------- pdb.racattack RAC.racattack MYSVC SYS$BACKGROUND RAC_DGB RACXDB SYS$USERS [oracle@collabn1 ~]$ sqlplus hemant/hemant@MYSVC SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:43:01 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. Last Successful login time: Sun Apr 16 2017 23:30:21 +08:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> select table_name from user_tables; TABLE_NAME -------------------------------------------------------------------------------- MY_DATA MY_NEW_TABLE SQL>
I had forgotten to *START* the service ! Let me go back and add another service with the PDB CLOSEd.
SQL> alter pluggable database pdb close immediate; -- on both instances Pluggable database altered. SQL> [oracle@collabn1 ~]$ srvctl add service -db RAC -pdb PDB -service NEWSVC -preferred RAC1,RAC2 \ > -tafpolicy BASIC -clbgoal SHORT [oracle@collabn1 ~]$ SQL> alter pluggable database pdb open; -- on both instances Pluggable database altered. SQL> NEWSVC = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn-cluster-scan.racattack)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = NEWSVC.racattack) ) ) [oracle@collabn1 ~]$ srvctl start service -db RAC -service NEWSVC [oracle@collabn1 ~]$ tnsping NEWSVC TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 29-APR-2017 23:54:38 Copyright (c) 1997, 2014, Oracle. All rights reserved. Used parameter files: Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn-cluster-scan.racattack)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = NEWSVC.racattack))) OK (0 msec) [oracle@collabn1 ~]$ sqlplus hemant/hemant@NEWSVC SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:55:25 2017 Copyright (c) 1982, 2014, Oracle. All rights reserved. Last Successful login time: Sat Apr 29 2017 23:54:51 +08:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options SQL> select table_name from user_tables; TABLE_NAME -------------------------------------------------------------------------------- MY_DATA MY_NEW_TABLE SQL>
However, these entries in PDB_PLUG_IN_VIOLATIONS seem to be a bug :
SQL> alter pluggable database pdb close immediate; Pluggable database altered. SQL> alter pluggable database pdb open; Pluggable database altered. SQL> select * from pdb_plug_in_violations; TIME --------------------------------------------------------------------------- NAME ------------------------------ CAUSE TYPE ---------------------------------------------------------------- --------- ERROR_NUMBER LINE ------------ ---------- MESSAGE -------------------------------------------------------------------------------- STATUS --------- ACTION -------------------------------------------------------------------------------- 29-APR-17 11.58.32.409572 PM PDB Service Name Conflict WARNING 0 1 Service name or network name of service MYSVC in the PDB is invalid or conflicts with an existing service name or network name in the CDB. PENDING Drop the service and recreate it with an appropriate name. 29-APR-17 11.58.32.412142 PM PDB Service Name Conflict WARNING 0 2 Service name or network name of service NEWSVC in the PDB is invalid or conflict s with an existing service name or network name in the CDB. PENDING Drop the service and recreate it with an appropriate name. SQL>
So, remember, it is not sufficient to ADD a Service. You must also START the Service using srvctl.
.
.
.
No comments:
Post a Comment