Підключіться до sql плюс з командного рядка за допомогою рядка з'єднання


41

Скажімо, у мене є база даних Oracle. У мене є ім’я користувача = x, пароль = y, база даних = z. Також я знаю port = a, SID = b, ім'я хоста = c.

Тож як мені потрібно правильно підключитися? Я використовував багато варіантів, таких як:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=b)))

Подання цих командних рядків зазвичай повертає мені повідомлення про помилки, такі як:

ORA-12560: TNS: помилка адаптера протоколу
ORA-12514: TNS: слухач наразі не знає послуги

Дякую заздалегідь !!


3
Якщо припустити, що у вас є правильний хост / порт, мені здається, що екземпляр не працює або не зареєстрований у слухачі.
Colin 't Hart

1
за допомогою ezconnect:sqlplus x/y@c:a/b
Dieter DHoker

1
для запису, ваш другий приклад (принаймні) працює для мене, якщо я оточую його цитатами. як x @ "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = c) (PORT = a)) (CONNECT_DATA = (SID = b)))"
rogerdpack

Відкрити -> послуги у вікні Пуск-> oracleservicexe Це працює для мене.
Пракаш

Відповіді:


74

ти спробував

sqlplus username/password@host:port/service
sqlplus x/y@c:a/b

сучасні версії sqlplus (версія 11 або новіші) розуміють цей синтаксис, і вам не потрібен файл tnsnames.ora.


2
Це прекрасно працює
Гайотрес

4
яка версія? Не працює для мене Помилка CentOS: ORA-12154: TNS: не вдалося вирішити вказаний ідентифікатор з'єднання
Edmondo1984,

Номер порту за замовчуванням: 1521
Іван Чау

4
У мене SID замість сервісу, тому використання ":" замість "/" працювало для мене sqlplus ім'я користувача / пароль @ host: port: sid
Pratik Goenka

1
sqlplus, який постачається разом v11.2.0.1.0, не підтримує host:portсинтаксис. Здається, 11.2.0.4.0вже підтримує ...
gavenkoa

12

Найпростішим є використання файлу tnsnames.ora для підключення до бази даних. Для цього відредагуйте його та додайте новий запис: Цей файл зазвичай знаходиться у каталозі $ ORACLE HOME \ NETWORK \ ADMIN.

myDb  =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = c)(Port =a))
   )
 (CONNECT_DATA =
   (SERVICE_NAME =b)
 )
)

і тоді ви можете підключитися до db:

sqlplus x / y @ myDb


Щоб не мати пароля в командному рядку, дивіться посилання в коментарях тут: serverfault.com/a/87038/27813
rogerdpack

7

Для оригінального плаката ... у першому варіанті ви пропустили дужки, що закриваються

Неправильно: (Ваш рядок)

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

Правильно:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED))))'

2

Ваш рядок sqlplus виглядає правильно, перевірте наступне:

  1. Ви можете підключитися як sysdba на самому сервері баз даних.
  2. Ви можете підключитися як користувач, якого ви намагаєтеся, на сам сервер бази даних.
  3. Ви можете пінг-сервер бази даних з комп'ютера, з якого ви намагаєтесь підключитися.
  4. Ви можете відключити слухача від комп'ютера, з якого ви намагаєтесь підключитися.

Якщо все це перевірити, можливо, ви захочете створити свіжу лінію зв'язку, щоб переконатися, що у вас немає помилки.


1

Можливо, ваша база даних не працює. Якщо машина була перезапущена, а примірник не встановлений для автоматичного запуску (і він не був запущений вручну), можливо, вам доведеться запустити службу самостійно.

Якщо у вас є доступ до екрана "Послуги", ви можете це зробити звідти; або, ви можете зробити це з командного рядка.

Перейдіть до командного рядка та введіть такі команди:

set oracle_sid=ORCL

net start oracleserviceORCL

Перший встановлює SID Oracle; другий фактично запускає послугу.


0

витяг з довідки sqlplus:

може бути у формі Net Service Name або Easy Connect.

  @[<net_service_name> | [//]Host[:Port]/<service_name>]

-2

Я виявив, що легко підключити віддалений робочий стіл і відкрити командний рядок, а потім підключитися:

sqlplus sys/YourPassword as sysdba


-3

Ви повинні розпочати послуги своїх баз даних. Для цього перейдіть до меню «Пуск» -> «Запустити і запустити». services.mscПотім знайдіть там служби баз даних і запустіть її. Після цього він почне працювати.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.