오라클자바커뮤니티에서 설립한 개발자실무교육6년차 오엔제이프로그래밍 실무교육센터
(신입사원채용무료교육, 오라클, SQL, 튜닝, 자바, 스프링,
Ajax, jQuery, 안드로이드, 아이폰, 닷넷, C#, ASP.Net) www.onjprogramming.co.kr
오라클 9i Release2 이후 Oracle Server에는 Apache HTTP server에 embedded HTTP server가
포함되었는데
Oracle 10g Release 2에서는 mod_plsql을 통해 PL/SQL application을 실행하기 위해 embedded PL/SQL gateway
사용할 수 있게 되었습니다.
아래의 예를 참고하세요~
---------------------------------
1. CONN sys/password AS SYSDBA
---------------------------------
-----------------------------------------------------------------------------------------------------
2. SCOTT 계정이 만들어져 있지 않은 경우에만 실행 하세요~
-----------------------------------------------------------------------------------------------------
@$ORACLE_HOME/rdbms/admin/utlsampl.sql
ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK;
-----------------------------------------------------------------------------------------------------
3. DAO(DataBase Access Descriptor)를 만들기 위해 create_dad를 실행
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.create_dad (
dad_name => 'my_epg_dad',
path => '/my_epg_dad/*');
END;
/
-----------------------------------------------------------------------------------------------------
4. 현재 설정된 매핑은 get_all_dad_mappings procedure를 통해 확인 가능 합니다.
-----------------------------------------------------------------------------------------------------
SET SERVEROUTPUT ON SIZE UNLIMITED
DECLARE
l_paths DBMS_EPG.varchar2_table;
BEGIN
DBMS_EPG.get_all_dad_mappings (
dad_name => 'my_epg_dad',
paths => l_paths);
DBMS_OUTPUT.put_line('Mappings');
DBMS_OUTPUT.put_line('========');
FOR i IN 1 .. l_paths.count LOOP
DBMS_OUTPUT.put_line(l_paths(i));
END LOOP;
END;
/
Mappings
========
/my_epg_dad/*
PL/SQL procedure successfully completed.
-----------------------------------------------------------------------------------------------------
5. UNMAP_DAD and MAP_DAD를 통해 존재하는 DAD에 대해 Alter가 가능 합니다.
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.unmap_dad (
dad_name => 'my_epg_dad',
path => '/my_epg_dad/*');
DBMS_EPG.map_dad (
dad_name => 'my_epg_dad',
path => '/my_epg_dad/*');
END;
/
-----------------------------------------------------------------------------------------------------
6. SET_DAD_ATTRIBUTE procedure를 통해 attribute를 set 하는데 아래는 DAD의 DB UserName과
default page를 set 하는겁니다.
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.set_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => 'database-username',
attr_value => 'SCOTT');
DBMS_EPG.set_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => 'default-page',
attr_value => 'home');
END;
/
-----------------------------------------------------------------------------------------------------
7. GET_ALL_DAD_ATTRIBUTES를 통해 모든 DAD Attribute에 대해 검색 가능 합니다.
-----------------------------------------------------------------------------------------------------
SET SERVEROUTPUT ON SIZE UNLIMITED
DECLARE
l_attr_names DBMS_EPG.varchar2_table;
l_attr_values DBMS_EPG.varchar2_table;
BEGIN
DBMS_OUTPUT.put_line('Attributes');
DBMS_OUTPUT.put_line('==========');
DBMS_EPG.get_all_dad_attributes (
dad_name => 'my_epg_dad',
attr_names => l_attr_names,
attr_values => l_attr_values);
FOR i IN 1 .. l_attr_names.count LOOP
DBMS_OUTPUT.put_line(l_attr_names(i) || '=' || l_attr_values(i));
END LOOP;
END;
/
-----------------------------------------------------------------------------------------------------
8. GET_DAD_ATTRIBUTE function은 특정한 attribute에 대해 조회하는 기능을 가집니다.
-----------------------------------------------------------------------------------------------------
SET SERVEROUTPUT ON SIZE UNLIMITED
DECLARE
l_attr_name VARCHAR2(30);
l_attr_value VARCHAR2(30);
BEGIN
DBMS_OUTPUT.put_line('Attribute');
DBMS_OUTPUT.put_line('=========');
l_attr_name := 'database-username';
l_attr_value := DBMS_EPG.get_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => l_attr_name);
DBMS_OUTPUT.put_line(l_attr_name || '=' || l_attr_value);
l_attr_name := 'default-page';
l_attr_value := DBMS_EPG.get_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => l_attr_name);
DBMS_OUTPUT.put_line(l_attr_name || '=' || l_attr_value);
END;
/
Attribute
=========
database-username=SCOTT
default-page=home
PL/SQL procedure successfully completed.
-----------------------------------------------------------------------------------------------------
8.DELETE_DAD_ATTRIBUTE procedure는 DAD Attribute를 삭제 합니다.
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.delete_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => 'database-username');
END;
/
-----------------------------------------------------------------------------------------------------
9. AUTHORIZE_DAD procedure는 특정한 Achema가 DAD를 경유하여 애겟스가 가능하게 합니다.
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.authorize_dad (
dad_name => 'my_epg_dad',
user => 'SCOTT');
END;
/
The authorization can be reversed using the DEAUTHORIZE_DAD procedure.
BEGIN
DBMS_EPG.deauthorize_dad (
dad_name => 'my_epg_dad',
user => 'SCOTT');
END;
/
-----------------------------------------------------------------------------------------------------
10. DAD의 설정이 완료되면 DAD Test를 위해 아래의 procedure를 SCOTT 계정에서 컴파일 합니다.
-----------------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE scott.home IS
BEGIN
HTP.htmlopen;
HTP.headopen;
HTP.title('This is a test page!');
HTP.headclose;
HTP.bodyopen;
HTP.print('This is a test page! DateTime: ' || TO_CHAR(SYSTIMESTAMP));
HTP.bodyclose;
HTP.htmlclose;
END home;
/
-----------------------------------------------------------------------------------------------------
11. 아래 내용을 listener.ora에 추가한 후 리스너를 restart 합니다.
-----------------------------------------------------------------------------------------------------
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=8080))(Presentation=HTTP)(Session=RAW)
)
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=2100))(Presentation=FTP)(Session=RAW)
)
-----------------------------------------------------------------------------------------------------
12. 브라우저를 통해 확인
-----------------------------------------------------------------------------------------------------
http://<server-name>:8080/my_epg_dad/home
이젠 PL/SQL Web Toolkit or PL/SQL Server Pages를 통해 PL/SQL web applications을 개발할 준비가 되었습니다.
나름대로 별도의 자료로 공부해 보시기를 바라며...
-----------------------------------------------------------------------------------------------------
13. DROP_DAD는 원치않는 DAD를 삭제 합니다.
-----------------------------------------------------------------------------------------------------
-- Cleanup the DAD.
BEGIN
DBMS_EPG.drop_dad (
dad_name => 'my_epg_dad');
END;
/
Oracle 10g Release 2에서는 mod_plsql을 통해 PL/SQL application을 실행하기 위해 embedded PL/SQL gateway
사용할 수 있게 되었습니다.
아래의 예를 참고하세요~
---------------------------------
1. CONN sys/password AS SYSDBA
---------------------------------
-----------------------------------------------------------------------------------------------------
2. SCOTT 계정이 만들어져 있지 않은 경우에만 실행 하세요~
-----------------------------------------------------------------------------------------------------
@$ORACLE_HOME/rdbms/admin/utlsampl.sql
ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK;
-----------------------------------------------------------------------------------------------------
3. DAO(DataBase Access Descriptor)를 만들기 위해 create_dad를 실행
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.create_dad (
dad_name => 'my_epg_dad',
path => '/my_epg_dad/*');
END;
/
-----------------------------------------------------------------------------------------------------
4. 현재 설정된 매핑은 get_all_dad_mappings procedure를 통해 확인 가능 합니다.
-----------------------------------------------------------------------------------------------------
SET SERVEROUTPUT ON SIZE UNLIMITED
DECLARE
l_paths DBMS_EPG.varchar2_table;
BEGIN
DBMS_EPG.get_all_dad_mappings (
dad_name => 'my_epg_dad',
paths => l_paths);
DBMS_OUTPUT.put_line('Mappings');
DBMS_OUTPUT.put_line('========');
FOR i IN 1 .. l_paths.count LOOP
DBMS_OUTPUT.put_line(l_paths(i));
END LOOP;
END;
/
Mappings
========
/my_epg_dad/*
PL/SQL procedure successfully completed.
-----------------------------------------------------------------------------------------------------
5. UNMAP_DAD and MAP_DAD를 통해 존재하는 DAD에 대해 Alter가 가능 합니다.
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.unmap_dad (
dad_name => 'my_epg_dad',
path => '/my_epg_dad/*');
DBMS_EPG.map_dad (
dad_name => 'my_epg_dad',
path => '/my_epg_dad/*');
END;
/
-----------------------------------------------------------------------------------------------------
6. SET_DAD_ATTRIBUTE procedure를 통해 attribute를 set 하는데 아래는 DAD의 DB UserName과
default page를 set 하는겁니다.
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.set_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => 'database-username',
attr_value => 'SCOTT');
DBMS_EPG.set_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => 'default-page',
attr_value => 'home');
END;
/
-----------------------------------------------------------------------------------------------------
7. GET_ALL_DAD_ATTRIBUTES를 통해 모든 DAD Attribute에 대해 검색 가능 합니다.
-----------------------------------------------------------------------------------------------------
SET SERVEROUTPUT ON SIZE UNLIMITED
DECLARE
l_attr_names DBMS_EPG.varchar2_table;
l_attr_values DBMS_EPG.varchar2_table;
BEGIN
DBMS_OUTPUT.put_line('Attributes');
DBMS_OUTPUT.put_line('==========');
DBMS_EPG.get_all_dad_attributes (
dad_name => 'my_epg_dad',
attr_names => l_attr_names,
attr_values => l_attr_values);
FOR i IN 1 .. l_attr_names.count LOOP
DBMS_OUTPUT.put_line(l_attr_names(i) || '=' || l_attr_values(i));
END LOOP;
END;
/
-----------------------------------------------------------------------------------------------------
8. GET_DAD_ATTRIBUTE function은 특정한 attribute에 대해 조회하는 기능을 가집니다.
-----------------------------------------------------------------------------------------------------
SET SERVEROUTPUT ON SIZE UNLIMITED
DECLARE
l_attr_name VARCHAR2(30);
l_attr_value VARCHAR2(30);
BEGIN
DBMS_OUTPUT.put_line('Attribute');
DBMS_OUTPUT.put_line('=========');
l_attr_name := 'database-username';
l_attr_value := DBMS_EPG.get_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => l_attr_name);
DBMS_OUTPUT.put_line(l_attr_name || '=' || l_attr_value);
l_attr_name := 'default-page';
l_attr_value := DBMS_EPG.get_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => l_attr_name);
DBMS_OUTPUT.put_line(l_attr_name || '=' || l_attr_value);
END;
/
Attribute
=========
database-username=SCOTT
default-page=home
PL/SQL procedure successfully completed.
-----------------------------------------------------------------------------------------------------
8.DELETE_DAD_ATTRIBUTE procedure는 DAD Attribute를 삭제 합니다.
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.delete_dad_attribute (
dad_name => 'my_epg_dad',
attr_name => 'database-username');
END;
/
-----------------------------------------------------------------------------------------------------
9. AUTHORIZE_DAD procedure는 특정한 Achema가 DAD를 경유하여 애겟스가 가능하게 합니다.
-----------------------------------------------------------------------------------------------------
BEGIN
DBMS_EPG.authorize_dad (
dad_name => 'my_epg_dad',
user => 'SCOTT');
END;
/
The authorization can be reversed using the DEAUTHORIZE_DAD procedure.
BEGIN
DBMS_EPG.deauthorize_dad (
dad_name => 'my_epg_dad',
user => 'SCOTT');
END;
/
-----------------------------------------------------------------------------------------------------
10. DAD의 설정이 완료되면 DAD Test를 위해 아래의 procedure를 SCOTT 계정에서 컴파일 합니다.
-----------------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE scott.home IS
BEGIN
HTP.htmlopen;
HTP.headopen;
HTP.title('This is a test page!');
HTP.headclose;
HTP.bodyopen;
HTP.print('This is a test page! DateTime: ' || TO_CHAR(SYSTIMESTAMP));
HTP.bodyclose;
HTP.htmlclose;
END home;
/
-----------------------------------------------------------------------------------------------------
11. 아래 내용을 listener.ora에 추가한 후 리스너를 restart 합니다.
-----------------------------------------------------------------------------------------------------
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=8080))(Presentation=HTTP)(Session=RAW)
)
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=2100))(Presentation=FTP)(Session=RAW)
)
-----------------------------------------------------------------------------------------------------
12. 브라우저를 통해 확인
-----------------------------------------------------------------------------------------------------
http://<server-name>:8080/my_epg_dad/home
이젠 PL/SQL Web Toolkit or PL/SQL Server Pages를 통해 PL/SQL web applications을 개발할 준비가 되었습니다.
나름대로 별도의 자료로 공부해 보시기를 바라며...
-----------------------------------------------------------------------------------------------------
13. DROP_DAD는 원치않는 DAD를 삭제 합니다.
-----------------------------------------------------------------------------------------------------
-- Cleanup the DAD.
BEGIN
DBMS_EPG.drop_dad (
dad_name => 'my_epg_dad');
END;
/
댓글 없음:
댓글 쓰기