r - 运行 R 代码时出错“连接为 SYS 应为 SYSDBA 或 SYSOPER”。我需要将 R 连接到 oracle
问题描述
我正在尝试运行以下代码:
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
解决方案
我不知道R。
首先,为什么要以 SYS 身份连接?它(连同 SYSTEM)拥有数据库;它很特别- 如果您不知道自己在做什么,您可能会破坏数据库。不理会 SYS 和 SYSTEM。创建另一个用户并在其架构中执行您正在执行的任何操作。
至于你的问题:用户名是(显然是 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>
两个明显的选择是 SCOTT 和 HR。如果您不知道他们的密码,请将其设置为
SQL> alter user scott identified by tiger;
User altered.
SQL>
现在你的连接看起来像
idisc_ODBC <- odbcConnect("TEST",'scott', "tiger",
它应该可以工作(当然,如果语法正确;我不知道为什么用户名用单引号括起来,但密码用双引号括起来 - 我希望你知道)。
推荐阅读
- python - 如何为 forms.ChoiceField() 设置默认值?
- c# - 可变结构作为成员变量,用于序列化/JSON 生成中的性能
- arrays - 如何使用迭代器创建一个循环,该迭代器将只使用不同的计数器运行相同的命令 - 在 PowerShell 中
- confluent-platform - 将查询推送到 ksqlDB,而不是在第一个结果行中返回最终结果
- javascript - 我在javascript中得到未定义
- azure - 天蓝色服务器上的 SMB 客户端未从天蓝色存储中删除文件
- c++ - 递归函数 C++ 的逆输出
- javascript - React Native:如何将自定义函数应用于对象数组并在 Javascript 中返回带有附加字段的修改后的数组?
- android - ListView 自定义适配器对错误的项目 OnScroll 应用操作
- python - 在没有 for 循环的情况下获取到 1D/2D 中每个最近元素的距离