Hello everyone!
Today we wanted to share with you a script that we have used several times to generate the file tnsnames. ora connection by a query to Cloud Control.
To do this, we use the views mgmt_target_properties and Mgmt $ target. From the first view we consult the values MachineName, PORT and SID to extract the data that we need. The data of the query we export to file and with a small program shell script we generate our new tnsnames.ora.
The query we use for the first part is:
Set pages 999 lines 200 heading off Col host for A50 Col port for A10 Col sid for A10 Spool Db_all. txt select distinct mgmt $ target. host_name | | ' | ' | | Sid. PROPERTY_VALUE | | | Port. PROPERTY_VALUE from sysman. mgmt_target_properties machine, sysman. mgmt_target_properties port, sysman. mgmt_target_properties sid, sysman. mgmt_target_properties domain, sysman. mgmt $ target where machine. target_guid = sid.target_guid AND sid. target_guid = port.target_guid AND port.target_guid = domain.target_guid AND Machine. PROPERTY_NAME = ' MachineName ' AND port. PROPERTY_NAME = ' Port ' AND sid. PROPERTY_NAME = ' SID ' AND sid.PROPERTY_VALUE not like '%ASM%' AND Machine. TARGET_GUID in (select TARGET_GUID from Sysman. mgmt_current_availability where sysman. EM_SEVERITY. get_avail_string (current_status) = ' UP ') AND Machine. TARGET_GUID = Mgmt $ target. TARGET_GUID order by 1; spool off
In the query you search only those instances that are with status “UP”, you can remove the condition to find all. We also have the possibility to search for a specific machine, so we can consult adding:
AND machine. PROPERTY_VALUE = ‘ Maquina1 ‘
One sees generated the file, we look for the values and format the output in tnsnames format.ora:
cat Db_all. txt | grep-V "^ $" | while read each_line do HOST_NAME = ' echo $each _ line | cut-D "|"-f1 ' ORACLE_SID = ' echo $each _ line | cut-D "|"-f2 ' PORT = ' echo $each _ line | cut-d"|"-f3 ' echo "$ {ORACLE_SID} =" >> tnsnames.ora echo "(DESCRIPTION =" >> tnsnames.ora echo "(ADDRESS = (PROTOCOL = TCP)" >> tnsnames.ora echo "(HOST = $ {HOST_NAME}) (PORT = $ {PORT}))" >> tnsnames.ora echo "(CONNECT_DATA =" >> tnsnames.ora echo "(SID = $ {ORACLE_SID})" >> tnsnames.ora echo ")" >> tnsnames.ora echo ")" >> tnsnames.ora echo "" >> tnsnames.ora done
We hope you will be as useful as we are.
Greetings.
DBA team.