0 / 0 / 0
Регистрация: 12.08.2020
Сообщений: 1
1

Подключение к базе Oracle через ODBC

12.08.2020, 15:14. Показов 5277. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно подключиться к базе Oracle из другой системы, в частности 1С. Через sqlplus соединяется. При соединении через ODBC ведет себя как-то странно. Есть две одинаковые копии базы 1с, вход под одним пользователем на одном компьютере. Одной и той же обработкой идет подключение к Oracle, в одной подключается, в другой выдает ошибку [Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified

Как можно узнать в чем причина ошибки? Где можно посмотреть в чем разница этих двух соединений?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2020, 15:14
Ответы с готовыми решениями:

Конфигурация Oracle Client19 и проблема подключение к базе через sql_plus
Доброго времени суток Знатоки, У меня есть такая проблема не могу подключиться через SQL_PLUS к...

Подключение к Oracle из ASP без ODBC
Как подключиться к Oracle из ASP без использования ODBC? Существует ли разница между таким...

Ошибка подключения к базе Oracle DB Express 11g через Oracle Data Integrator
Приветствую. На работе дали задание: установить Oracle Data Integrator и создать стенд с...

SQL-запрос к Oracle из Excel через ODBC
Люди! Подскажите, pls, как написать макрос, который по данным запроса к базе данных Oracle...

13
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 8
03.03.2021, 17:20 2
Есть Oracle DB Developer VM (на SE Linux), т.е тестовая сборка, которую запускаю на VirtualBox. В ней запущено Oracle Database 19C. Базовый пользователь "system". На виртуалке работа ведется на Oracle SQL Developer.
На физической машине стоит Windows7 PRO и сервис Oracle ODBC 8 (плюс дополнительные компоненты). Версия 8 установлена потому, что 9 в принципе не работает под win7.
Первоочередная задача - через Oracle SQL Developer создать пользователя с базовыми правами работы с таблицами через удаленное соединение через ODBC, потому что с пользователем system работа через odbc возможна, ошибок не возникает, но нужно иметь своего и без административных прав. Созданный пользователь в разных комбинациях, через штатный мастер, SQL Developer, виден только на виртуалке. Огромная просьба не посылать на... отбрехиваться ссылками на пустые темы, я тут все перерыл. Решение такой элементарной задачи должно быть доступно любому разработчику с опытом работы больше месяца. А у меня его нет, надо другими вещами заниматься.
И тоже самое с таблицами. Отчего-то стандартное создание таблицы не дает возможности увидеть ее через удаленное соединение даже под пользователем system (select * from user_tables из-под odbc выводит все служебные таблицы, но только не ее, select * from "table" дает ошибку - нет такой таблицы) тогда как под SQL Developer она присутствует в результате запроса. Назначение Grants пользователю "system" для этой таблицы видимого эффекта не принесло. Также просьба пошаговое решение показать.
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
04.03.2021, 09:03 3
Цитата Сообщение от Borjomy Посмотреть сообщение
Решение такой элементарной задачи должно быть доступно любому разработчику с опытом работы больше месяца.
Совсем не обязательно. Большинство работает через Oracle Client, а не через ODBC.
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 8
04.03.2021, 12:07 4
Совсем не обязательно. Большинство работает через Oracle Client, а не через ODBC.
Не вижу никакой принципиальной разницы. Разрешения для работы с пользователем и таблицами что в Oracle Client, что
в ODBC - одни и те-же. Мне нужно, чтобы и пользователь и таблица были видны ЗА ПРЕДЕЛАМИ сервера. То, что идет в комплекте с дистрибутивом уже настроено и работоспособно, и через Oracle Client и через ODBC- это уже доказано. Если есть решение для Oracle Client, с радостью его посмотрю.
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
04.03.2021, 12:17 5
Цитата Сообщение от Borjomy Посмотреть сообщение
Если есть решение для Oracle Client, с радостью его посмотрю.
Что понимается под решением?

Добавлено через 1 минуту
Цитата Сообщение от Borjomy Посмотреть сообщение
Разрешения для работы с пользователем и таблицами что в Oracle Client, что
в ODBC - одни и те-же.
Разрешения отрабатываются сервером. Даже если GRANT выдан с клиента, его все равно отрабатывает (и потом отслеживает выполнение) именно сервер.
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 8
04.03.2021, 13:55 6
Задача 1: создание пользователя, видного за пределами сервера. Т.е чтобы можно было подсоединиться к серверу под этим пользователем с УДАЛЕННОЙ машины.

Задача 2: создание таблицы, видимой за пределами сервера. Т.е чтобы можно было подключиться пользователем, созданным задачей 1 к серверу (по адресу-порту типа 192.168.0.121:1521, т.е обычным способом, в пределах локальной сети) и добавить в эту таблицу строки и выбрать из нее.

Для выполнения обеих задач у меня есть Oracle SQL Developer, установленный на виртуалке, где и крутится сам Oracle DataBase. Есть sqlcl. Т.е создавать и пользователя и таблицу на локальном хосте. Заходить могу туда под предустановленным пользователем system (могу, конечно ошибаться, но предполагаю, что все права доступа у этого пользователя есть).

Решение 1 что-то типа
CREATE USER t_user IDENTIFIED BY PASSWORD итд;
GRANT ... ?
и что-то еще?

Решение 2 что-то типа
CREATE TABLE test_table ....
GRANT ...
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
04.03.2021, 14:37 7
Цитата Сообщение от Borjomy
Т.е чтобы можно было подсоединиться к серверу под этим пользователем с УДАЛЕННОЙ машины.
Так работают практически все пользователи. На сервер обычно кроме sysdba никого не пускают.

Цитата Сообщение от Borjomy Посмотреть сообщение
но предполагаю, что все права доступа у этого пользователя есть
Как раз system не самый привилегированный пользователь. Есть пользователь sys, который имеет привилегию sysdba. А для текущей высокопривилегированной работы создают какого-то пользователя и выдают ему роль DBA.

Цитата Сообщение от Borjomy Посмотреть сообщение
Решение 1 что-то типа
Для того, чтобы пользователь мог хотя бы подключиться к БД, он должен иметь привилегию CREATE SESSION. Но обычно для простоты пользователю выдают роли CONNECT и RESOURCE, которые в том числе включают CREATE SESSION

Цитата Сообщение от Borjomy Посмотреть сообщение
Решение 2 что-то типа
Для того, чтобы пользователь мог работать со своей таблицей (расположенной в его схеме), никаких доп. привилегий ему не нужно. Если пользователю нужно выполнять SELECT к таблице из другой схемы, ему нужно выдать GRANT SELECT на эту таблицу. Кроме того, к таблице нужно обращаться не FROM tab1, а FROM schema1.tab1, т.е. перед именем таблицы д.б. в качестве префикса имя схемы. Альтернатива - создать приватный или PUBLIC SYNONYM на этот объект
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 8
04.03.2021, 14:56 8
Цитата Сообщение от Grossmeister Посмотреть сообщение
Для того, чтобы пользователь мог работать со своей таблицей (расположенной в его схеме), никаких доп. привилегий ему не нужно. Если пользователю нужно выполнять SELECT к таблице из другой схемы, ему нужно выдать GRANT SELECT на эту таблицу. Кроме того, к таблице нужно обращаться не FROM tab1, а FROM schema1.tab1, т.е. перед именем таблицы д.б. в качестве префикса имя схемы. Альтернатива - создать приватный или PUBLIC SYNONYM на этот объект
Так сложно примерные скрипты написать???? Чтобы убедиться, что это работает! Или я переписываюсь с человеком, который нихрена не знает, но пытается поднять карму на постах?

Как может пользователь работать со своей таблицей удаленно, если ODBC коннект его даже НЕ ВИДИТ??????? пользователя system видит, а t_user - не видит. Коннект в Oracle SQL Developer c пользователем t_user создается, т.е пользователь существует. Значит t_user создан с неправильными атрибутами. КАК ПРАВИЛЬНО?
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
04.03.2021, 15:21 9
Цитата Сообщение от Borjomy Посмотреть сообщение
если ODBC коннект его даже НЕ ВИДИТ
C Oracle через ODBC работал последний раз 20 лет назад (из программы на Power Builder), поэтому ньюансов не помню. Хотя если бы понадобилось, достаточно было бы почитать доку. Через Oracle Client работаю постоянно, никаких проблем с работой с удаленного компа нет.

Цитата Сообщение от Borjomy Посмотреть сообщение
Значит t_user создан с неправильными атрибутами
Нет такого понятия. Либо неверно настроен ODBC (что скорее всего), либо пользователю не хватает прав. Про необходимые права со стороны Oracle я уже сказал.

PS
Если ты не умеешь администрировать Oracle, то проще нанять DBA, хотя бы приходящего, иначе проблемы будут возникать постоянно.

Добавлено через 1 минуту
Цитата Сообщение от Borjomy Посмотреть сообщение
который нихрена не знает, но пытается поднять карму на постах
Хех... А зачем мне это надо? За это денег не платят.
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 8
04.03.2021, 15:42 10
назначил роли в коннекте sys@//localhost:1521/orcl, раздел Other Users/t_user ПКМ "Edit User..." Далее вкладка System Privilegies, строка CREATE SESSION, флажки и Granted и Admin установил
Вкладка Granted Roles - установлены все флажки по столбцам "Granted", "Admin", "default"

Через ODBC пользователя t_user не видит (ни в режиме теста, ни в ПО)

У меня НИОКР и ради элементарного вопроса кого-то нанимать?...

Добавлено через 10 минут
в ODBC настраивать нечего. Там ничего нет. Только TNS Service Name (а это просто IP и порт) и User ID. Заполняешь эти поля и нажимаешь кнопку Test Connection. Спрашивает все вышеперечисленное + пароль. Вводишь пароль и выпадает ответ - все хорошо или ошибка. С пользователем system все проходит, с sys - ругается на привилегии пользователя (т.е видит его). А вот с t_user - ошибка пользователя/пароль (SQLState=28000, [Oracle][ODBC][Ora]ORA-01017. Пароль сложно несколько раз ввести с ошибкой.
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
04.03.2021, 15:57 11
Цитата Сообщение от Borjomy Посмотреть сообщение
Пароль сложно несколько раз ввести с ошибкой
1. Если версия Oracle 12 и выше, то пароль регистрозависимый.
2. Если есть сомнения в пароле, то его всегда можно поменять через ALTER USER
3. Кто мешает установить на удаленный комп Oracle Client и попробовать через него?

Цитата Сообщение от Borjomy Посмотреть сообщение
Вкладка Granted Roles - установлены все флажки по столбцам "Granted", "Admin", "default"
Это мне ни о чем не говорит. Роли назначаются через GRANT
SQL
1
GRANT CONNECT, resource TO user1
Добавлено через 1 минуту
Цитата Сообщение от Borjomy Посмотреть сообщение
ради элементарного вопроса кого-то нанимать?
Как ты определяешь, что вопрос элементарный, если сам на него ответа не знаешь?
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 8
04.03.2021, 17:08 12
Короче, выкристаллизовывается ощущение, что данная версия сервера принципиально не дает доступа снаружи для вновь созданных таблиц и пользователей.
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
05.03.2021, 09:03 13
Цитата Сообщение от Borjomy Посмотреть сообщение
данная версия сервера принципиально не дает доступа снаружи
Ты не огласил версию сервера. Но вообще СУБД, которая не дает подключиться к серверу по сети, нафиг никому не нужна.
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 8
05.03.2021, 15:45 14
Описание: Данная виртуальная машина применяется на практических занятиях для изучения новых возможностей СУБД Oracle 19c.
Oracle Technology Network Developer Day - Hands-on Database Application Development lab

Эта виртуальная машина выложена для свободного скачивания на сайте Oracle (в формате Virtual Box): https://www.oracle.com/technet... 61299.html

В состав релиза вошли:
ОС - Oracle Enterprise Linux 7.6 x86-64
Oracle Database 19с Enterprise Edition for Linux x86-64 - 12.2.0.3
Oracle XML DB
Oracle JSON
Oracle SQL Developer
Oracle SQL Developer Data Modeler
Oracle Application Express 18.3 - настроенное бесплатное средство разработки Web-приложений от производителя, полную информацию можно почерпнуть здесь: http://otn.oracle.com/apex
Hands-On-Labs (accessed via the Toolbar Menu in Firefox) - методички для выполнения лабораторных работ
Назначение:
Для обучения разработчиков приложений для СУБД Oracle 19c (12.2.0.3).

Добавлено через 4 часа 20 минут
Не все сборки одинаково полезны. Под другой сборкой

Описание:: В состав релиза вошли:
Oracle Enterprise Linux 7.8 x64 (полная бесплатная копия RHEL 7.8)
Oracle Database 19c (12.2.0.3) Enterprise Edition for Linux x64
Oracle Enterprise Manager Express - Средство администрирования СУБД Oracle
Oracle Application Express 20.1 - настроенное бесплатное средство разработки Web-приложений от производителя, полную информацию можно почерпнуть здесь: http://otn.oracle.com/apex
Oracle Enterprise Manager Express - средство администрирования СУБД
SQL Developer 19.1 - средство разработки для СУБД Oracle Database

И пользователь и таблицы были созданы с первого (почти) раза так, чтобы были доступны удаленно.

Выводы: оригинальный учебный вариант сервера поставляется в урезанном варианте.
0
05.03.2021, 15:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2021, 15:45
Помогаю со студенческими работами здесь

Подключение к удалённой базе oracle
Друзья, помогите!!!! я запутался((( <?php $host = "IP сервера ORACLE; $sid = "ORCL"; $port...

Подключение к базе данным MSSQL через ODBC
Дважды я пытался подключиться к базе данным, первый раз через ODBC, у меня получилось, зашел...

Подключение к базе Odbc сервер
Всем приветь, я новичок по С#. Ну хочу изучит С#! Вот код, который я написал: private void...

SQL запрос к Oracle из Excel через ODBC
Люди! Подскажите, pls, как написать макрос, который по данным запроса к базе данных Oracle...

Подключение к базе oracle
Запустил виртуальную машину с Oracle XE 11 На IP адресе 192.168.0.2 Через строку в браузере...

Подключение к удалённой базе oracle
Друзья, помогите!!!! я запутался((( <?php $host = "IP сервера ORACLE; $sid = "ORCL"; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru