Surviving without Oracle HTTP Server Конфигуриране на Oracle Embedded PLSQL Gateway Стоян Иванов Семантек България ООД Проблем • Oracle Express Edition се предлага без Oracle HTTP Server powered.
Download ReportTranscript Surviving without Oracle HTTP Server Конфигуриране на Oracle Embedded PLSQL Gateway Стоян Иванов Семантек България ООД Проблем • Oracle Express Edition се предлага без Oracle HTTP Server powered.
Surviving without Oracle HTTP Server
Конфигуриране на Oracle Embedded PLSQL Gateway Стоян Иванов Семантек България ООД
Проблем
• • • • Oracle Express Edition се предлага без Oracle HTTP Server powered by Apache Има много приложения, разработени с MOD_PLSQL Преписването им на APEX не е тривиална задача Има много разработчици, които умеят да пишат приложения с MOD_PLSQL и нямат време и/или желание да учат APEX
Решение – Oracle EPG
• • • • Базиран на XMLDB Използва Oracle Net Listener Позволява дефинирането на DAD-ове Работи както на OracleXE, така и на Standard и Enterprise версията
Необходими стъпки
• • • • • Инсталиране на XMLDB Разрешаване на HTTP порт Разрешаване на remote access Създаване на функция, управляваща security-то Създаване на DAD (Data Access Descriptor)
Незадължителни стъпки
• • • Създаване на допълнителни виртуални пътища Разрешаване на достъп за потребителя ANONYMOUS Качване на файлове (картинки, cascading stylesheets, javascript, …)
Други благинки
• • Използване на Oracle EPG като WebDAV сървър Използване на Oracle EPG като FTP сървър
Необходими стъпки
• • • • •
Инсталиране на XMLDB
Разрешаване на HTTP порт Разрешаване на remote access Създаване на функция, управляваща security-то Създаване на DAD (Data Access Descriptor)
Инсталиране на XMLDB
• • • • Инсталиран по подразбиране Може да се преинсталира използвайки DBCA Потребителя, с който се конфигурира, трябва да има ролята XDBADMIN Пакети DBMS_XDB и DBMS_EPG
Необходими стъпки
• • • • • Инсталиране на XMLDB
Разрешаване на HTTP порт
Разрешаване на remote access Създаване на функция, управляваща security-то Създаване на DAD (Data Access Descriptor)
Конфигурация на XDB
• select * from xdb.xdb$config SYS_NC_ROWINFO$ -------------------------------------------------------------------------------
Разрешаване на HTTP порт
SQL> update xdb.xdb$config e Set xmldata."sysconfig"."protocolconfig"."httpconfig".
"http-port" = ' 8080 ';
1 row updated.
SQL> commit;
Commit complete.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
...
Database mounted.
Database opened.
Разрешаване на HTTP порт
lsnrctl status
… Listening Endpoints Summary...
…
DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ivanov.semantec.b
g)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
…
Service "SPIXDB" has 1 instance(s).
Instance "spi", status READY, has 1 handler(s) for this service...
Service "SPI_XPT" has 1 instance(s).
Instance "spi", status READY, has 1 handler(s) for this service...
The command completed successfully
Разрешаване на HTTP порт
• •
EXEC DBMS_XDB.SETHTTPPORT(8080);
Няма нужда от рестартиране на базата
Необходими стъпки
• • • • • Инсталиране на XMLDB Разрешаване на HTTP порт
Разрешаване на remote access
Създаване на функция, управляваща security-то Създаване на DAD (Data Access Descriptor)
Разрешаване на remote access
update xdb.xdb$config e Set e.xmldata."sysconfig"."protocolconfig".
"httpconfig"."http-host" =
NULL
/ update xdb.xdb$config e set e.xmldata."sysconfig"."protocolconfig".
"httpconfig"."http-host" = ‘
localhost
’ /
Разрешаване на remote access
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
За Oracle Standard Edition и Oracle Enterprise Edition ако в
LISTENER.ORA
имаме
HOST=localhost
или
HOST=127.0.0.1
тогава имаме само локален достъп
Необходими стъпки
• • • • • Инсталиране на XMLDB Разрешаване на HTTP порт Разрешаване на remote access
Създаване на функция, управляваща security-то
Създаване на DAD (Data Access Descriptor)
Създаване на функция, управляваща security-то • • • • Поддържа BASIC authentication Не поддържа кодиране на паролата в DAD За custom authentication няма друг избор освен да се ползва потребителя ANONYMOUS Директива
request-validation-function
DAD на
Създаване на функция, управляваща security-то CREATE FUNCTION epg_access_validation (
PROCEDURE_NAME
IN VARCHAR2 ) RETURN BOOLEAN IS BEGIN IF UPPER(procedure_name) IN (…) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END epg_access_validation /
Необходими стъпки
• • • • • Инсталиране на XMLDB Разрешаване на HTTP порт Разрешаване на remote access Създаване на функция, управляваща security-то
Създаване на DAD (Data Access Descriptor)
Създаване на DAD
exec dbms_epg.create_dad( 'DADNAME','/dadvirtualpath/*'); exec dbms_epg.set_dad_attribute( 'DADNAME', 'default-page','mypackage.myhome'); exec dbms_epg.set_dad_attribute( 'DADNAME', 'request-validation-function', 'epg_access_validation');
Незадължителни стъпки
• • •
Създаване на допълнителни виртуални пътища
Разрешаване на достъп за потребителя ANONYMOUS Качване на файлове (картинки, cascading stylesheets, javascript, …)
Създаване на допълнителни виртуални пътища
DBMS_EPG.map_dad ( dad_name => ‘DADNAME', path => '/newvirtualpath/*‘ ); DBMS_EPG.unmap_dad ( dad_name => ‘DADNAME', path => '/newvirtualpath/*‘ );
Незадължителни стъпки
• • • Създаване на допълнителни виртуални пътища
Разрешаване на достъп за потребителя ANONYMOUS
Качване на файлове (картинки, cascading stylesheets, javascript, …)
Разрешаване на достъп за потребителя ANONYMOUS
exec dbms_epg.set_dad_attribute( 'DADNAME', ); 'database-username', 'ANONYMOUS‘
Незадължителни стъпки
• • • Създаване на допълнителни виртуални пътища Разрешаване на достъп за потребителя ANONYMOUS
Качване на файлове (картинки, cascading stylesheets, javascript, …)
Качване на файлове
• • Използва се DBMS_XDB В общи линии не е документирано, представа може да се добие от скрипта APEX_EPG_CONFIG.sql, който идва с Oracle Application Express
Качване на файлове
dbms_xdb.createfolder(directory_path); dbms_xdb.createresource( resource_path, content_bfile, nls_charset_id );
Използуване на Oracle EPG като WebDAV сървър
Използване на Oracle EPG като FTP сървър •
EXEC DBMS_XDB.SETFTPPORT(21); SQL> update xdb.xdb$config e Set xmldata."sysconfig"."protocolcon fig".“ftpconfig".“ftp-port" = ‘ 21 ';
Използване на Oracle EPG като FTP сървър e:\>ftp ivanov Connected to ivanov.semantec.bg.
220- ivanov 220 ivanov FTP Server (Oracle XML DB/Oracle Database) ready.
User (ivanov.semantec.bg:(none)): system 331 pass required for SYSTEM Password: 230 SYSTEM logged in ftp> dir 200 PORT Command successful 150 ASCII Data Connection drw-r--r- 2 SYS oracle 0 ┐┐┐┐. 19 11:07 public drw-r--r- 2 SYS oracle 0 ┐┐┐┐. 19 11:07 sys -rw-r--r- ftp> 1 SYS oracle 0 ┐┐┐. 19 20:50 xdbconfig.xml
226 ASCII Transfer Complete ftp: 196 bytes received in 0,01Seconds 19,60Kbytes/sec.