首页
学习
活动
专区
圈层
工具
发布

11g
EN

Stack Overflow用户
提问于 2018-10-06 18:16:18
回答 1查看 2.1K关注 0票数 1

我是Oracle的新手,我想练习SQL。

我下载了版本11g x64。我按照指令创建了一个工作区和用户。

然而,当我试图创建一个表时,我会得到一个错误"ORA-20000: User在模式上没有特权。错误检查权限。

但是,当我去查看管理中的用户时,会说我是工作区管理员。我也无法使用我在安装时创建的密码作为系统或SYS登录。

我很困惑。

EN

回答 1

Stack Overflow用户

发布于 2018-10-06 18:36:22

你要处理的有两个术语:

  • 包含表和数据表的数据库属于SYS或SYSTEM之类的用户,您不应该使用它们,除非解锁现有的用户(HR或SCOTT;不管是哪个),以便使用它进行实践。
  • applications,它是用于访问数据库和创建将管理存储在表中的数据的应用程序的工具。一旦以管理员身份登录,就可以创建工作区(映射到数据库用户/模式)和开发人员(将创建应用程序)。这个"admin“用户与数据库所有者( sys /system)非常不同,因此您不能使用sys作为用户名和密码登录到Apex。

当您安装了11g XE数据库(它内置了Apex版本4.x,我认为它不是Apex 11g,它不存在)时,在操作系统命令提示符下运行SQL*Plus并以SYS的形式连接:

代码语言:javascript
复制
C:\>sqlplus sys@xe as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Sub Lis 6 20:26:19 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> 

在数据库中列出用户:

代码语言:javascript
复制
SQL> select username, account_status from dba_users order by username;

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
ANONYMOUS                      OPEN
APEX_PUBLIC_USER               LOCKED
APEX_040000                    LOCKED
APPQOSSYS                      EXPIRED & LOCKED
CTXSYS                         EXPIRED & LOCKED
DBSNMP                         EXPIRED & LOCKED
DIP                            EXPIRED & LOCKED
FLOWS_FILES                    LOCKED
HR                             LOCKED
IMPORTER                       OPEN
MDSYS                          EXPIRED & LOCKED
MIKE                           OPEN
ORACLE_OCM                     EXPIRED & LOCKED
OUTLN                          EXPIRED & LOCKED
SCOTT                          OPEN
SYS                            OPEN
SYSTEM                         OPEN
XDB                            EXPIRED & LOCKED
XS$NULL                        EXPIRED & LOCKED

19 rows selected.

SQL>

见HR (人力资源)用户?锁上了。我们将解锁它并更改它的密码(改为"hr"),以便您可以在Apex中使用它,因为它已经包含了几个充满数据的表。

代码语言:javascript
复制
SQL> alter user hr account unlock;

User altered.

SQL> alter user hr identified by hr;

User altered.

SQL>

以HR的身份进行连接,只为了查看其中包含了什么:

代码语言:javascript
复制
SQL> connect hr/hr@xe
Connected.
SQL> select * From tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
COUNTRIES                      TABLE
DEPARTMENTS                    TABLE
DEPT                           TABLE
EMPLOYEES                      TABLE
EMP_DETAILS_VIEW               VIEW
INSTRUCTOR                     TABLE
JOBS                           TABLE
JOB_HISTORY                    TABLE
LOCATIONS                      TABLE
PRODUCT                        TABLE
REGIONS                        TABLE
RIGHTS                         TABLE
TEACHES                        TABLE
USERS                          TABLE

14 rows selected.

SQL>

如果要创建自己的表,请在人力资源架构中进行。就像我说过的,让SYS和SYSTEM单独使用;它们是特殊的,您不会将它们用于日常用途。如果你做了不寻常的事情,你可能会毁了数据库。

好的;现在运行Apex,连接为admin,导航到“管理工作区”,并:

  • 创建工作区-遵循向导。当询问时,“重用现有模式”回答“是”,并从值列表中选择HR。
  • 管理开发人员和用户-创建用户。跟着巫师。作为工作区,选择先前创建的工作区,设置密码。

完成之后,将admin和登录作为新创建的用户进行注销--提供工作区名称、用户名和密码--这将允许您进入。一旦您进入Apex -作为开发人员-您可以创建您的第一页(交互式报告可能是一个很好的选择)。

祝好运!

编辑:在11 Apex 上内置的Apex

  • 单击“开始-所有程序- Oracle数据库11g速成版-开始”
  • 打开一个页面,提供几个红色按钮;最后一个是“应用程序快捷键”;单击它
  • 登录请求具有DBA权限的数据库用户;输入username = SYS (或SYSTEM)及其密码
  • 现在重定向到"create工作区“页面。项目的标签有下划线;这意味着它们包含帮助(请随意单击)。第一项是“数据库用户”单选按钮,提供“创建新”和“使用现有”--您可以选择“使用现有的”
  • 对于“数据库用户名”,从选择列表中选择"HR“。人力资源部现在解锁了,对吧?如果密码过期,请确保您修改了它,以便设置密码(alter user hr identified by hr)。
  • Application用户名(和密码)表示与Apex相关的用户名(即不是数据库用户)--您将使用它登录到Apex

如果希望查看哪些工作区已经存在,请以SYS的形式连接到数据库(在操作系统命令提示符下使用SQLPlus ):

代码语言:javascript
复制
C:\>sqlplus sys@xe as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Ned Lis 7 12:40:34 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> select * from all_users where username like 'APEX%';

USERNAME                          USER_ID CREATED
------------------------------ ---------- --------
APEX_040000                            47 29.05.14
APEX_PUBLIC_USER                       45 29.05.14

SQL> -- describe table that contains info about workspaces
SQL> desc apex_040000.apex_workspaces
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 WORKSPACE                                 NOT NULL VARCHAR2(255)
 SOURCE_IDENTIFIER                                  VARCHAR2(8)
 SCHEMAS                                            NUMBER
 LAST_PURGED_SESSION                                DATE
 ALLOW_APP_BUILDING_YN                              VARCHAR2(1)
 ALLOW_SQL_WORKSHOP_YN                              VARCHAR2(1)
 ALLOW_WEBSHEET_DEV_YN                              VARCHAR2(1)
 ALLOW_TEAM_DEVELOPMENT_YN                          VARCHAR2(1)
 ALLOW_TO_BE_PURGED_YN                              VARCHAR2(1)
 SESSIONS                                           NUMBER
 APPLICATIONS                                       NUMBER
 APPLICATION_PAGES                                  NUMBER
 APEX_USERS                                         NUMBER
 APEX_DEVELOPERS                                    NUMBER
 APEX_WORKSPACE_ADMINISTRATORS                      NUMBER
 FILES                                              NUMBER
 SQL_SCRIPTS                                        NUMBER
 TRANSLATION_MESSAGES                               NUMBER
 FILE_STORAGE                                       NUMBER
 LAST_LOGGED_PAGE_VIEW                              DATE
 PAGE_VIEWS                                         NUMBER
 WORKSPACE_ID                              NOT NULL NUMBER

SQL> col workspace format a10
SQL> select workspace, source_identifier, apex_developers
  2  from apex_040000.apex_workspaces;

WORKSPACE  SOURCE_I APEX_DEVELOPERS
---------- -------- ---------------
HR         HR                     1
INTERNAL                          0

SQL>

如果HR工作区已经包含,这意味着您已经创建了它。

在web浏览器中,以管理员身份连接(使用地址admin)。(工作区名称为“内部”;您不必输入它)。用户名=管理员,密码=.嗯,不太确定。试试SYS密码。如果你不能连接,你可以更改密码。在磁盘上找到名为APXCHPWD.SQL (“APXCHPWD.SQL”)的文件;例如,它将位于C:\oraclexe\app\oracle\product\11.2.0\server\apex\apxchpwd.sql目录中。在连接为SYS的SQLPlus中,执行该文件:

代码语言:javascript
复制
SQL> show user
USER is "SYS"
SQL> @C:\oraclexe\app\oracle\product\11.2.0\server\apex\apxchpwd.sql
Enter a value below for the password for the Application Express ADMIN user.


Enter a password for the ADMIN user              []

Session altered.

...changing password for ADMIN

PL/SQL procedure successfully completed.


Commit complete.

SQL>

管理员现在将有您刚刚输入的密码,所以-返回到Apex管理,连接;您将不得不更改密码,所以-做它,并再次连接。

现在您将看到“管理工作区”按钮。在那里,有很多的链接,可以做一些事情。如果需要,可以删除HR工作区(遵循“”链接)并再次创建它。

下一步是创建一个开发人员-使用“管理开发人员和用户”链接。一旦您这样做,您应该能够以开发人员身份登录到Apex,使用"HR“作为工作区名称,使用开发人员用户名和密码作为凭据。

为了能够同时调整Apex作为管理员并作为开发人员进行连接,使用不同的浏览器打开一个新连接(例如,Chrome表示一件事,Internet Explorer用于另一件事情)--如果您使用相同的浏览器(但不同的选项卡,甚至完全不同的浏览器会话),它将无法工作--新连接将终止先前的连接。

我希望以上这些都能让你开始工作。

显然,内置的Apex版本是4.0.2 (相当旧的版本,至少5-6年),但在一开始就可以了。升级到更新的版本并不困难--下载并运行SQL文件,为您完成一切。只需遵循安装指南。

我还建议您阅读并遵循4.0 Apex用户指南,这样我就不必在Stack Overflow上创建教程了:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52682031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档