Как мне перечислить tnsnames
Есть ли простой способ перечислить все доступные tnsname в моей системе через командную строку?
Всякий раз, когда мне нужно узнать имя tnsname, я просто ищу файл tnsnames.ora с помощью команды tnsping и открываю его в текстовом редакторе для просмотра. Затем выполните tnsping [tnsname], чтобы проверить работоспособность соединения. Я думал, есть ли какая-нибудь простая команда, такая как tnslist или tns -l, чтобы вывести список всех tnsnames, но я не смог найти такое.
2 ответа
Предполагая, что у вас есть такой tnsnames.ora
файл:
DB01 =
(DESCRIPTION =
(FAILOVER=off)
(LOAD_BALANCE=off)
(ADDRESS = (PROTOCOL = TCP)(HOST = db01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydb1)
)
)
DB02 =
(DESCRIPTION =
(FAILOVER=off)
(LOAD_BALANCE=off)
(ADDRESS = (PROTOCOL = TCP)(HOST = db02-vip)(PORT = 1531))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydb2)
)
)
отредактируйте ваш.profile или.bash_profile следующим образом:
[oracle @ mydb12c ~] vi.bash_profile
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1; export ORACLE_HOME
...
alias lstns="sed -n '/DESCR/{x;p;d;}; x' $ORACLE_HOME/network/admin/tnsnames.ora | sed "s/=/${s}/""
echo 'lstns : tnsnames.ora listing'
[оракул @ mydb12c ~]..bash_profile
lstns : tnsnames.ora listing
[oracle @ mydb12c ~] lstns
DB01
DB02
Нет команды вывода файла tnsnames.ora. Но есть несколько вариантов размещения файла tnsnames.ora. Вы можете использовать только команду поиска Приоритет поиска файлов tnsnames.ora клиентом oracle.
1) current directory (Linux, Windows)
2) $TNS_ADMIN (Linux, Windows environment variable, Windows registry key)
3) $ORACLE_HOME/network/admin (Linux, Windows)
4) /etc (Linux)
5) %USERPROFILE%/AppData/Oracle ( Windows 7).
[root@elbrus-1 ~]# find / -name tnsnames.ora
/opt/ora/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
/opt/ora/app/oracle/product/11.2.0/dbhome_1/network/admin/samples/tnsnames.ora
/home/oracle/diman/tnsnames.ora
[root@elbrus-1 ~]#