powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / tnsnames.ora
37 сообщений из 37, показаны все 2 страниц
tnsnames.ora
    #39600624
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
Вот что находится у меня в файле tnsnames.ora:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
MY_TEST=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=host-test)
      (PORT=1521))
    (CONNECT_DATA=
      (SERVER=dedicated)
      (SERVICE_NAME=servtest)))


Вот строка подключения к БД:

Код: java
1.
DriverManager.getConnection("jdbc:oracle:thin:@host-test:1521:servtest", "LOGIN", "PASS");


Как можно сделать, что бы в окошке авторизации, из выподающего списка, было видно название соединения MY_TEST
а после выбора из списка MY_TEST, host-test и servtest подтягивались автоматически до коннекта к БД,

или

на окошке авторизации вручную ввести MY_TEST, но что бы HOST=host-test и SERVICE_NAME=servtest подтягивались автоматически?

Спасибо!
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600626
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это доку дравера надо листать.
Есть варианты, но не так всё просто:
https://docs.oracle.com/cd/B19306_01/java.102/b14355/urls.htm#BEIDIJCE
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600632
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600633
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleksна окошке авторизации вручную ввести MY_TEST, но что бы HOST=host-test и SERVICE_NAME=servtest подтягивались автоматически?делай это руками, без TNS.
Т.к. tns это когда клент для оракла стоит на машине клиента
Код: java
1.
GetConnection("jdbc:oracle:oci8:@MY_TEST.....
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600636
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать свое окошко для ввода имени-пароля.

Два text item, один list box и две кнопки (Ok, Cancel)
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600656
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Спасибо, работает, то что нужно.

Вот что обнаружил,

Код: java
1.
2.
Class.forName("oracle.jdbc.OracleDriver"); 
Class.forName("oracle.jdbc.driver.OracleDriver");


какая из двух строк правильная (и первая и вторая работает) и в чем отличие ?
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600660
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,

Никакая не правильная. В актуальных версиях JDBC это уже не нужно.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600663
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Вот это поворот...
а я писал )

Спасибо!
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600677
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

у нас поумолчанию на всех машинах есть оракл клиент
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600685
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_AleksPetro123,

у нас поумолчанию на всех машинах есть оракл клиенток.
Тогда пиши тут итоговый рабочий вариант. Заработало?
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600699
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Это код для теста подключений, просьба к корректности не придираться )

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {
	public static void main(String[] args) throws SQLException {

		Connection myConn = null;
		Statement myStmt = null;
		ResultSet myRes = null;

		String connectName;
		String userName;
		String password;

		connectName = "MY_TEST";
		userName = "USER1";
		password = "PASSUSER1";

		try {
			System.setProperty("oracle.net.tns_admin", "d:\\Oracle\\product\\12.1.0\\client_1\\network\\admin\\");
			String url = "jdbc:oracle:thin:@" + connectName;
			myConn = DriverManager.getConnection(url, userName, password);
			myStmt = myConn.createStatement();
			myRes = myStmt.executeQuery("select name from user");
			
			while (myRes.next()) {
				System.out.print(myRes.getString("name"));
			}
		} catch (SQLException e) {
			System.out.println("ERROR");
		} finally {
			try {
				if (myStmt != null) {
					myStmt.close();
				}
				if (myRes != null) {
					myRes.close();
				}
				if (myConn != null) {
					myConn.close();
				}
			} catch (SQLException e) {
				System.out.println("ERROR 2");
			}
		}

	}
}
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600715
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Да. По другому. Раньше было oci8 и бралось из реестра tns.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600766
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_AleksВот что находится у меня в файле tnsnames.ora:
...
Вот строка подключения к БД:
Код: plaintext
 jdbc:oracle: thin :@host-test:1521:servtest
"Тонкий" клиент - ява-пюре и ему до лампочки и tnsnames в частности и наличие "нативного" клиента - вообще.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600769
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Да. Но они хотят почему то)))
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600945
Aleks_Aleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то я все...

Вы о чем друзья?

Был задан вопрос, был получен ответ...

Какие оси, какое пюре, какой на*рен реестр...

ОСИ !?

Код: java
1.
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Windows\System32\ocijdbc12.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform


Спасибо не стоит... - потому что мы хотим, почему то!

ТЕМА ЗАКРЫТА.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39600950
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,
Тема принадлежит публичному обществу а не тебе.
Говорилось про то что клиент оракла на каждую машинку ставить не обязательно. Можно Просто jar с приложением.
Выше написано, что у вас по умолчанию на каждой клиент.
Никто ни против).
...
Рейтинг: 0 / 0
tnsnames.ora
    #39734640
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Интересует момент, при подключении к БД Oracle использую System propety(System.setProperty), все норм...
но в данном случае все будет работать, если известен заранее service name и он прописывается в коде, а есть возможность, извлекать все существующие service name из файла Tnsname.ora и в зависимости от выбора пользователя- вставлять в код?
Код: java
1.
tring dbURL = "jdbc:oracle:thin:@"+V_SERVICE_NAME;
...
Рейтинг: 0 / 0
tnsnames.ora
    #39734652
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvk,
name это типа имя бд удаленной. Т. к. на одном ip их может быть много.
Заранее узнать нельзя т.к. оно на сервере удаленном в tnsnames.
А у тебя просто кто то прописал руками.
Можешь программно прочесть и взять себе.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39734832
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,
Если, допустим, на сервере где запускаем jar есть данный файл(tnsnames.ora) - я могу просто тогда распаристь и вытащить из него все serveci name и подставить нужные на место переменной V_SERVICE_NAME? Думал что есть более "продвинутый способ".
...
Рейтинг: 0 / 0
tnsnames.ora
    #39734841
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkPetro123,
Если, допустим, на сервере где запускаем jar есть данный файл(tnsnames.ora) - я могу просто тогда распаристь и вытащить из него все serveci name и подставить нужные на место переменной V_SERVICE_NAME? Думал что есть более "продвинутый способ".
какой продвинутый, если:
- в том файле имена ставятся руками?
- этого файла и клиента оракла на машине может не быть
- есть более продвинутый способ когда в jar уже есть драйвер оракла и tnsnames на клиентской машине ВООБЩЕ НЕ НУЖЕН.
Получается что ты хочешь брать имена из файла во вторник, когда ты сам их туда записал в понедельник.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39734842
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkДумал что есть более "продвинутый способ".
не ставить клиент оракла на клиента, а брать драйвер из jar.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39734845
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, понимаю, что звучит странно, но максимально упрощаю вопрос: можно ли не парся tnsnames.ora выбрать все service name ?
Задача: зная директорию tnsnames.ora, "вытащить" из него все сервисы.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39734871
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvk,
Бери и читай этот файл.
В него пишут РУКАМИ.
Три раза написал.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39735106
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleks_Aleks,

1. В любой файл типа properties записать что-то типа
Код: java
1.
MY_TEST=jdbc:oracle:thin:@host-test:1521:servtest


а tnsnames.ora вместе а оракловым клиентом выбросить нафиг.

2. Другой подход - использовать OCI драйвер с оракловым клиентом. Читайте тут про TNS_ADMIN. Работает примерно так, допустим у вас есть в tnsnames.ora
Код: java
1.
2.
 conn_str = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=server6)(PORT=1573))
(CONNECT_DATA=(SERVICE_NAME=rdbms3.server6.us.alchemy.com)))


Ваша строка подключения будет выглядеть примерно так
Код: java
1.
url = "jdbc:oracle:oci:@conn_str"
...
Рейтинг: 0 / 0
tnsnames.ora
    #39735116
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrickа tnsnames.ora вместе а оракловым клиентом выбросить нафиг.согласен. Но он уперся нафиг рогом и все тут))).
Ждал когда ему прямо коннект напишут с дровами в программе а не на машине заказчика.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39737848
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickВаша строка подключения будет выглядеть примерно так
Код: java
1.
url = "jdbc:oracle:oci:@conn_str"


Ребят, я не уперся рогом)...в моем мире розовых пони, считается, что значение Service Name "conn_str" можно подставить в виде переменной...как я приводил пример выше. В связи с этим был вопрос, как service name получить из tnsnames.ora!? Понятно, что парсингом- что не есть гуд)
...
Рейтинг: 0 / 0
tnsnames.ora
    #39737851
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvk,
Тебе так и не дошло, что в java не ставят клиента оракла на машину юзверя. И tns поэтому обычно нет.
Если ты розовый пони или белая ворона, то об этом нужно рассказывать.
Например, кто заполнил у тебя тот файл.
У меня там написано вместо conn_str - my_connect_petro123 .
Но это в дельфях с клиентом оракла у юзверей.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39737852
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvk,
Ты за две страницы не сказал, почему вместо парсинга вообще его не выбросить?
Поэтому ты упрямец).
...
Рейтинг: 0 / 0
tnsnames.ora
    #39737859
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123wellvk,
Тебе так и не дошло, что в java не ставят клиента оракла на машину юзверя. И tns поэтому обычно нет.

Оскорбления и прочее...оставим...
Petro123, вы смотрите через призму своего опыта, бывают и частные случае- в моем случае, есть *.exe, о нет!!!..представляете, под ОС windows) и на ПК установлен клиент с файлом.
Изучив библиотеку jdbc, там все же требуется явно указать service name...дальше уже говорилось)
Всем спасибо!
...
Рейтинг: 0 / 0
tnsnames.ora
    #39737881
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkОскорбления и прочее...оставим...обычный мужской разговор программистов

wellvkPetro123, вы смотрите через призму своего опыта, бывают и частные случае
о них рассказывают на первой странице сразу. Логично?
wellvkи на ПК установлен клиент с файлом.
Ну и пусть стоит. Его можно просто игнорировать и у себя записать:
var мой_парам1 = {}
var мой_парам2 = {}
Либо можно парсить при первой загрузке и опять же из того файла переписать к себе.
После этого пофиг тот файл и клиент вообще.
Удачи!
...
Рейтинг: 0 / 0
tnsnames.ora
    #39738131
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123wellvkОскорбления и прочее...оставим...обычный мужской разговор программистов

это вы к чему?

Petro123wellvkPetro123, вы смотрите через призму своего опыта, бывают и частные случае
о них рассказывают на первой странице сразу. Логично?

Я же вроде рассказывал, что требуется брать данные из tnsnames.ora?!

Petro123Ну и пусть стоит. Его можно просто игнорировать и у себя записать:
var мой_парам1 = {}
var мой_парам2 = {}
Либо можно парсить при первой загрузке и опять же из того файла переписать к себе.
После этого пофиг тот файл и клиент вообще.
Удачи!
Petro123, вот в этом и проблема не оптимальности(необходимость парсинга), exe запускается на разных ПК, с разным содержимым tnsnames.ora. Не желательно, чтобы пользователь сам вбивал service name, правильней, имхо, взять его из файла tnsnames.ora.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39738149
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkЯ же вроде рассказывал, что требуется брать данные из tnsnames.ora?!тебе оба мембера две сираницы рассказывают что постановка изврат.
Прими это и смирись.

wellvkНе желательно, чтобы пользователь сам вбивал service nam
Чукча не читатель?
Выше дал решение - первый раз читает и заносит себе в свой конфиг.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39738186
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Выше дал решение - первый раз читает и заносит себе в свой конфиг.
Petro123, я правильно понимаю, что читаем из tnsnames.ora?
Читаем как?
...
Рейтинг: 0 / 0
tnsnames.ora
    #39738233
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkЧитаем как?
парсим
ЦИКЛ
поиск подстроки " SERVICE_NAME= "
ЗЫ
У нас было по другому:
на уровне админов был приказ прописывать там 5 адресов в виде констант-слов. Всегда постоянных.
А в программе просто выпадающий список.
...
Рейтинг: 0 / 0
tnsnames.ora
    #39738259
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, согласен, тоже так настаивал сделать...но тимлид сказал, что коннекты могут изменится(добавиться)...да и дисциплина поддерживать такие соглашения должна быть, увы)
Пришлось парсить tnsnames)
...
Рейтинг: 0 / 0
tnsnames.ora
    #39738261
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkно тимлид сказала то что есть возможность без привязки в нему ты сказал?
...
Рейтинг: 0 / 0
tnsnames.ora
    #39738394
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkPetro123wellvk,
Тебе так и не дошло, что в java не ставят клиента оракла на машину юзверя. И tns поэтому обычно нет.

Оскорбления и прочее...оставим...
Petro123, вы смотрите через призму своего опыта, бывают и частные случае- в моем случае, есть *.exe, о нет!!!..представляете, под ОС windows) и на ПК установлен клиент с файлом.
Изучив библиотеку jdbc, там все же требуется явно указать service name...дальше уже говорилось)
Всем спасибо!

1. Нет ничего страшного в том, что необходимо указать SERVICE NAME. Надо понимать, что это константа привязанная к серверу, фактически можете считать, что это имя файла базы данных и оно никогда не изменяется.
2. В TNS вы имеете некий псевдоним соединения, который не обязан быть константой и может быть назван на усмотрение пользователя, т.е. на разных машинах возможно одно и тоже соединение назвать по-разному. Или наоборот одинаковые имена могут указывать на разные настройки соединения с базой.

Вариант как сделать то, что вы хотите вам озвучили уже неоднократно: вам надо, вне зависимости от типа соединения OCI или JDBC, завести свой файл с настройками, как пример Properties, в котором вы можете указать название соединения, которое покажите пользователю и он сможет его выбрать и, далее, в соответствии с этим именем вы сможете считать настройки из этого же файла (JDBC) или найти их в TNS (OCI). Всё просто, как два пальца... О чём мы тут так долго "разговариваем"?
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / tnsnames.ora
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]