contents of /oracle/11.2.0/grid/network/admin/endpoints_listener.ora (I removed IP and changed server name):
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
I need to add both EP_LIB_PATH and EXTPROC_DLLS to the listener.
LISTENER_SERVER-X=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=SERVER-X-vip)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=xx.xx.xx.xx)(PORT=1521)(IP=FIRST)))) # line added by Agent
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) )
I know that its a duplicate to have both PLSExtProc and CLRExtProc defined, but this is how it is defined in all of our installations and I want to keep it like that.
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = server_name)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /oracle/app/oracle/product/22.214.171.124/dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ANY,PATH=/oracle/app/dbutil_dlls,EP_LIB_PATH=/oracle/app/dbutil_dlls,LD_LIBRARY_PATH=/oracle/app/oracle/product/126.96.36.199/dbhome_1/lib:/oracle/app/dbutil_dlls") ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = /oracle/app/oracle/product/188.8.131.52/dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ANY,PATH=/oracle/app/dbutil_dlls,EP_LIB_PATH=/oracle/app/dbutil_dlls,LD_LIBRARY_PATH=/oracle/app/oracle/product/184.108.40.206/dbhome_1/lib:/oracle/app/dbutil_dlls") ) )
you are paying for Oracle support, so why do you want to avoid it?because sometimes Oracle support takes 3 weeks to understand and provide the solution, and i thought this is going to be faster.
Furthermore having a cluster without a test environment (at least a virtualized one) is something like a suicide mission. You want to run a critical database (hence clustered), but cannot afford a test system. How do you test things like patches etc.?Nothing i don't already know, but have to provide solutions for the current situation... We will have a demo clusterware here in a 1-2 months, but I can't wait that long.
Now to your questions: If you setup manual failover, you should also define your own listener to fail over. You should not/are not making use of the default listeners provided by RAC infrastructure.Why? we are using the listeners that came with the installation and they are working fine.
For this you will have created an additional resources, which will start the database the VIP and the listener together on the running node, and which will move in total to the second node on failure.
You should not have used "srvctl add listener" to add another listener, otherwise you setup is probably bound to fail.I have not added any manual listener yet.
If you have added your own listener, listening on the VIP, this listener should be mentioned in the local listener parameter of the database.Now I only have remote_listener configured (to the scan listener) in the DB, local_listener is empty.
Add the extroc properties to exactly that listener (listener name) to which the local listener parameter of the DB is pointing to.
If you would use RAC One Node, where all this is managed for you, then the solution of EXTPROC would be to integrate this into the listener.ora for each local listener (same thing, the listener the local_listener parameter is pointing to).
Make sure you alter the listener.ora in GI home and tnsnames.ora in DB Home.
If you are working with user role separation (other user installed GI, than DB home), then probably you should add a listener.ora in the db home and create a listener out of the DB Home, otherwise the exproc will be with the user of the GI.