Получение ошибки при запуске кода R "соединение как SYS должно быть как SYSDBA или SYSOPER".Мне нужно подключить R к оракулу - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь запустить приведенный ниже код:

library("RODBC")

idisc_ODBC <- odbcConnect("TEST",'sys', "oracle123",
                       believeNRows = FALSE, rows_at_time = 1)

Также найдите прикрепленный скриншот для oracle db

Запуск кода ошибки R:

Warning messages:
1: In RODBC::odbcDriverConnect("DSN=TEST;UID=sys;PWD=oracle123", believeNRows = FALSE,  :
  [RODBC] ERROR: state HY000, code 28009, message [Oracle][ODBC][Ora]ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
2: In RODBC::odbcDriverConnect("DSN=TEST;UID=sys;PWD=oracle123", believeNRows = FALSE,  :
  ODBC connection failed

1 Ответ

0 голосов
/ 23 ноября 2018

Я не знаю R.

Прежде всего, почему вы подключаетесь как SYS?Он (наряду с SYSTEM) владеет базой данных;это особый и - если вы не знаете, что делаете, вы можете уничтожить базу данных.Оставьте SYS и SYSTEM в покое.Создайте другого пользователя и делайте все, что вы делаете в его схеме.

По вашему вопросу: username (очевидно SYS), его пароль oracle123.Если это так, попробуйте с

idisc_ODBC <- odbcConnect("TEST",'sys as sysdba', "oracle123",

Это работает, насколько это касается Oracle;взгляните на эту демонстрацию - я подключаюсь к базе данных как SYS, запускаю SQL * Plus в командной строке:

C:\>sqlplus sys as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Pet Stu 23 20:05:40 2018

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Enter password:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL>

Видите первую строку?sys as sysdba.Надеюсь, это будет работать и с R.Хотя, еще раз: не используйте SYS.В базе данных есть пользователи, которых вы можете использовать вместо этого.Если вы посмотрите на список:

SQL> select * from all_users;

USERNAME                          USER_ID CREATED
------------------------------ ---------- --------
XS$NULL                        2147483638 29.05.14
SCOTT                                  79 06.09.18      --> this
IMPORTER                               76 06.09.18
MIKE                                   71 30.03.18
APEX_040000                            47 29.05.14
APEX_PUBLIC_USER                       45 29.05.14
FLOWS_FILES                            44 29.05.14
HR                                     43 29.05.14      --> this
<snip>

два очевидных варианта - это Скотт и HR.Если вы не знаете их пароли, установите их как

SQL> alter user scott identified by tiger;

User altered.

SQL>

Теперь ваше соединение будет выглядеть как

idisc_ODBC <- odbcConnect("TEST",'scott', "tiger",

, и оно должно работать (конечно, если синтаксис правильный;Я не знаю, почему имя пользователя заключено в одинарные кавычки, а пароль в двойные - надеюсь, вы это знаете).

...