Oracle Application Express 11g

时间:2018-10-06 18:16:18

标签: oracle oracle-apex privileges

我是Oracle新手,想练习SQL。

我下载了适用于Windows x64的Application Express Edition 11g。我按照说明创建了工作区和用户。

但是,当我尝试创建表时,出现错误消息“ ORA-20000:用户xxx在架构上没有特权。错误检查特权。

但是,当我去查看管理中的用户时,却说我是工作区管理员。我似乎也无法使用安装时创建的密码以SYSTEM或SYS身份登录。

我很困惑。

1 个答案:

答案 0 :(得分:4)

您要处理两个术语:

  • 一个包含表和数据的数据库-表属于诸如SYS或SYSTEM之类的用户-除了为使用现有用户(HR或SCOTT;无论是哪个)解锁之外,您根本不应该使用它们练习
  • Application Express,这是用于访问数据库并创建将管理表中存储的数据的应用程序的工具。以管理员身份登录后,您可以创建工作空间(映射到数据库用户/方案)和开发人员(将创建应用程序)。该“管理员”用户与数据库所有者(系统/系统)有很大不同,因此您不能使用sys作为用户名及其密码登录到Apex。

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

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> 

列出数据库中的用户:

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中使用它,因为它已经包含了几张充满数据的表。

SQL> alter user hr account unlock;

User altered.

SQL> alter user hr identified by hr;

User altered.

SQL>

以HR身份连接,只是要查看其中包含的内容:

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>

如果要创建自己的表,请在HR模式中进行。就像我说的那样,不要理会SYS和SYSTEM。它们很特别,您不会将它们用于日常用途。如果您执行不正常的操作,则可能会破坏数据库。

好;现在运行Apex,以管理员身份连接,导航到“管理工作区”,然后:

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

完成后,以新创建的用户身份退出admin并登录-提供工作区名称,用户名和密码-应该允许您进入。进入Apex后-作为开发人员-您可以创建第一页(交互式报告可能是一个不错的选择)。

祝你好运!

[编辑:11gXE上的内置Apex]

  • 单击开始-所有程序-Oracle数据库11g Express Edition-使用入门
  • 打开一个页面,其中提供了几个红色按钮;最后一个是“ Application Express”;点击它
  • 登录要求具有DBA特权的数据库用户;输入用户名= SYS(或SYSTEM)及其密码
  • 您现在已重定向到“创建Apex工作区”页面。项目标签下划线;这意味着它们包含 help (随时单击)。第一项是“数据库用户”单选按钮,它提供“创建新”和“使用现有”-您将选择“使用现有”
  • 对于“数据库用户名”,从选择列表中选择“ HR”。人力资源现已解锁,对吗?如果它已过期,请确保您已对其进行了更改以设置密码(alter user hr identified by hr
  • Application Express用户名(和密码)代表与Apex相关的用户名(即不是数据库用户)-您将使用它登录到Apex

如果要查看已经存在的工作空间,请以SYS身份连接到数据库(在操作系统命令提示符下使用SQLPlus):

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浏览器中,以管理员身份连接(使用地址http://127.0.0.1:8080/apex/apex_admin)。 (工作区名称是“内部”;您不必输入它)。用户名= admin,密码= ...呵呵,不确定。尝试SYS密码。如果无法连接,则可以更改该密码。在磁盘上找到名为APXCHPWD.SQL的文件(“ Apex更改密码”);例如,它将位于C:\ oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ apex \ apxchpwd.sql目录中。在以SYS连接的SQLPlus中,执行该文件:

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管理员,进行连接;您必须更改该密码-这样做,然后再次连接。

您现在将看到“管理工作区”按钮。在那里,有许多链接可以执行 stuff 。如果需要,您可以删除HR工作区(单击“删除工作区”链接之后),然后重新创建它。

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

为了能够同时将Apex调整为 admin 并以开发人员身份进行连接,请使用不同的浏览器(例如,一件事是Chrome)打开新的连接,另一种是Internet Explorer)-如果您使用相同的浏览器(但使用不同的标签,甚至完全是新的浏览器会话),则将无法正常工作-新的连接会终止上一个连接。

我希望以上内容能帮助您入门。

显然,内置的Apex版本是4.0.2(相当古老的版本,至少5-6年),但是会在一开始就使用。升级到最新版本并不困难-下载它并运行SQL文件即可为您完成所有工作。只需遵循安装指南即可。

我还建议您阅读并遵循《 4.0 Apex用户指南》,这样就不必在此处创建有关Stack Overflow的教程了:)