APEX(Oracle Application Express)是Oracle推出的低代碼(Low-code)開發平臺,它與Oracle資料庫緊密集成,為您提供了構建應用所需的全部工具。這是一款面向廣泛用戶的開發工具,使得您可以在少寫代碼甚至不寫代碼的情況下即可開發出各種應用。例如數據加載、批量數據上傳,數據填報、數據可視化等等。
官網地址為:https://apex.oracle.com/zh-cn/platform/。
APEX當前最新版本為20.2,下載地址為:https://www.oracle.com/tools/downloads/apex-downloads.html。
由於Oracle 21c當中也涉及了APEX不少的新內容,所以這裡簡要介紹一下如何自行部署一套APEX,以便您可以隨時進行練習。當然,如果您當前正在使用ADW,那麼ADW自身就已經配置好了APEX,您只需要登錄即可使用。
環境
作業系統:OEL7.7
中間件:ORDS standalone模式
資料庫版本:Oracle database 19.2
目標容器:CDB架構, pdb為 orclpdb
PDB sys用戶的密碼為 oracle
官方參考文檔:https://docs.oracle.com/en/database/oracle/application-express/19.2/htmig/index.html
我這裡以APEX 19.2+DB 19.2為例來演示如何在本地環境(或者是虛擬機環境)中安裝及配置APEX。各位也可以使用最新的20.2版本。
詳細步驟
1,下載並安裝APEX 19.2(假設OS及DB已經安裝就緒)。
19.2版本的下連結為:https://www.oracle.com/tools/downloads/apex-192-downloads.html。建議下載多語言版本(All languages),這樣可以在後面將環境語言設置為中文。
然後進行如下設置:
sqlplus / as sysdba
startup
alter pluggable database all open;
alter pluggable database orclpdb save state;
——保持pdb的打開狀態,這樣以後每次打開資料庫時,該pdb即自動打開。
alter session set container=orclpdb;
exec dbms_xdb.sethttpport(0);
create tablespace apex datafile 『/u01/app/oracle/orclpdb/apex01.dbf』 size 100m autoextend on maxsize 10G;
——設置APEX使用的表空間。
@apexins.sql APEX APEX TEMP /i/
alter user APEX_PUBLIC_USER identified by "apex_Passw0rd" account unlock;
begin
apex_util.set_security_group_id( 10 );
apex_util.create_user(
p_user_name => 'ADMIN',
p_email_address => 'your@emailaddress.com',
p_web_password => 'apex_Passw0rd',
p_developer_privs => 'ADMIN' );
apex_util.set_security_group_id( null );
commit;
end;
/
——設置APEX及管理用戶。當然在這裡您也可以使用apxchpwd.sql腳本完成。並且,在 APEX的管理用戶admin被 lock時,也可以使用該腳本來重置admin用戶的密碼。
2,安裝ORDS。
下載連結為:https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads.html。
安裝命令:java -jar ords.war install advanced
然後按照提示輸入相應的值即可。
Enter the name of the database server [localhost]:
Enter the database listen port [1521]:
Enter 1 to specify the database service name, or 2 to specify the database SID [1]:
Enter the database service name [orclpdb]:
Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip this step [1]:
Enter the database password for ORDS_PUBLIC_USER:
Confirm password:
Requires to login with administrator privileges to verify Oracle REST Data Services schema.
Enter the administrator username:sys
Enter the database password for SYS AS SYSDBA:
Confirm password:
······(中間輸出省略)
2020-03-29 10:49:11.236:INFO:oejsh.ContextHandler:main: Started o.e.j.s.ServletContextHandler@68e5eea7{/ords,null,AVAILABLE}
2020-03-29 10:49:11.238:INFO:oejsh.ContextHandler:main: Started o.e.j.s.h.ContextHandler@55740540{/i,null,AVAILABLE}
2020-03-29 10:49:11.288:INFO:oejs.AbstractConnector:main: Started ServerConnector@f1da57d{HTTP/1.1,[http/1.1, h2c]}{0.0.0.0:8080}
2020-03-29 10:49:11.289:INFO:oejs.Server:main: Started @142326ms
Mar 29, 2020 10:59:10 AM
WARNING:
** Request had db ELAPSED time of :6841ms **
配置ORDS
SYS@db19c> alter session set container=orclpdb;
SYS@db19c> @apex_rest_config.sql
網絡設置
declare
l_acl_path varchar2(4000);
l_apex_schema varchar2(100);
begin
for c1 in (select schema from sys.dba_registry where comp_id =
'APEX') loop
l_apex_schema := c1.schema;
end loop;
sys.dbms_network_acl_admin.append_host_ace(
host => '*',
ace => xs$ace_type(privilege_list => xs$name_list('connect'),
principal_name => l_apex_schema,
principal_type => xs_acl.ptype_db));
commit;
end;
/
中文環境設置
/u01/app/oracle/apex/apex/builder/zh-cn
[oracle@apex192 zh-cn]$ sqlplus / as sysdba
alter session set container=orclpdb;
alter session set current_schema=apex_190200;
@load_zh-cn.sql;
參數設置
ALTER SYSTEM SET JOB_QUEUE_PROCESSES =100;
到此,APEX就配置完畢了。
http://locahost:8080/apex/apex_admin
——APEX 管理用戶admin登錄地址
http://locahost:8080/apex/apex
——普通用戶登錄地址
由於APEX是依賴於Oracle資料庫的,因此在您下一次使用APEX時,可以按照如下的順序來啟動之:
1, 啟動資料庫
sqlplus / as sysdba
startup
2,啟動監聽
lsnrctl start
3,啟動 ORDS
java -jar ords.war standalone &
當然,簡便起見,您也可以寫一個簡單的啟動腳本:
[oracle@apex192 ~]$ cat start_apex.sh
#!/bin/sh
export ORACLE_SID=db19c
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.2.0/db_1
#start listener
lsnrctl start
#start db,and register instance to listener.
sqlplus /nolog <<EOF
connect / as sysdba
startup
alter system register
exit
EOF
#start ords.
cd /u01/app/oracle/apex
java -jar ords.war standalone &
這樣,以後每次執行 sh start_apex.sh即可。
等出現如下字樣時,表示環境就緒:
2021-01-10 14:25:08.808:INFO:oejs.Server:main: Started @15104ms
界面如下:
其他注意事項:
1 卸載 ORDS命令為 java -jar ords.war uninstall
2 多租戶下可能會遇到 APEX_PUBLIC_USER帳號被鎖定的問題 ,可以在cdbroot下 進行解鎖操作。或者執行 alter session set "_ORACLE_SCRIPT"=true; 在 pdb下解鎖。
關於該隱含參數,可以參考:https://mikedietrichde.com/2020/02/10/be-aware-when-you-use-_oracle_script-in-scripts/。
關於APEX的內容,諸位可以參考相應的官方文檔:https://docs.oracle.com/en/database/oracle/application-express/index.html。這裡不再贅述。