前幾時幫朋友安裝了一個APEX 3.2環境,參照網上的文檔和官方文檔進行安裝,順利完成。
APEX安裝前的準備
登錄系統:sqlplus system/0621
1. 從數據字典v$instance中獲取數據庫的實例名和版本號:
SQL> conn system/oracle
Connected.
SQL> show user;
USER is "SYSTEM"
SQL> select instance_name,version from v$instance;
INSTANCE_NAME VERSION
---------------- -----------------
ORCL 11.1.0.6.0
2. 從數據字典v$version中獲取版本的詳細信息:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 – Production
3.確認oracle所使用的參數文件是否爲二進制的參數文件(spfile表明爲二進制文件):
SQL> show parameter pfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/oracle/dbs/spfileORCL.ora
4. 確認oracle是否使用的是自動內存管理:
SQL> show parameter memory_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_target big integer 396M
5. 查看錶空間是否爲自動擴展:
SQL> select tablespace_name, autoextensible from dba_data_files;
TABLESPACE_NAME AUT
------------------------------ ---
USERS YES
UNDOTBS1 YES
SYSAUX YES
SYSTEM YES
EXAMPLE YES
PEIHU NO
PEIHU YES
7 rows selected.
嵌入式PL/SQL網關配置
使用嵌入式PL/SQL網關(也稱連接器,Gateway)安裝和配置Oracle Application Express的具體步驟如下:
1. 安裝Oracle Application Express.
1.1先進入到APEX的解壓根目錄
我的目錄是/u01/apex(這個一定要做,否則等下無法正確安裝)
[oracle@oracle11g ~]$ cd /u01/apex
[oracle@oracle11g apex]$ ls
apex_epg_config_core.sql apxe111.sql core
apex_epg_config.sql apxldimg.sql coreins.sql
apexins.sql apxpatch.sql devins.sql
apexvalidate.sql apxrelod.sql doc
apxchpwd.sql apxremov.sql endins.sql
apxconf.sql apxrtins.sql images
apxdbmig.sql apxsqler.sql install2011-03-14_01-45-58.log
apxdevrm.sql apxxemig.sql load_trans.sql
apxdvins.sql apxxepwd.sql owa
apxe101.sql builder utilities
apxe102.sql catapx.sql
1.2然後用SYS身份登陸
SQL> conn / as sysdba
Connected.
SQL> show user
USER is "SYS"
1.3安裝腳本
SQL> @apexins SYSAUX SYSAUX TEMP /i/
其中:apexins爲安裝腳本文件名稱
SYSAUX SYSAUX 第一個SYSAUX爲數據存放的表空間,第二個爲用戶信息存放表空間
TEMP爲排序所用的表空間
/i/表示EXPRESS中存放的虛擬目錄
1.4檢查是否安裝完畢
SQL> select username,created from dba_users
2 where username like 'APEX%';
USERNAME CREATED
------------------------------ ---------
APEX_030200 14-MAR-11
APEX_PUBLIC_USER 03-AUG-07
SQL> select username,created from dba_users where username like 'FLOW%';
USERNAME CREATED
------------------------------ ---------
FLOWS_FILES 03-AUG-07
FLOWS_030000 03-AUG-07
2. 修改Admin帳戶密碼
SQL> @apxchpwd
Enter a value below for the password for the Application Express ADMIN user.
Enter a password for the ADMIN user []
輸入你的密碼:oracle
Session altered.
...changing password for ADMIN
PL/SQL procedure successfully completed.
Commit complete.
3. 配置嵌入式PL/SQL網關。
SQL> @apex_epg_config /u01/apex
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
Directory created.
declare
*
ERROR at line 1:
ORA-22288: file or LOB operation FILEOPEN failed
No such file or directory
ORA-06512: at "SYS.XMLTYPE", line 296
ORA-06512: at line 18
Commit complete.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
timing for: Load Images
Elapsed: 00:00:03.68
Session altered.
PL/SQL procedure successfully completed.
Commit complete.
Session altered.
Directory dropped.
錯誤原因是目錄不對。解決辦法:
改 /tmp 爲你解壓apex後所在的目錄,例如我的是:/u01/apex,那麼/tmp爲/u01
文檔做了註釋,但地方不對,在@apxldimg.sql是有如下說明:
引用
Tip:
The above examples assume that you unzipped Oracle Application Express in a directory called TEMP on Windows and tmp on UNIX or Linux.
糾正後如下:
SQL> @apex_epg_config /u01
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
Directory created.
PL/SQL procedure successfully completed.
Commit complete.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
timing for: Load Images
Elapsed: 00:01:45.40
Session altered.
PL/SQL procedure successfully completed.
Commit complete.
Session altered.
Directory dropped.
4. 覈實和開啓Oracle XML DB HTTP服務器的端口。
4.1查看端口是否開啓,爲0未開啓,大於0表示開啓
SQL> select DBMS_XDB.GETHTTPPORT FROM DUAL;
GETHTTPPORT
-----------
0
4.2開啓制定端口
SQL> exec DBMS_XDB.SETHTTPPORT(8080);
PL/SQL procedure successfully completed.
4.3 再次查詢
SQL> select DBMS_XDB.GETHTTPPORT FROM DUAL;
GETHTTPPORT
-----------
8080
5. 開啓Oracle 11g數據庫中的網絡服務
在SQL中運行開啓網絡服務語句如下:
SQL>
DECLARE
ACL_PATH VARCHAR2(4000);
ACL_ID RAW(16);
BEGIN
-- Look for the ACL currently assigned to '*' and give APEX_030200
-- the "connect" privilege if APEX_030200 does not have the privilege yet.
SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS
WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL;
-- Before checking the privilege, ensure that the ACL is valid
-- (for example, does not contain stale references to dropped users).
-- If it does, the following exception will be raised:
--
-- ORA-44416: Invalid ACL: Unresolved principal 'APEX_030200'
-- ORA-06512: at "XDB.DBMS_XDBZ", line ...
--
SELECT SYS_OP_R2O(extractValue(P.RES, '/Resource/XMLRef')) INTO ACL_ID
FROM XDB.XDB$ACL A, PATH_VIEW P
WHERE extractValue(P.RES, '/Resource/XMLRef') = REF(A) AND
EQUALS_PATH(P.RES, ACL_PATH) = 1;
DBMS_XDBZ.ValidateACL(ACL_ID);
IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, 'APEX_030200',
'connect') IS NULL THEN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH,
'APEX_030200', TRUE, 'connect');
END IF;
EXCEPTION
-- When no ACL has been assigned to '*'.
WHEN NO_DATA_FOUND THEN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml',
'ACL that lets power users to connect to everywhere',
'APEX_030200', TRUE, 'connect');
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*');
END;
/
PL/SQL procedure successfully completed.
6.將用戶解鎖
SQL> ALTER USER ANONYMOUS ACCOUNT UNLOCK;
User altered.
7. 安裝中文語言。
[oracle@oracle11g ~]$ set NLS_LANG=American_America.AL32UTF8
[oracle@oracle11g ~]$ sqlplus / as sysdba
SQL> ALTER SESSION SET CURRENT_SCHEMA = APEX_030200;
Session altered
SQL> @/u01/oracle/apex/builder/zh-cn/load_zh-cn.sql
8. 設置JOB_QUERY_PROCESS參數。
查看參數值:
SQL> SELECT VALUE FROM v$parameter WHERE NAME ='job_queue_processes';
VALUE
---------------------------------------------------
1000
得到的值如果爲20以上,則無需更改,否則更改命令如下
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 100
9. 配置SHARED_SERVER參數。
SQL> ALTER SYSTEM SET SHARED_SERVERS = 5 SCOPE=BOTH;
SQL> show parameter shared_servers;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer
shared_servers integer 5
開啓數據庫監聽和數據庫EM
[oracle@oracle11g ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 14-MAR-2011 05:04:28
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Starting /u01/oracle/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.1.0.6.0 - Production
System parameter file is /u01/oracle/network/admin/listener.ora
Log messages written to /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.1.0.6.0 - Production
Listener Parameter File /u01/oracle/network/admin/listener.ora
Listener Log File /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
[oracle@oracle11g ~]$ emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.1.0.6.0
Copyright (c) 1996, 2007 Oracle Corporation. All rights reserved.
https://oracle11g:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control ............. started.
------------------------------------------------------------------
Logs are generated in directory /u01/oracle/oracle11g_ORCL/sysman/log
設置本地環境
1. 登陸APEX管理服務