Surviving without Oracle HTTP Server Конфигуриране на Oracle Embedded PLSQL Gateway Стоян Иванов Семантек България ООД Проблем • Oracle Express Edition се предлага без Oracle HTTP Server powered.

Download Report

Transcript 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$ ------------------------------------------------------------------------------- 900 32 , true 300

Разрешаване на 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.

Въпроси (и евентуално отговори)