PL-Sql 用户连接
Posted
技术标签:
【中文标题】PL-Sql 用户连接【英文标题】:Pl-Sql User Connection 【发布时间】:2016-07-19 10:46:53 【问题描述】:我一直在为我的工作启动 oracle。但是我一直在使用MS。现在我在 User-Shema 结构上有问题。我尝试使用 sql 查询创建表,但表是在我想要的其他地方创建的。 (我已经创建了一个名为 LPA 的用户)我刚刚编写了查询,并且表位于 (GeneralDatabase) Tablespaces->Users->(Here) 中。我想在表文件夹下的 LPA 模式中创建一个表。我一直在寻找它,但我无法得到它。所以需要一些帮助。
PS:我发现我需要与用户连接,而不是使用 TS_LPA(那是我的表空间)写入查询。但我也无法与用户 LPA 连接。(可以说这是我的第一个问题)
【问题讨论】:
是的,当您以用户“LPA”的身份连接并创建表时,它属于用户“LPA”并且位于 LPA 模式中。通常,表空间被设置为用户的默认值,因此您不需要关心它。 (顺便说一句,这些都不是 PL/SQL - 那是编程语言。) 其实我知道连接后我要使用的查询。问题是;我已经尝试了所有我能找到的连接查询。 (连接 LPA/密码;我认为应该可以工作:()但是我尝试连接时一直出现相同的错误:“无效的 sql 语句”所以我仍然无法连接为 LPA。 那么您的问题是如何使用您的桌面工具连接到您的开发数据库? 不完全是。我正在我的工具上连接制造数据库。但问题是;当我尝试创建表时,它是在制造数据库表空间中创建的。 LPA 是我的制造用户,我正在尝试在其中设计我的表格。我不知道也许我误解了。 如果您以 LPA 身份连接,那么create table test (id int)
将创建 LPA.TEST 表。如果它正在工作,但只是没有使用您想要的表空间,则在 create
语句的末尾指定 tablespace ts_lpa
,并可能与 DBA 谈谈将其设为 LPA 用户的默认值。
【参考方案1】:
在 Oracle 中没有“dbo”或默认模式,以防您正在寻找。当您连接(登录)到数据库时,您必须指定目标用户帐户,该帐户将用作您所有后续操作的默认架构。 (这类似于 Linux 中的主目录,如果我以 williamr
登录并创建一个文件,它将属于 williamr
而不是一些通用的默认帐户。)
在您的情况下,我怀疑您以 SYS 或类似身份连接,在这种情况下,您的表现在属于 SYS(或您连接的任何人)。您需要放下它,然后重试。
如果您出于某种原因不想发布最初用于连接的连接字符串,请执行以下查询以查看您当前的架构:
select user, sys_context('userenv','current_schema') from dual;
(通常user
和sys_context('userenv','current_schema')
将是相同的,但值得仔细检查。)
在 PL/SQL Developer 中,您只能从命令窗口(而不是 SQL 窗口)发出 connect
命令。或者,您可以使用“登录”菜单工具,或菜单中的“会话”>“设置主连接”,或(如果您想稍后重用它最好)“工具”>“定义连接”,它有一个“测试...”按钮来验证一个新的连接。您需要用户名、密码和数据库服务名称(不仅仅是用户名和密码)。
【讨论】:
先生。罗伯逊你好。我得到了它。 (最后)你是对的。我意识到那一刻我在另一个用户中。但是工具界面上也有 LPA 用户,我可以控制它。我还在网上找到了一些主题和前任 - 关于以用户身份连接。我确实专注于那个。对不起我的固执。再次感谢你。【参考方案2】:与 LPA 用户连接。
在表名之前指定模式名。
create table LPA.tbl_name(col1 datatype1,....);
【讨论】:
一个或另一个,但不是两个,确定吗?如果您已被授予create any table
权限,您只能在另一个架构中创建表,这通常不会授予开发人员,因为这是一个非常严重的权限。
我在创建用户时将所有权限授予用户
先生。 Mishra,我知道我将在连接后使用的查询。但我无法连接为 LPA。我一直在尝试使用 sql 查询(连接 LPA/密码;),但它不起作用。我想知道我是不是走错路了。你能告诉我我将如何作为 LPA 连接吗?
问题已解决。那是我的犯规,实际上有点尴尬。我专注于一些错误的事情。但是我正在学习 oracle :) 谢谢大家的帮助和时间以上是关于PL-Sql 用户连接的主要内容,如果未能解决你的问题,请参考以下文章
关于使用啥 pl-sql 从 Oracle 10G 数据库中提取大量记录(六百万)的任何建议,并从多个表中进行连接? [复制]