<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1048968608851202757</id><updated>2024-10-24T11:33:05.918+03:00</updated><category term="oracle"/><category term="apex"/><category term="oracle apex"/><category term="howto"/><category term="apex 4.0"/><category term="trick"/><category term="bug"/><category term="oracle sql developer"/><category term="debug"/><category term="javascript"/><category term="linux"/><category term="12c"/><category term="built-in"/><category term="debian"/><category term="hack"/><category term="multitenant"/><category term="plugin"/><category term="release"/><category term="tip"/><category term="url syntax"/><category term="ajax"/><category term="apex 4.2"/><category term="blog"/><category term="collection"/><category term="design"/><category term="error"/><category term="firefox"/><category term="fix"/><category term="htmldb_get"/><category term="jasperreports"/><category term="link"/><category term="link dump"/><category term="mono"/><category term="monodevelop"/><category term="mview"/><category term="ora-00600"/><category term="ords"/><category term="patch"/><category term="project"/><category term="quiz"/><category term="remote debug"/><category term="script"/><category term="syntax highlighter"/><category term="xe"/><category term="12.1.0.2"/><category term="16305"/><category term="3.0"/><category term="404"/><category term="5.0"/><category term="503"/><category term="OPEN_NO_MASTER_KEY"/><category term="[kpdbAttachSga: bad pdb]"/><category term="apex listener"/><category term="apex-config.xml"/><category term="article"/><category term="atomacity"/><category term="blob"/><category term="challenge"/><category term="comment"/><category term="concepts"/><category term="consistency"/><category term="count click"/><category term="data modeler"/><category term="data_pump_dir"/><category term="datapump"/><category term="date"/><category term="ddl"/><category term="deb"/><category term="diagnostic"/><category term="download file"/><category term="dump"/><category term="enhancement"/><category term="epg"/><category term="extjs"/><category term="f"/><category term="fail"/><category term="file browse"/><category term="fun"/><category term="generator"/><category term="glassfish"/><category term="gpg"/><category term="grant"/><category term="greasemonkey"/><category term="grid"/><category term="guide"/><category term="hotkeys"/><category term="idea-dev"/><category term="integration"/><category term="interactive report"/><category term="interface"/><category term="internals"/><category term="ir"/><category term="json"/><category term="kill"/><category term="longops"/><category term="migration"/><category term="mini"/><category term="multiple databases"/><category term="multiple operations"/><category term="new features"/><category term="news"/><category term="not found"/><category term="note"/><category term="off topic"/><category term="ora-03113"/><category term="ora-12705"/><category term="ora-28000"/><category term="ora-28354"/><category term="ora-28365"/><category term="ora-28374"/><category term="ora-39001"/><category term="ora-65177"/><category term="oracle rest data services"/><category term="p"/><category term="pagination"/><category term="parsing schema"/><category term="philosophy"/><category term="pidgin"/><category term="pl/sql"/><category term="pl/sql challenge"/><category term="popup key lov"/><category term="preview"/><category term="processing"/><category term="qp"/><category term="quick picks"/><category term="region"/><category term="remote"/><category term="report"/><category term="reporting"/><category term="repository"/><category term="security"/><category term="session"/><category term="setup"/><category term="show page"/><category term="slow"/><category term="source"/><category term="startup failure"/><category term="story"/><category term="tde"/><category term="template"/><category term="tomcat"/><category term="translation"/><category term="update"/><category term="upgrade"/><category term="utility"/><category term="wallet"/><category term="wish list"/><category term="wtf"/><category term="xfce"/><category term="xorg"/><category term="z"/><category term="оффтоп"/><category term="перевод"/><category term="удаленная отладка"/><category term="уровень отладки"/><title type='text'>PPLab</title><subtitle type='html'>&lt;i&gt;Recently I was writing here about Oracle Database, Oracle APEX, Linux.&#xa;&#xa;Now I&#39;m more interested in PostgreSQL and AWS, but Oracle will always be in my heart. :)&lt;/i&gt;&#xa;&#xa;&lt;b&gt;suPPLer&lt;/b&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>76</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-7969892693561859568</id><published>2016-10-25T14:10:00.001+03:00</published><updated>2016-10-25T14:10:11.078+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="12c"/><category scheme="http://www.blogger.com/atom/ns#" term="data_pump_dir"/><category scheme="http://www.blogger.com/atom/ns#" term="datapump"/><category scheme="http://www.blogger.com/atom/ns#" term="multitenant"/><category scheme="http://www.blogger.com/atom/ns#" term="ora-39001"/><title type='text'>Oracle Multitenant: Data Pump + DATA_PUMP_DIR = ORA-39001</title><content type='html'>Основная фича Oracle 12c -- Multitenant -- вместе с удобством администрирования привнесла и проблемы. Одна из них -- невозможность экспорта из и импорта в подключаемые БД, используя создаваемую по умолчанию директорию &lt;tt&gt;DATA_PUMP_DIR&lt;/tt&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;The default Data Pump directory object, DATA_PUMP_DIR, does not work with PDBs. You must define an explicit directory object within the PDB that you are exporting or importing.&lt;/blockquote&gt;&lt;div style=&quot;float: right;&quot;&gt;&lt;a href=&quot;http://docs.oracle.com/database/121/SUTIL/GUID-49A847B1-3193-4C45-B7F3-B7F514B75C71.htm#SUTIL4335&quot;&gt;Using Data Pump to Move Databases Into a CDB&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
При этом вы можете спокойно использовать эту директорию из подключаемой БД, работая с файлами через &lt;tt&gt;UTL_FILE&lt;/tt&gt;. Похоже, проблема в том, что Data Pump фильтрует доступные в БД директории по &lt;tt&gt;ORIGIN_CON_ID&lt;/tt&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql;highlight:8,14&quot;&gt;SQL&gt; select origin_con_id
  2    from dba_directories
  3   where directory_name = &#39;DATA_PUMP_DIR&#39;
  4  /

ORIGIN_CON_ID
-------------
            1

SQL&gt; show con_id

CON_ID
-------------
3 &lt;/pre&gt;&lt;br /&gt;
Проблема решается одним из двух способов:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Создать свою директорию в подключаемой БД и дать права на её чтение и запись отдельному пользователю, если требуется:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;SQL&gt; create directory pdb1_data_pump_dir as &#39;/path/to/dir&#39;;

Directory created.

SQL&gt; grant read, write on directory pdb1_data_pump_dir to system;

Grant succeeded.&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Удалить директорию &lt;tt&gt;DATA_PUMP_DIR&lt;/tt&gt; в корневом контейнере и создать её там с параметром сессии &lt;tt&gt;&quot;_oracle_script&quot;=FALSE&lt;/tt&gt;, а затем создать её же в каждой подключаемой БД (и в шаблоне БД):&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;SQL&gt; conn / as sysdba
Connected.
SQL&gt; show con_id

CON_ID
----------------
1

SQL&gt; drop directory data_pump_dir;

Directory dropped.

SQL&gt; alter session set &quot;_oracle_script&quot; = false;

Session altered.

SQL&gt; create directory data_pump_dir as &#39;/path/to/dir&#39;;

Directory created.

SQL&gt; grant read, write on directory data_pump_dir to system;

Grant succeeded.

SQL&gt; alter session set container = pdb1;

Session altered.

SQL&gt; create directory data_pump_dir as &#39;/path/to/dir&#39;;

Directory created.

SQL&gt; grant read, write on directory data_pump_dir to system;

Grant succeeded.&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/7969892693561859568/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2016/10/oracle-multitenant-data-pump.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7969892693561859568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7969892693561859568'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2016/10/oracle-multitenant-data-pump.html' title='Oracle Multitenant: Data Pump + DATA_PUMP_DIR = ORA-39001'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-8125051988294100287</id><published>2016-07-21T20:40:00.001+03:00</published><updated>2016-07-21T20:40:25.671+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="12c"/><category scheme="http://www.blogger.com/atom/ns#" term="OPEN_NO_MASTER_KEY"/><category scheme="http://www.blogger.com/atom/ns#" term="ora-28354"/><category scheme="http://www.blogger.com/atom/ns#" term="ora-28365"/><category scheme="http://www.blogger.com/atom/ns#" term="ora-28374"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="tde"/><category scheme="http://www.blogger.com/atom/ns#" term="wallet"/><title type='text'>ORA-28374, OPEN_NO_MASTER_KEY и другие проблемы, связанные с TDE</title><content type='html'>Хорошая статья, подробно описывающая проблемы, возникающие с ключами и их хранилищами для Transparent Data Encryption, причины возникновения и решения: &lt;a href=&quot;http://sethmiller.org/oracle-2/oracle-public-cloud-ora-28374-typed-master-key-not-found-in-wallet/&quot;&gt;Oracle Public Cloud Database Service – ORA-28374: typed master key not found in wallet&lt;/a&gt; by Seth Miller.</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/8125051988294100287/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2016/07/ora-28374-opennomasterkey-tde.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/8125051988294100287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/8125051988294100287'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2016/07/ora-28374-opennomasterkey-tde.html' title='ORA-28374, OPEN_NO_MASTER_KEY и другие проблемы, связанные с TDE'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-2261658226104251415</id><published>2015-05-05T02:10:00.000+03:00</published><updated>2015-05-05T02:14:57.681+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="3.0"/><category scheme="http://www.blogger.com/atom/ns#" term="bug"/><category scheme="http://www.blogger.com/atom/ns#" term="multiple databases"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle rest data services"/><category scheme="http://www.blogger.com/atom/ns#" term="ords"/><category scheme="http://www.blogger.com/atom/ns#" term="setup"/><title type='text'>ORDS 3.0: Проблема с настройкой подключения к нескольким БД</title><content type='html'>Один экземпляр Oracle REST Data Services (ORDS) может работать сразу с несколькими базами данных. Для этого необходимо задать настройки для подключения к ним и выбрать метод, по которому ORDS будет определять, к какой БД хочет обращается клиент. Подробней можно прочитать здесь: &lt;a href=&quot;http://docs.oracle.com/cd/E56351_01/doc.30/e56293/config.htm#AELIG7188&quot;&gt;REST Data Services Installation, Configuration, and Development Guide — 2.1 Configuring Multiple Databases&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Но недавно вышедший ORDS 3.0.0.121 при добавлении настроек для дополнительной БД создаёт неверные файлы конфигурации. &lt;span class=&quot;fullpost&quot;&gt;Как пример, результат настройки для базы с именем apex40:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;$ java -jar ords3.war setup --database apex40
[skipped]
$ cd $APEX_CONFIG_DIR/conf
$ cat apex40.xml

&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&amp;lt;!DOCTYPE properties SYSTEM &quot;http://java.sun.com/dtd/properties.dtd&quot;&gt;
&amp;lt;properties&gt;
&amp;lt;comment&gt;Saved on Tue May 05 01:49:57 EEST 2015&amp;lt;/comment&gt;
&amp;lt;entry key=&quot;db.password&quot;&gt;...&amp;lt;/entry&gt;
&amp;lt;entry key=&quot;db.username&quot;&gt;APEX_PUBLIC_USER&amp;lt;/entry&gt;
&amp;lt;/properties&gt;
&lt;/pre&gt;Отсутствуют имя хоста и порт (что в моём случае несущественно), имя службы. Без этой информации ORDS использует настройки подключения по умолчанию из &lt;tt&gt;$APEX_CONFIG_DIR/defaults.xml&lt;/tt&gt; и подключается не к той БД. &lt;br /&gt;
&lt;br /&gt;
Исправить досадный баг просто, достаточно добавить настройки подключения в файлы &lt;tt&gt;$APEX_CONFIG_DIR/conf/&amp;lt;имя_БД&gt;*.xml&lt;/tt&gt; вручную:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:xml; highlight: [5,6,7]&quot;&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&lt;!DOCTYPE properties SYSTEM &quot;http://java.sun.com/dtd/properties.dtd&quot;&gt;
&lt;properties&gt;
&lt;comment&gt;Saved on Tue May 05 01:49:57 EEST 2015&lt;/comment&gt;
&lt;entry key=&quot;db.hostname&quot;&gt;...&lt;/entry&gt;
&lt;entry key=&quot;db.port&quot;&gt;...&lt;/entry&gt;
&lt;entry key=&quot;db.servicename&quot;&gt;...&lt;/entry&gt;
&lt;entry key=&quot;db.password&quot;&gt;...&lt;/entry&gt;
&lt;entry key=&quot;db.username&quot;&gt;APEX_PUBLIC_USER&lt;/entry&gt;
&lt;/properties&gt;&lt;/pre&gt;&lt;br /&gt;
Надеюсь, это поправят в ближайшем обновлении ORDS.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/2261658226104251415/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2015/05/ords-30.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2261658226104251415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2261658226104251415'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2015/05/ords-30.html' title='ORDS 3.0: Проблема с настройкой подключения к нескольким БД'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-8672846355588878124</id><published>2015-05-04T02:31:00.001+03:00</published><updated>2015-05-04T02:31:31.594+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="12.1.0.2"/><category scheme="http://www.blogger.com/atom/ns#" term="[kpdbAttachSga: bad pdb]"/><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="migration"/><category scheme="http://www.blogger.com/atom/ns#" term="multitenant"/><category scheme="http://www.blogger.com/atom/ns#" term="ora-00600"/><category scheme="http://www.blogger.com/atom/ns#" term="ora-65177"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><title type='text'>Немного камней по дороге к APEX 5.0</title><content type='html'>Как писал раньше, для начала планировал создать отдельную подключаемую БД, в которой уже потом разворачивать APEX 5.0. Для этого решил создать контейнерную БД Oracle 12.1.0.2.3 (CDB) на Linux 86-64, смигрировать уже имеющуюся холодную не-контейнерную БД (non-CDB) в виде подключаемой (PDB) в новосозданную и на её копию установить новый APEX. Создал и обновил БД, на следующем шаге воспользовался руководством: &lt;a href=&quot;http://oracle-base.com/articles/12c/multitenant-migrate-non-cdb-to-pdb-12cr1.php#using-dbms_pdb&quot;&gt;Multitenant : Migrate a Non-Container Database (CDB) to a Pluggable Database (PDB) in Oracle Database 12c Release 1 (12.1)&lt;/a&gt;. И это было ошибкой. :) &lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;Как промежуточный результат, получил CDB, в которой APEX уже был установлен в корневом контейнере и мог быть обновлён только для всех контейнеров сразу. Если попытаться обновить его только в одном из контейнеров, то те из них, в которых версия APEX не совпадала с версией в корневом контейнере, просто открывались в ограниченном режиме, оставляя сообщения об ошибках в &lt;tt&gt;PDB_PLUG_IN_VIOLATIONS&lt;/tt&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;&gt; alter session set container=cdb$root

session SET altered.

&gt; select message from pdb_plug_in_violations 
 where type = &#39;ERROR&#39; 
   and status &lt;&gt; &#39;RESOLVED&#39;;

MESSAGE                                                                                            
----------------------------------------------------------------------------------------------------
APEX mismatch: PDB installed version 4.2.6.00.03 CDB installed version 4.2.5.00.08                   &lt;/pre&gt;&lt;br /&gt;
Поэтому пришлось удалять полученную PDB, затем удалять APEX из CDB (&lt;a href=&quot;http://oracle-base.com/articles/12c/multitenant-uninstall-apex-from-the-cdb-12cr1.php&quot;&gt;Multitenant : Uninstall APEX from the CDB in Oracle Database 12c Release 1 (12.1)&lt;/a&gt;) и создавать PDB как копию non-CDB с установленным APEX заново. Но и на этом всё не закончилось: PDB открывалась со следующей ошибкой:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:text&quot;&gt;Sync PDB failed with ORA-65177 during &#39;alter user APEX_PUBLIC_USER account unlock&#39;&lt;/pre&gt;&lt;br /&gt;
Гугл на это сказал немного, как и MOS. Поскольку в корневом контейнере такого пользователя не обнаружил, а в PDB у него были лишь права DML на &lt;tt&gt;FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$&lt;/tt&gt;, то решил его пересоздать в PDB, не мудрствуя лукаво:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;conn / as sysdba
alter session set container=pdb1;
drop user apex_public_user;&lt;/pre&gt;&lt;br /&gt;
На что Oracle ответил:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:text&quot;&gt;28014. 00000 -  &quot;cannot drop administrative users&quot;
*Cause:    An attempt was made to drop administrative users.
           Administrative users can be dropped only by SYS during
           migration mode.
*Action:   Try dropping administrative users during migration mode.&lt;/pre&gt;&lt;br /&gt;
Немного погуглив, изменил подход:&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;alter pluggable database pdb1 close immediate;
alter pluggable database pdb1 open upgrade;
alter session set &quot;_oracle_script&quot;=true;
alter session set container=pdb1;
drop user apex_public_user;
alter pluggable database pdb1 close;
alter pluggable database pdb1 open;&lt;/pre&gt;PDB открылась без ошибок. После этого можно было пересоздать пользователя APEX_PUBLIC_USER:&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;alter session set container=pdb1;
create user apex_public_user identified by apex_public_user;
grant select, insert, update, delete on flows_files.WWV_FLOW_FILE_OBJECTS$ 
  to apex_public_user;
grant connect to apex_public_user;&lt;/pre&gt;&lt;br /&gt;
Пользователь на месте, PDB успешно открыта. Увы, попытка достучаться из ORDS к базе возвращала &lt;tt&gt;503 Service unavailable&lt;/tt&gt;. В &lt;tt&gt;alert.log&lt;/tt&gt; нашёл «воодушевляющее» сообщение:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:text&quot;&gt;ORA-00600: internal error code, arguments: [kpdbAttachSga: bad pdb], [0], [pdb1.workgroup], [], [],[], [], [], [], [], [], []&lt;/pre&gt;&lt;br /&gt;
Поиск на MOS вывел на похожий параметром ORA-00600 баг 20438519 и устраняющий его патч 19972766. После установки последнего наконец-то всё заработало.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/8672846355588878124/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2015/05/apex-50.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/8672846355588878124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/8672846355588878124'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2015/05/apex-50.html' title='Немного камней по дороге к APEX 5.0'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-7516932222855389106</id><published>2015-04-20T12:51:00.000+03:00</published><updated>2015-04-20T12:51:04.087+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="5.0"/><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="release"/><title type='text'>Oracle APEX 5.0!</title><content type='html'>Вот так пару дней поболел и пропустил выход долгожданной новой версии. Ну что, сценарий для изучения теперь проще с Multitenant:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Скачать новый &lt;a href=&quot;http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html&quot;&gt;APEX&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Создать БД для тестирования:&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;create pluggable database apx5 from tmpl file_name_convert( &#39;/app/oracle/oradata/tmpl&#39;, &#39;/app/oracle/oradata/apx5&#39; );&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Установить свежий APEX 5.0 и посмотреть, что стало лучше, а что перестало работать. :)&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/7516932222855389106/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2015/04/oracle-apex-50.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7516932222855389106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7516932222855389106'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2015/04/oracle-apex-50.html' title='Oracle APEX 5.0!'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-6436558859664627822</id><published>2015-04-15T02:12:00.000+03:00</published><updated>2015-04-15T02:12:56.765+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="12c"/><category scheme="http://www.blogger.com/atom/ns#" term="503"/><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="multitenant"/><category scheme="http://www.blogger.com/atom/ns#" term="ora-28000"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="ords"/><title type='text'>Oracle Multitenant и ORA-28000</title><content type='html'>Наткнулся недавно на небольшую проблему — ORDS на Glassfish отказывался создавать подключения к БД, выводя на экран &quot;503 — Service Unavailable&quot; со следующим сообщением в &lt;tt&gt;server.log&lt;/tt&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush:plain&quot;&gt;The pool named: apex is not correctly configured, error: ORA-28000: the account is locked&lt;/pre&gt;&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
Посмотрел пользователя БД в файле конфигурации ORDS для пула &lt;b&gt;apex&lt;/b&gt; &lt;tt&gt;${configdir}/ords/conf/apex.xml&lt;/tt&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;...
&amp;lt;entry key=&quot;db.username&quot;&amp;gt;APEX_PUBLIC_USER&amp;lt;/entry&amp;gt;
...&lt;/pre&gt;&lt;br /&gt;
Настройки для соединения взял из &lt;tt&gt;${configdir}/ords/defaults.xml&lt;/tt&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;...
&amp;lt;entry key=&quot;db.hostname&quot;&gt;hostname&amp;lt;/entry&gt;
&amp;lt;entry key=&quot;db.port&quot;&gt;1521&amp;lt;/entry&gt;
&amp;lt;entry key=&quot;db.servicename&quot;&gt;pdb1.workgroup&amp;lt;/entry&gt;
...&lt;/pre&gt;&lt;br /&gt;
Подсоединился к &lt;tt&gt;pdb1.workgroup&lt;/tt&gt;, проверил пользователя &lt;tt&gt;APEX_PUBLIC_USER&lt;/tt&gt; — открыт. И вот тут я потратил достаточно много времени, прежде чем вспомнил, что с появлением Multitenant Architecture в Oracle 12c появились &lt;a href=&quot;https://docs.oracle.com/database/121/DBSEG/users.htm#DBSEG573&quot;&gt;общие пользователи&lt;/a&gt;. Переключился в корневую БД, и точно — заблокирован &lt;tt&gt;APEX_PUBLIC_USER&lt;/tt&gt;! &lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;alter user apex_public_user account unlock;
alter user apex_public_user identified by ...;&lt;/pre&gt;&lt;br /&gt;
После этого ORDS смог подключиться, проблема была решена.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/6436558859664627822/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2015/04/oracle-multitenant-ora-28000.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/6436558859664627822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/6436558859664627822'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2015/04/oracle-multitenant-ora-28000.html' title='Oracle Multitenant и ORA-28000'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-3949229080920736561</id><published>2015-02-22T00:23:00.002+02:00</published><updated>2015-02-22T00:23:44.325+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="interactive report"/><category scheme="http://www.blogger.com/atom/ns#" term="ir"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="pagination"/><category scheme="http://www.blogger.com/atom/ns#" term="slow"/><title type='text'>Oracle APEX: разбивка на страницы интерактивных отчётов</title><content type='html'>Благодаря &lt;a href=&quot;http://www.sql.ru/forum/1059246-2/pomogite-po-jquery-monitor-izmeneniy?mid=17292303#17292303&quot;&gt;дискуссии на SQL.RU&lt;/a&gt;, решил проверить, как на самом деле происходит выдача страницы данных для интерактивного отчёта в Oracle APEX. Использовал версию 4.2.5, но не думаю, что что-то будет сильно отличаться вплоть до 4.1 включительно. Создал приложение с простым интерактивным отчётом, у которого в качестве источника данных был следующий запрос:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;select * from emp&lt;/pre&gt;&lt;br /&gt;
Изначально я ставил на то, что движок выполнения отчётов переписывает указанный разработчиком запрос и помимо прочей обёртки добавляет к нему один из известных приёмов по выдаче части отсортированных данных. Например:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;select {select list}
  from ( select {select list}, row_number() over( order by {ordering} ) apx$rn 
           from ( {filtering, computing etc.} ) 
          order by {ordering} )
 where apx$rn between :page_min_row and :page_max_row
&lt;/pre&gt;&lt;br /&gt;
Результаты отладки меня слегка удивили:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2wUv1fcJOOcpcEtJ6TAGjbWyy-mFSmyZaSpT3QVU6aZbgEfu-gfpmIaVSocszEfZ5DIwr_fa4QLCNg-5wQetEyWXKves_UKhkch9ssgOfaIQcrl8iTdQKXazp3KrhwuiTiNcvaziCZ58A/s1600/screenshot-dark-place+8180+2015-02-21+23-51-00.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2wUv1fcJOOcpcEtJ6TAGjbWyy-mFSmyZaSpT3QVU6aZbgEfu-gfpmIaVSocszEfZ5DIwr_fa4QLCNg-5wQetEyWXKves_UKhkch9ssgOfaIQcrl8iTdQKXazp3KrhwuiTiNcvaziCZ58A/s320/screenshot-dark-place+8180+2015-02-21+23-51-00.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Была слабая надежда, что это не окончательный запрос, и где-то там его ещё дополнительно обернут… Однако, после поиска в исходниках и вдумчивого чтения разврапленного &lt;tt&gt;wwv_flow_worksheet.plb&lt;/tt&gt; я обнаружил, что всё намного печальней: в &lt;tt&gt;WWV_FLOW_WORKSHEET.get_report&lt;/tt&gt; открывается курсор по тексту запроса, в котором нет никакого намёка на первую и последнюю строки страницы. Вместо этого курсор в цикле вхолостую считывается, пока не доходит до первой строки страницы. Затем начинается вывод строк, пока не дойдёт до последней.&lt;br /&gt;
&lt;br /&gt;
Какие из полученных знаний можно сделать выводы:&lt;ol&gt;&lt;li&gt;Каждая следующая страница интерактивного отчёта, к которой перейдёт пользователь, будет требовать чтения всё большего объёма данных. Пользователей нужно учить пользоваться всеми инструментами ИО, такими как фильтры, сортировки и т.п., а не рассматривать его как большую решётку Excel, в которой вместо Page Down можно жать на ссылку к следующей странице отчёта.&lt;/li&gt;
&lt;li&gt;Пользоваться настройкой максимального отображаемого количества строк в интерактивных отчётах всё-таки необходимо. Собственно, этому и учит нас документация APEX и другие материалы, как теперь видно — обоснованно. В отличие от границ страницы, ограничение числа строк в текст запроса добавляется и влияет на план выполнения.&lt;/li&gt;
&lt;li&gt;Оптимизатор может решить выполнять Ваш тяжёлый запрос для отчёта в режиме &lt;tt&gt;ALL_ROWS&lt;/tt&gt;, несмотря на необходимость для вывода на страницу всего лишь в первых паре сотен строк. Уговорить его этого не делать Вы сможете с трудом, например созданием дополнительного процесса Before Header, в котором будет выставляться явно соответствующий режим: &lt;pre class=&quot;brush:sql&quot;&gt;execute immediate &#39;alter session set optimizer_mode = all_rows&#39;;&lt;/pre&gt;Кроме того, в &lt;tt&gt;WWV_FLOW_WORKSHEET.get_worksheet_report_query&lt;/tt&gt; при оборачивании текста запроса используется поле &lt;tt&gt;WWV_FLOW_WORKSHEETS.sql_hint&lt;/tt&gt;, название которого намекает на возможное светлое будущее, где разработчику APEX предоставят интерфейс для указания хинтов запросу отчёта.&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/3949229080920736561/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2015/02/oracle-apex.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/3949229080920736561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/3949229080920736561'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2015/02/oracle-apex.html' title='Oracle APEX: разбивка на страницы интерактивных отчётов'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2wUv1fcJOOcpcEtJ6TAGjbWyy-mFSmyZaSpT3QVU6aZbgEfu-gfpmIaVSocszEfZ5DIwr_fa4QLCNg-5wQetEyWXKves_UKhkch9ssgOfaIQcrl8iTdQKXazp3KrhwuiTiNcvaziCZ58A/s72-c/screenshot-dark-place+8180+2015-02-21+23-51-00.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-2108694178605259584</id><published>2014-10-19T03:48:00.000+03:00</published><updated>2015-05-09T00:05:28.699+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="guide"/><category scheme="http://www.blogger.com/atom/ns#" term="integration"/><category scheme="http://www.blogger.com/atom/ns#" term="jasperreports"/><category scheme="http://www.blogger.com/atom/ns#" term="reporting"/><title type='text'>JasperReports Integration + GlassFish</title><content type='html'>Делюсь инструкцией по установке сервлета, позволяющего использовать JasperReports из APEX. В качестве контейнера используется GlassFish. По ходу описания я расскажу, как обновить в сервлете JasperReports Library и настроить соединение с Oracle в GlassFish.&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;b&gt;Потребуются:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;установленный APEX (&lt;a href=&quot;http://www.oracle.com/technetwork/developer-tools/apex/application-express/apex-archive-42-1885734.html&quot;&gt;4.2.6&lt;/a&gt;);&lt;/li&gt;
&lt;li&gt;установленный GlassFish (&lt;a href=&quot;https://glassfish.java.net/&quot;&gt;4.1&lt;/a&gt;), каталог установки в инструкции обозначен как GLASSFISH_ROOT;&lt;/li&gt;
&lt;li&gt;JasperReports Library (&lt;a href=&quot;http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.6.0/jasperreports-5.6.0-project.tar.gz/download&quot;&gt;5.6.0&lt;/a&gt;), далее &lt;i&gt;JRL&lt;/i&gt;;&lt;/li&gt;
&lt;li&gt;JasperReports Integration (&lt;a href=&quot;http://www.opal-consulting.de/downloads/free_tools/JasperReportsIntegration/2.1.0/JasperReportsIntegration-2.1.0.0.zip&quot;&gt;2.1.0&lt;/a&gt;), далее &lt;i&gt;JRI&lt;/i&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Установка и настройка:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Распаковать JRI в какой-либо пустой каталог (далее &lt;tt&gt;$JRI_ROOT&lt;/tt&gt;).&lt;/li&gt;
&lt;li&gt;Переписать файлы &lt;tt&gt;*.jar&lt;/tt&gt; из папки &lt;tt&gt;$JRI_ROOT/lib&lt;/tt&gt; в каталог &lt;tt&gt;$GLASSFISH_ROOT/glassfish/domains/domain1/lib&lt;/tt&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush:shell&quot;&gt;cp $JRI_ROOT/lib/*.jar $GLASSFISH_ROOT/glassfish/domains/domain1/lib&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Извлечь из веб-приложения JRI файл web.xml для указания каталога, в котором будут расположены каталог конфигурационных файлов, каталог отчётов, каталог файлов протокола работы приложения:&lt;br /&gt;
&lt;pre class=&quot;brush: shell;&quot;&gt;cd $JRI_ROOT
java -jar bin/truezip.jar cp webapp/JasperReportsIntegration.war/WEB-INF/web.xml web.xml&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Изменить в файле &lt;tt&gt;web.xml&lt;/tt&gt; параметр &lt;tt&gt;oc.jasper.config.home&lt;/tt&gt; (тег &lt;tt&gt;param-value&lt;/tt&gt;):&lt;br /&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&lt;context-param&gt;
  &lt;param-name&gt;oc.jasper.config.home&lt;/param-name&gt;&lt;param-value&gt;/path/to/jasperreports/config/dir&lt;/param-value&gt;&lt;/context-param&gt;
&lt;/pre&gt;&lt;br /&gt;
Каталог в настройке (далее &lt;tt&gt;$JRI_CONF_HOME&lt;/tt&gt;) должен давать права на чтение и запись пользователю ОС, под которым запускается GlassFish. &lt;/li&gt;
&lt;li&gt;Обновить файл web.xml в архиве веб-приложения:&lt;br /&gt;
&lt;pre class=&quot;brush: shell;&quot;&gt;cd $JRI_ROOT
java -jar bin/truezip.jar cp web.xml webapp/JasperReportsIntegration.war/WEB-INF/web.xml&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Создать каталог &lt;tt&gt;$JRI_CONF_HOME&lt;/tt&gt;, если он ещё не создан, настроить права. &lt;/li&gt;
&lt;li&gt;Переписать в этот каталог &lt;tt&gt;$JRI_CONF_HOME&lt;/tt&gt; папки &lt;tt&gt;$JRI_ROOT/{conf,logs,reports}&lt;/tt&gt;.&lt;/li&gt;
&lt;li&gt;Зайти в веб-консоль GlassFish и установить приложение: Applications→Deploy. Выбрать архив с обновлённым web.xml. &lt;br /&gt;
&lt;pre class=&quot;brush:text&quot;&gt;Context Root=/jri&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Создать JDBC Connection Pool с произвольным именем (далее $POOL_NAME). JDBC→JDBC Connection Pools→New:&lt;br /&gt;
&lt;pre class=&quot;brush:text&quot;&gt;Resource Type: javax.sql.DataSource
Datasource Classname: oracle.jdbc.pool.OracleDataSource
Properties→User: DB_USER
Properties→Password: db_password
Properties→URL: jdbc:oracle:thin:@your.db.host:1521:oracle_sid
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Проверить пул, выбрав его и нажав Ping.&lt;/li&gt;
&lt;li&gt;Создать JDBC Resource, с которым будет работать приложение. JDBC→JDBC Resource→New:&lt;br /&gt;
&lt;pre class=&quot;brush:text&quot;&gt;JNDI Name: Строка из букв и чисел с префиксом, отделённым косой чертой (например, jdbc/default, jdbc/mydbuser1)
Pool Name: $POOL_NAME&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;В файле &lt;tt&gt;$JRI_CONF_HOME/conf/application.properties&lt;/tt&gt; настроить JNDI-префикс и подключения:&lt;br /&gt;
&lt;pre class=&quot;brush: plain;&quot;&gt;...
jndiPrefix=jdbc/
...
[datasource:default]
type=jndi
name=default
# Для ресурса JNDI убирается префикс и указывается оставшаяся строка
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Распаковать JasperReports Library в какой-либо каталог (далее $JRL_ROOT);&lt;/li&gt;
&lt;li&gt;Остановить домен GlassFish в консоли:&lt;br /&gt;
&lt;pre class=&quot;brush: shell;&quot;&gt;asadmin stop-domain domain1&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Обновить библиотеку JasperReports в составе JRI. Для этого перейти в &lt;tt&gt;$GLASSFISH_ROOT/glassfish/domains/domain1/applications/JasperReportsIntegration/WEB-INF/lib&lt;/tt&gt; и выполнить для удаления старой библиотеки:&lt;br /&gt;
&lt;pre class=&quot;brush: shell;&quot;&gt;chmod u+x _jasper-reports-delete-libs-5.1.0.sh
./_jasper-reports-delete-libs-5.1.0.sh&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Переписать в &lt;tt&gt;$GLASSFISH_ROOT/glassfish/domains/domain1/applications/JasperReportsIntegration/WEB-INF/lib&lt;/tt&gt; все файлы из каталога &lt;tt&gt;$JRL_ROOT/lib и файл $JRL_ROOT/dist/jasperreports-5.6.0.jar&lt;/tt&gt;. &lt;br /&gt;
&lt;pre class=&quot;brush:shell&quot;&gt;cp $JRL_ROOT/lib/* $JRL_ROOT/dist/jasperreports-5.6.0.jar $GLASSFISH_ROOT/glassfish/domains/domain1/applications/JasperReportsIntegration/WEB-INF/lib&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Запустить домен GlassFish в консоли: &lt;pre class=&quot;brush: shell;&quot;&gt;asadmin start-domain domain1&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Выполнить скрипт &lt;tt&gt;$JRI_ROOT/sql/sys_install.sql&lt;/tt&gt;. Потребуется указать схему БД, в которой будет размещаться API для формирования отчётов из PL/SQL.&lt;/li&gt;
&lt;li&gt;Выполнить скрипт &lt;tt&gt;$JRI_ROOT/sql/sys_install_acl.sql&lt;/tt&gt;. Потребуется указать схему БД, в которой будет размещаться API для формирования отчётов из PL/SQL.&lt;/li&gt;
&lt;li&gt;Выполнить скрипт &lt;tt&gt;$JRI_ROOT/sql/user_install.sql&lt;/tt&gt; от имени пользователя, в схеме которого будет размещаться API для формирования отчётов из PL/SQL.&lt;/li&gt;
&lt;li&gt;Для проверки работоспособности веб-приложения открыть &lt;tt&gt;http://&amp;lt;сервер с GlassFish&amp;gt;:&amp;lt;настроенный для приложений порт&amp;gt;/&lt;context root=&quot;&quot;&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;Для проверки обращений и примера использования JRI из APEX установить приложение из &lt;tt&gt;$JRI_ROOT/apex&lt;/tt&gt;.&lt;/li&gt;
&lt;/ol&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/2108694178605259584/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2014/10/jasperreports-integration-glassfish.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2108694178605259584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2108694178605259584'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2014/10/jasperreports-integration-glassfish.html' title='JasperReports Integration + GlassFish'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-6821208661214022668</id><published>2013-08-19T03:23:00.002+03:00</published><updated>2013-08-19T03:24:40.150+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="extjs"/><category scheme="http://www.blogger.com/atom/ns#" term="grid"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="plugin"/><title type='text'>Плагин TabGrid</title><content type='html'>Небольшая вариация на тему грида Ext JS в APEX: &lt;a href=&quot;http://apex.oracle.com/pls/otn/apex/f?p=40749:1&quot;&gt;http://apex.oracle.com/pls/otn/apex/f?p=40749:1&lt;/a&gt;&lt;br /&gt;
Логин/пароль: &lt;i&gt;demo/demo&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Направление развития: фильтры, работающие на сервере.&lt;br /&gt;
&lt;br /&gt;
PS: Есть желание замахнуться на небольшой фреймворк в качестве альтернативы FOEX.</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/6821208661214022668/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2013/08/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/6821208661214022668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/6821208661214022668'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2013/08/blog-post.html' title='Плагин TabGrid'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-3473671079481352093</id><published>2013-05-31T20:37:00.001+03:00</published><updated>2013-05-31T20:37:12.666+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="comment"/><category scheme="http://www.blogger.com/atom/ns#" term="ddl"/><category scheme="http://www.blogger.com/atom/ns#" term="generator"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><title type='text'>Oracle: запрос для отображения комментариев к таблице в виде DDL</title><content type='html'>Простой запрос для получения готовых DDL-операторов COMMENT с комментариями к таблице и её столбцам:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;with par as (
  select nvl(&#39;&amp;owner&#39;, user) owner -- Владелец схемы с таблицей
       , &#39;&amp;table_name&#39; table_name  -- Таблица
    from dual
)
select ddl_stmt 
  from (select p.owner
             , p.table_name
             , &#39;&#39; column_name
             , comments
             , &#39;comment on table &quot;&#39;||p.owner||&#39;&quot;.&quot;&#39;||p.table_name||&#39;&quot; is &#39;&#39;&#39; || comments ||&#39;&#39;&#39;;&#39;  ddl_stmt
          from par p 
            left join 
               all_tab_comments tc on p.owner = tc.owner and p.table_name = tc.table_name 
         union all
        select c.owner
             , c.table_name
             , c.column_name
             , tc.comments
             , &#39;comment on column &quot;&#39;||c.owner||&#39;&quot;.&quot;&#39;||c.table_name||&#39;&quot;.&quot;&#39;||c.column_name||&#39;&quot; is &#39;&#39;&#39; || comments ||&#39;&#39;&#39;;&#39;  ddl_stmt
          from (select owner, table_name, column_name 
                  from par p natural join all_tab_columns c) c
            left join 
                all_col_comments tc on c.owner = tc.owner and c.table_name = tc.table_name and c.column_name = tc.column_name)
 order by owner, table_name, column_name nulls first
/
&lt;/pre&gt;&lt;br /&gt;
Полезен как заготовка в ситуациях, когда нужно создать скрипт добавления или изменения комментариев к таблице.</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/3473671079481352093/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2013/05/oracle-ddl.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/3473671079481352093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/3473671079481352093'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2013/05/oracle-ddl.html' title='Oracle: запрос для отображения комментариев к таблице в виде DDL'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-1327473975855017901</id><published>2013-03-14T15:00:00.000+02:00</published><updated>2013-03-14T15:00:48.171+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="debug"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle apex"/><category scheme="http://www.blogger.com/atom/ns#" term="remote"/><category scheme="http://www.blogger.com/atom/ns#" term="remote debug"/><category scheme="http://www.blogger.com/atom/ns#" term="удаленная отладка"/><category scheme="http://www.blogger.com/atom/ns#" term="уровень отладки"/><title type='text'>Oracle APEX: Remote Debug</title><content type='html'>Случайно узнал, что можно включить &lt;a href=&quot;http://suppler.blogspot.com/2010/11/oracle-apex-oracle-sql-developer.html&quot;&gt;удалённую отладку&lt;/a&gt; установкой в URL значения &lt;b&gt;REMOTE&lt;/b&gt; для аргумента &lt;a href=&quot;http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35125/concept_url.htm#r6c1-t17&quot;&gt;Debug&lt;/a&gt;. При этом подключение для удалённой отладки происходит в самом начале этапов Page Processing и Page Rendering и создаётся к удалённому хосту из переменной REMOTE_ADDR окружения CGI на порт 4000.&lt;br /&gt;
&lt;br /&gt;
В документации об этом почему-то ни слова. &lt;br /&gt;
&lt;br /&gt;
Пользуясь случаем, напоминаю, что уровнем отладки (и количеством выдаваемой информации) можно управлять, используя значения &lt;b&gt;LEVEL&lt;i&gt;n&lt;/i&gt;&lt;/b&gt; для аргумента Debug, где &lt;b&gt;&lt;i&gt;n&lt;/i&gt;&lt;/b&gt; -- уровень отладки от 1 до 9. По умолчанию, для значения &lt;b&gt;YES&lt;/b&gt; используется уровень 4.&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/1327473975855017901/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2013/03/oracle-apex-remote-debug.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/1327473975855017901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/1327473975855017901'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2013/03/oracle-apex-remote-debug.html' title='Oracle APEX: Remote Debug'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-3199558851839326406</id><published>2013-02-14T21:55:00.000+02:00</published><updated>2013-02-15T01:49:06.158+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bug"/><category scheme="http://www.blogger.com/atom/ns#" term="fix"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle apex"/><category scheme="http://www.blogger.com/atom/ns#" term="preview"/><category scheme="http://www.blogger.com/atom/ns#" term="remote debug"/><category scheme="http://www.blogger.com/atom/ns#" term="report"/><category scheme="http://www.blogger.com/atom/ns#" term="template"/><title type='text'>Oracle APEX: Report Template Preview</title><content type='html'>Да, я знаю, что обещал заметку о том, как создавать плагин-регион. Но пока я её готовлю, могу предложить описание поиска ошибки в APEX Application Builder и её исправления.&lt;br /&gt;
&lt;br /&gt;
Ошибка заключается в том, что в APEX уже &lt;a href=&quot;https://forums.oracle.com/forums/thread.jspa?threadID=2142068&quot;&gt;довольно давно&lt;/a&gt; поломался предпросмотр шаблонов отчётов. &lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBXqOo0z76LEoid8HAnwj29vhb2x9k5Ldb18sqZV5HUz-8JfCNBSHTYNml0GnHVmRDspSrTXjKHVE7QdmuqGuWG8ABadfMLoYVJeiIvZpUKat3yJa5GKqPdEMRMDjLQBdKQhOHKAit4egA/s1600/01.jpg&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBXqOo0z76LEoid8HAnwj29vhb2x9k5Ldb18sqZV5HUz-8JfCNBSHTYNml0GnHVmRDspSrTXjKHVE7QdmuqGuWG8ABadfMLoYVJeiIvZpUKat3yJa5GKqPdEMRMDjLQBdKQhOHKAit4egA/s600/01.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Для шаблонов страниц работает, для регионов тоже, а отчёты показывают крайне информативное сообщение:&lt;br /&gt;
&lt;pre class=&quot;brush: plain; gutter: false;&quot;&gt;report error: 
ORA-01002: fetch out of sequence&lt;/pre&gt;&lt;br /&gt;
Как всё поправить? Для начала, нужно разобраться, что выполняется на странице. Смотрим в адресную строку:&lt;br /&gt;
&lt;pre class=&quot;brush: plain;&quot;&gt;/apex/f?p=4000:245:7846987198961::::F4000_P245_ID:2451412072364242&lt;/pre&gt;&lt;br /&gt;
Заглядываем в словарь APEX, что там за регионы на странице 245 приложения 4000:&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;column region_name format a20
column region_id format 999999999999999999999999
column source_type format a15
column region_source format a80
set long 700
select region_name, region_id, source_type, region_source 
  from apex_040200.apex_application_page_regions 
 where application_id = 4000 and page_id = 245
/
&lt;/pre&gt;&lt;pre class=&quot;brush: plain; gutter: false;&quot;&gt;REGION_NAME                          REGION_ID SOURCE_TYPE     REGION_SOURCE                                                                  
-------------------- ------------------------- --------------- --------------------------------------------------------------------------------
Breadcrumb                    6539000463209372 Breadcrumb                                                                                       
Template Preview             14562627207747006 PL/SQL          wwv_render_report3.show(                                                         
                                                                   p_query =&gt; &#39;                                                                 
                                                               select 1 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]                                           

Template Preview             14573702151806062 HTML/Text       &lt;p&gt;This page provides a preview of the identified report template.&lt;/p&gt;Template Details             82014114667920662 Report          select ROW_TEMPLATE_NAME N, ROW_TEMPLATE_TYPE T                                  
                                                                  from WWV_FLOW_ROW_TEMPLATES                                                   
                                                                                                                                                

preview-report               88449328191587806 Report          select 1 COL1, &#39;[...]&#39; COL2, &#39;[...]&#39; COL3, sysdate COL4 from dual union          
                                                               select                                                                           
&lt;/pre&gt;&lt;br /&gt;
Судя по названиям и содержимому, нас интересуют регионы с REGION_ID &lt;b&gt;14562627207747006&lt;/b&gt; и &lt;b&gt;88449328191587806&lt;/b&gt;. Первый выполняет обращение к &lt;b&gt;wwv_render_report3.show&lt;/b&gt;, второй, как мы сейчас увидим, служит для хранения настроек, которые используются в этом вызове:&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;column region_source format a700
set long 700
select region_id, region_source 
  from apex_040200.apex_application_page_regions 
 where region_id in (14562627207747006, 88449328191587806)   
/&lt;/pre&gt;&lt;pre class=&quot;brush: plain; gutter: false;&quot;&gt;REGION_ID REGION_SOURCE
------------------------- --------------------------------------------------------------------------------
        14562627207747006 wwv_render_report3.show(
                              p_query =&gt; &#39;
                          select 1 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union
                          select 2 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union
                          select 3 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union
                          select 4 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union
                          select 5 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union
                          select 6 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual
                          order by 1&#39;,
                              p_row_template_id =&gt; :f4000_p245_id,
                              p_region_id =&gt; 88449328191587806
                            );

        88449328191587806 select 1 COL1, &#39;[...]&#39; COL2, &#39;[...]&#39; COL3, sysdate COL4 from dual union
                          select 2 COL1, &#39;[...]&#39; COL2, &#39;[...]&#39; COL3, sysdate COL4 from dual union
                          select 3 COL1, &#39;[...]&#39; COL2, &#39;[...]&#39; COL3, sysdate COL4 from dual union
                          select 4 COL1, &#39;[...]&#39; COL2, &#39;[...]&#39; COL3, sysdate COL4 from dual union
                          select 5 COL1, &#39;[...]&#39; COL2, &#39;[...]&#39; COL3, sysdate COL4 from dual union
                          select 6 COL1, &#39;[...]&#39; COL2, &#39;[...]&#39; COL3, sysdate COL4 from dual
                          order by 1
&lt;/pre&gt;Значит, путь наш лежит в &lt;b&gt;wwv_render_report3.show&lt;/b&gt;. Чтобы посмотреть, что именно там происходит, потребуется &lt;a href=&quot;http://blog.teusink.net/2010/04/unwrapping-oracle-plsql-with-unwrappy.html&quot;&gt;разврапировать&lt;/a&gt; тело пакета и установить его в схему APEX. Тело находится в файле &lt;b&gt;reports3.plb&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Затем включить &lt;a href=&quot;http://suppler.blogspot.com/2010/11/oracle-apex-oracle-sql-developer.html&quot;&gt;удалённую отладку&lt;/a&gt;, для чего потребуется скомпилировать этот пакет с поддержкой отладки. Ещё в рамках подготовки к удалённой отладке потребуется временно изменить содержимое региона &lt;b&gt;14562627207747006&lt;/b&gt;, окружив вызов обращениями к &lt;b&gt;dbms_debug_jdwp&lt;/b&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush: sql&quot;&gt;update wwv_flow_page_plugs 
   set plug_source = q&#39;{dbms_debug_jdwp.connect_tcp(&#39;localhost&#39;,50001);  
wwv_render_report3.show(
    p_query =&gt; &#39;
select 1 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 2 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 3 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 4 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 5 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 6 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual 
order by 1&#39;,
    p_row_template_id =&gt; :f4000_p245_id,
    p_region_id =&gt; 88449328191587806
  );
dbms_debug_jdwp.disconnect;}&#39;
 where id = 14562627207747006
/&lt;/pre&gt;Я использую localhost как имя удалённого хоста, потому что пробросил через SSH свой порт 4000, на котором работает Debug Listener, на порт 50001 сервера с Oracle. Если файерволы Вам позволяют, можете вместо localhost указывать IP машины, на которой работает OSD с удалённой отладкой, тогда порт необходимо указать тот, который выбрали при запуске Remote Debug.&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIyqbRpbgZM1qWcJDejeui-eTCOev3AJGDTh7j2Lmd8lw8VPWHePXitQ29Wa2XYzmQTQiV_Pnb2P99rnsKeNfiGABvY2839TvFb8lMqXsSjuYWXY3woaqCDttv6O1LPQsndp-aFCGxvcZZ/s1600/02.jpg&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIyqbRpbgZM1qWcJDejeui-eTCOev3AJGDTh7j2Lmd8lw8VPWHePXitQ29Wa2XYzmQTQiV_Pnb2P99rnsKeNfiGABvY2839TvFb8lMqXsSjuYWXY3woaqCDttv6O1LPQsndp-aFCGxvcZZ/s600/02.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Итак, подготовились к отладке, запустили Remote Debug, зашли на страницу с предпросмотром шаблона отчёта. Началась отладка. За несколько итераций становится ясно, что ошибка возникает при попытке фетчить открытый курсор с запросом отчёта, который ещё не был выполнен. А происходит это, потому что в вызове &lt;b&gt;wwv_render_report3.show&lt;/b&gt; не указано значение параметра &lt;b&gt;p_plug_source_type&lt;/b&gt;. Исправляем:&lt;br /&gt;
&lt;pre class=&quot;brush: sql; highlight: 13&quot;&gt;update wwv_flow_page_plugs 
   set plug_source = q&#39;{wwv_render_report3.show(
    p_query =&gt; &#39;
select 1 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 2 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 3 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 4 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 5 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual union 
select 6 COL1, &#39;&#39;[...]&#39;&#39; COL2, &#39;&#39;[...]&#39;&#39; COL3, sysdate COL4 from dual 
order by 1&#39;,
    p_row_template_id =&gt; :f4000_p245_id,
    p_region_id =&gt; 88449328191587806,
    p_plug_source_type =&gt; &#39;SQL_QUERY&#39;
  );}&#39;
 where id = 14562627207747006
/&lt;/pre&gt;&lt;br /&gt;
Проверяем:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZVUOR0_IyrdqAV46emmcSfsw8yVUqdBvIrNz2VkrCpI6Ovurv1iA7vKjlCc14C1ClD17FTOX8__CLQyhe44MDTGHQfYXrobA8RQOM4HPojlCam_FytQ18hVPn_CxTp1j97rE8d2_6EIm1/s1600/03.jpg&quot; imageanchor=&quot;1&quot; &gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZVUOR0_IyrdqAV46emmcSfsw8yVUqdBvIrNz2VkrCpI6Ovurv1iA7vKjlCc14C1ClD17FTOX8__CLQyhe44MDTGHQfYXrobA8RQOM4HPojlCam_FytQ18hVPn_CxTp1j97rE8d2_6EIm1/s600/03.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Вот так ищутся и правятся небольшие баги в APEX. Не забывайте делиться своими решениями.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/3199558851839326406/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2013/02/oracle-apex-report-template-preview.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/3199558851839326406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/3199558851839326406'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2013/02/oracle-apex-report-template-preview.html' title='Oracle APEX: Report Template Preview'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBXqOo0z76LEoid8HAnwj29vhb2x9k5Ldb18sqZV5HUz-8JfCNBSHTYNml0GnHVmRDspSrTXjKHVE7QdmuqGuWG8ABadfMLoYVJeiIvZpUKat3yJa5GKqPdEMRMDjLQBdKQhOHKAit4egA/s72-c/01.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-7338263647794543069</id><published>2012-10-15T13:04:00.000+03:00</published><updated>2012-10-15T13:04:13.801+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apex 4.2"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle apex"/><category scheme="http://www.blogger.com/atom/ns#" term="release"/><title type='text'>APEX 4.2 ушёл в печать!</title><content type='html'>&lt;a href=&quot;http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html&quot;&gt;http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
PS: Что-то я редко стал сюда что-нибудь добавлять... Потому анонс: в следующих сообщениях расскажу о создании плагинов. Начнём с плагина-региона.</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/7338263647794543069/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2012/10/apex-42.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7338263647794543069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7338263647794543069'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2012/10/apex-42.html' title='APEX 4.2 ушёл в печать!'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-4259812937790318488</id><published>2012-06-22T10:59:00.000+03:00</published><updated>2012-06-22T10:59:18.330+03:00</updated><title type='text'>Oracle APEX 4.2 EA1 ушёл в народ!</title><content type='html'>На &lt;a href=&quot;http://www.oracle.com/technetwork/developer-tools/apex/overview/index.html&quot;&gt;официальной странице&lt;/a&gt; APEX появилась приятная новость о доступном Early Adapter (как Oracle именует публичные беты продуктов).&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://apexea.oracle.com/i/index.html&quot;&gt;Регистрируйтесь!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://apex.oracle.com/pls/apex/f?p=38997:1&quot;&gt;Пробуйте!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://apexea.oracle.com/pls/apex/f?p=4840:1&quot;&gt;Пишите предложения и жалобы!&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;Приятных выходных! ;)</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/4259812937790318488/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2012/06/oracle-apex-42-ea1.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/4259812937790318488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/4259812937790318488'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2012/06/oracle-apex-42-ea1.html' title='Oracle APEX 4.2 EA1 ушёл в народ!'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-9210205632928057521</id><published>2012-05-12T02:46:00.000+03:00</published><updated>2012-05-12T02:46:14.148+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="apex 4.2"/><category scheme="http://www.blogger.com/atom/ns#" term="wish list"/><title type='text'>Oracle APEX: Мелочь, а не хватает...</title><content type='html'>Казалось бы, не так велик труд: выбрать что-то при редактировании страницы и удалить. Но будь возможность делать это сразу из всплывающего меню! При интенсивном редактировании страницы надоедает вначале заходить в редактировании того же региона, или кнопки, или поля, или... А потом уже DELETE, &quot;Да, я согласен&quot; и обратно к редактированию страницы.&lt;br /&gt;
&lt;br /&gt;
На всякий случай добавил в &lt;a href=&quot;https://forums.oracle.com/forums/thread.jspa?threadID=2329000&quot;&gt;APEX 4.2 Wish List&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/9210205632928057521/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2012/05/oracle-apex.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/9210205632928057521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/9210205632928057521'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2012/05/oracle-apex.html' title='Oracle APEX: Мелочь, а не хватает...'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-2356738797665853023</id><published>2012-03-10T01:01:00.000+02:00</published><updated>2012-03-10T01:12:46.028+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apex listener"/><category scheme="http://www.blogger.com/atom/ns#" term="apex-config.xml"/><category scheme="http://www.blogger.com/atom/ns#" term="glassfish"/><category scheme="http://www.blogger.com/atom/ns#" term="howto"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle apex"/><title type='text'>Oracle APEX Listener: Файл настроек</title><content type='html'>Это небольшая заметка о файле настроек &lt;b&gt;Oracle APEX Listener&lt;/b&gt; (OAL), развёрнутом на &lt;b&gt;GlassFish 3&lt;/b&gt;. &lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
По умолчанию OAL создаёт и ищет файл настроек &lt;mono&gt;${java.io.tmpdir}/apex/apex-config.xml&lt;/mono&gt;, где значение &lt;mono&gt;java.io.tmpdir&lt;/mono&gt; для GlassFish установлено в &lt;mono&gt;/tmp&lt;/mono&gt;. Любые временные директории — не место для хранения файлов настроек, поскольку время от времени их содержимое удаляется. &lt;br /&gt;
&lt;br /&gt;
Чтобы изменить это поведение раз и навсегда, необходимо:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Распаковать файл &lt;mono&gt;apex.war&lt;/mono&gt;. Это обычный zip-архив, проблем с разархивацией возникнуть не должно. Например, разархивируем архив в директорию &lt;mono&gt;tmp&lt;/mono&gt;: &lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;unzip -d tmp apex.war&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Изменить параметр &lt;mono&gt;config.dir&lt;/mono&gt; в файле &lt;mono&gt;WEB-INF/web.xml&lt;/mono&gt;. Найдём в нём следующие строки, устанавливающие значение параметра: &lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;!--
  &amp;lt;context-param&gt;
    &amp;lt;param-name&gt;config.dir&amp;lt;/param-name&gt;
    &amp;lt;param-value&gt;${java.io.tmpdir}/APEX&amp;lt;/param-value&gt;
  &amp;lt;/context-param&gt;
--&gt;
&lt;/pre&gt;Раскомментируем и заменим значение параметра:&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  &amp;lt;context-param&gt;
    &amp;lt;param-name&gt;config.dir&amp;lt;/param-name&gt;
    &amp;lt;param-value&gt;${user.dir}&amp;lt;/param-value&gt;&lt;
  &amp;lt;/context-param&gt;
&lt;/pre&gt;Параметр user.dir для приложения, развёрнутого на GlassFish в домен &lt;mono&gt;domain_1&lt;/mono&gt;, будет иметь значение &lt;mono&gt;&lt;Директория GlassFish&gt;/glassfish/domains/domain_1/config&lt;/mono&gt;. OAL создаст по этому пути поддиректорию &lt;mono&gt;apex&lt;/mono&gt; и разместит файл настроек &lt;mono&gt;apex-config.xml&lt;/mono&gt; в ней.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Создать архив &lt;mono&gt;apex.war&lt;/mono&gt; с изменённым файлом. Перейдём в директорию tmp и соберём архив:&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;zip -r apex.war ./*&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Всё, архив с приложением готов к установке.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/2356738797665853023/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2012/03/oracle-apex-listener.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2356738797665853023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2356738797665853023'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2012/03/oracle-apex-listener.html' title='Oracle APEX Listener: Файл настроек'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-7111794710634285880</id><published>2012-01-18T01:02:00.000+02:00</published><updated>2012-01-26T00:10:02.571+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hotkeys"/><category scheme="http://www.blogger.com/atom/ns#" term="howto"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle sql developer"/><category scheme="http://www.blogger.com/atom/ns#" term="xfce"/><category scheme="http://www.blogger.com/atom/ns#" term="xorg"/><title type='text'>Oracle SQL Developer: проблема с горячими клавишами</title><content type='html'>&lt;b&gt;Предыстория:&lt;/b&gt; Не так давно обновил Debian на домашней машине до testing, из-за чего встретился с Gnome 3. Если бы у меня был планшет, наверно, всё было по-другому, однако для настольных ПК это DE недружелюбно. Итогом встречи стал переход на XFCE 4.8, который устроил практически всем. Но...&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Проблема:&lt;/b&gt; Oracle SQL Developer отказался распознавать текстовые символы с включёнными модификаторами &lt;tt&gt;Alt&lt;/tt&gt;, &lt;tt&gt;Ctrl&lt;/tt&gt; и любыми их комбинациями. То есть, о горячих клавишах можно было забыть.&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;b&gt;Причина:&lt;/b&gt; Разброд и шатание в настройках клавиатуры.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ход мыслей:&lt;/b&gt; Поначалу я подумал на баги очередного EA, как раз обновил Oracle SQL Developer. Но откат на стабильную версию и удаление настроек (с созданием резервной копии, конечно) ситуацию не изменили. Пришлось внимательнее почитать Сеть. Несколько тем с похожими проблемами натолкнули на мысль, что что-то не так с настройками клавиатуры. И я начал читать про раскладки, X.org, XFCE, udev, evdev и грабли, на которые уже наткнулось прогрессивное человечество.&lt;br /&gt;
&lt;br /&gt;
Развитие X.org server, вначале отказавшегося от хранения настроек в &lt;tt&gt;xorg.conf&lt;/tt&gt; в пользу HAL, а затем — и от HAL в пользу udev, evdev и задания настроек несколькими файлами через &lt;tt&gt;/etc/X11/xorg.conf.d&lt;/tt&gt;, вынудило меня убрать развёвшийся в &lt;tt&gt;xorg.conf&lt;/tt&gt; бардак. Я убрал секции &lt;tt&gt;InputDevice&lt;/tt&gt; для мышки и клавиатуры, убрал ссылки на них в секции &lt;tt&gt;ServerLayout&lt;/tt&gt;. Cоздал файл &lt;tt&gt;/etc/X11/xorg.conf.d/99-keyboard.conf&lt;/tt&gt;, который задаёт для класса устройств типа Keyboard со строкой keyboard в названии драйвер, модель, раскладки и опции:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:text&quot;&gt;Section &quot;InputClass&quot;
  Identifier &quot;evdev keyboard catchall&quot;
  MatchIsKeyboard &quot;on&quot;
  MatchDevicePath &quot;/dev/input/event*&quot;
  MatchProduct &quot;keyboard&quot;
  Driver &quot;evdev&quot;
  Option &quot;XkbModel&quot; &quot;logicd&quot;
  Option &quot;XkbRules&quot; &quot;xorg&quot;
  Option &quot;XkbLayout&quot; &quot;us,ru&quot;
  Option &quot;XkbVariant&quot; &quot;,winkeys&quot;
  Option &quot;XkbOptions&quot; &quot;grp:caps_toggle,compose:rwin,terminate:ctrl_alt_bksp&quot;
EndSection&lt;/pre&gt;&lt;br /&gt;
Также, перезагружая иксы и проглядывая раз за разом &lt;tt&gt;/var/log/Xorg.0.log&lt;/tt&gt;, я удалил не поддерживаемые расширения и модули, ненужные видеорежимы и прочий мусор. В &lt;tt&gt;/etc/default/keyboard&lt;/tt&gt; были внесены те же правила для клавиатуры. Однако &lt;tt&gt;setxkbmap -print -verbose 10&lt;/tt&gt; показывал совсем не то. Оказалось, что &lt;tt&gt;xfce4-xkb-plugin&lt;/tt&gt; отчего-то переопределяет системные настройки, не смотря на соответствующую опцию. За что и был заменён на &lt;tt&gt;xxkb&lt;/tt&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Итог:&lt;/b&gt; Oracle SQL Developer снова работает с горячими клавишами, в настройке устройств ввода наведён небольшой порядок, место индикатора раскладок занял &lt;tt&gt;xxkb&lt;/tt&gt;.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/7111794710634285880/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2012/01/oracle-sql-developer.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7111794710634285880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7111794710634285880'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2012/01/oracle-sql-developer.html' title='Oracle SQL Developer: проблема с горячими клавишами'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-2040403971634801577</id><published>2011-12-31T18:20:00.004+02:00</published><updated>2011-12-31T18:21:16.747+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="оффтоп"/><title type='text'>НГ-2012</title><content type='html'>Желаю в наступающем Новом году счастья, здоровья, достаточно воображения для задумок и достаточно сил для их воплощения!</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/2040403971634801577/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2011/12/2012.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2040403971634801577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2040403971634801577'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2011/12/2012.html' title='НГ-2012'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-7616121108264355192</id><published>2011-10-12T22:18:00.001+03:00</published><updated>2011-10-12T22:18:19.045+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="16305"/><category scheme="http://www.blogger.com/atom/ns#" term="ora-00600"/><category scheme="http://www.blogger.com/atom/ns#" term="ora-03113"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="startup failure"/><title type='text'>Oracle: ORA-00600 [16305] + ORA-03113 при открытии БД</title><content type='html'>Обновил в очередной раз Debian на своей домашней машине, запускаю экземпляр Oracle - и что я вижу? ORA-03113 в консоли + ORA-00600 [16305] в alert.log. Порыскав немного по OTN Forums и MOS и попутно заглядывая в трассу PMON, наткнулся на Doc ID &lt;a href=&quot;https://supporthtml.oracle.com/ep/faces/secure/km/DocumentDisplay.jspx?id=466056.1&amp;h=Y&quot;&gt;466056.1&lt;/a&gt;. Проверяя кэйс, выполнил &lt;b&gt;ifconfig&lt;/b&gt; - а в выводе нет работающего loopback-интерфейса. В общем, для решения проблемы было достаточно его поднять:
&lt;pre class=&quot;brush:bash&quot;&gt;sudo ifup lo&lt;/pre&gt;
И можно смело запускать экземпляр.</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/7616121108264355192/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2011/10/oracle-ora-00600-16305-ora-03113.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7616121108264355192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7616121108264355192'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2011/10/oracle-ora-00600-16305-ora-03113.html' title='Oracle: ORA-00600 [16305] + ORA-03113 при открытии БД'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-2480680142079329169</id><published>2011-10-12T21:59:00.000+03:00</published><updated>2011-10-12T22:19:32.441+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="longops"/><category scheme="http://www.blogger.com/atom/ns#" term="multiple operations"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><title type='text'>Oracle: V$SESSION_LONGOPS и несколько одновременных длинных операций</title><content type='html'>Для того, чтобы отразить в &lt;b&gt;V$SESSION_LONGOPS&lt;/b&gt; состояние нескольких одновременных длительных операций - например, общее выполнение процесса и конкретный большой шаг - нужно сохранять значение параметра &lt;b&gt;slno&lt;/b&gt; процедуры &lt;b&gt;&lt;a href=&quot;http://download.oracle.com/docs/cd/E11882_01/appdev.112/e25788/d_appinf.htm#i996999&quot;&gt;DBMS_APPLICATION_INFO.set_session_longops&lt;/a&gt;&lt;/b&gt;. Используя затем пару значений (&lt;b&gt;rindex&lt;/b&gt;,&lt;b&gt;slno&lt;/b&gt;), можно менять необходимую строку в &lt;b&gt;V$SESSION_LONGOPS&lt;/b&gt;.

Вот пример работы с двумя длительными операциями:

&lt;pre class=&quot;brush:sql&quot;&gt;declare
  first_row pls_integer := dbms_application_info.set_session_longops_nohint;
  second_row pls_integer := dbms_application_info.set_session_longops_nohint;
  slno1 pls_integer;
  slno2 pls_integer;
begin
  dbms_application_info.set_session_longops(rindex =&gt; first_row
                                            ,slno =&gt; slno1
                                            ,op_name =&gt; &#39;1_op&#39;
                                            ,sofar =&gt; 1
                                            ,totalwork =&gt; 2
                                            ,units =&gt; &#39;step&#39;
                                           );
  dbms_application_info.set_session_longops(rindex =&gt; second_row
                                            ,slno =&gt; slno2
                                            ,op_name =&gt; &#39;2_op&#39;
                                            ,sofar =&gt; 1
                                            ,totalwork =&gt; 1
                                            ,units =&gt; &#39;step&#39;
                                           );
  dbms_application_info.set_session_longops(rindex =&gt; first_row
                                            ,slno =&gt; slno1
                                            ,op_name =&gt; &#39;1_op&#39;
                                            ,sofar =&gt; 2
                                            ,totalwork =&gt; 2
                                            ,units =&gt; &#39;step&#39;
                                           );
 
end;
/

select MESSAGE from v$session_longops where (sid,serial#) =
(select sid,serial# from v$session where audsid = USERENV(&#39;SESSIONID&#39;));&lt;/pre&gt;

Тема на &lt;b&gt;SQL.RU&lt;/b&gt;: &lt;a href=&quot;http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&amp;tid=872856&amp;msg=11108962&quot;&gt;set_session_longops Можно ли вернуться к предидущей строке?&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/2480680142079329169/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2011/10/oracle-vsessionlongops.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2480680142079329169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2480680142079329169'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2011/10/oracle-vsessionlongops.html' title='Oracle: V$SESSION_LONGOPS и несколько одновременных длинных операций'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-4863830513842862882</id><published>2011-08-05T12:22:00.005+03:00</published><updated>2011-08-05T14:18:32.051+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="built-in"/><category scheme="http://www.blogger.com/atom/ns#" term="count click"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle apex"/><category scheme="http://www.blogger.com/atom/ns#" term="url syntax"/><category scheme="http://www.blogger.com/atom/ns#" term="z"/><title type='text'>Oracle APEX: Процедуры в URL - Z</title><content type='html'>Последняя из &quot;маленьких&quot; встроенных процедур APEX, которые можно использовать в URL: &lt;b&gt;Z&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;Эта процедура используется для подсчёта кликов по ссылкам. Обёрткой вокруг неё является &lt;a href=&quot;http://download.oracle.com/docs/cd/E17556_01/doc/apirefs.40/e15519/apex_util.htm#CHDBHDFF&quot;&gt;&lt;b&gt;APEX_UTIL.COUNT_CLICK&lt;/b&gt;&lt;/a&gt;, поэтому можно смело ориентироваться на документацию, меняя в примерах &lt;b&gt;APEX_UTIL.COUNT_CLICK&lt;/b&gt; на &lt;b&gt;Z&lt;/b&gt;. У &lt;b&gt;Z&lt;/b&gt; есть следующие параметры:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;p_url&lt;/b&gt; — URL, к которому необходимо перейти.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;p_cat&lt;/b&gt; — категория, к которой Z причисляет клик. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;p_id&lt;/b&gt; — вторичный &lt;i&gt;числовой&lt;/i&gt; идентификатор клика. ID приложения, номер страницы — всё то, что поможет Вам в дальнейшем выделить именно эти клики из остальных.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;p_user&lt;/b&gt; — пользователь, который сделал клик.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;p_company&lt;/b&gt;, &lt;b&gt;p_workspace&lt;/b&gt; — ID рабочего пространства. Если &lt;b&gt;p_company&lt;/b&gt; пустое, то используется &lt;b&gt;p_workspace&lt;/b&gt;. Если оба эти параметра пустые, то &lt;b&gt;Z&lt;/b&gt; не сохраняет информацию о клике, а просто перенаправляет на &lt;b&gt;p_url&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Пример URL с этой процедурой: &lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:plain&quot;&gt;z?p_url=w3.org&amp;p_cat=w3c&amp;p_company=&amp;WORKSPACE_ID.&lt;/pre&gt;&lt;br /&gt;
Информацию, собранную &lt;b&gt;Z&lt;/b&gt;, можно просмотреть в представлении APEX_WORKSPACE_CLICKS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сообщения по теме: &lt;br /&gt;
&lt;a href=&quot;http://suppler.blogspot.com/2011/07/oracle-apex-url-f.html&quot;&gt;Oracle APEX: Процедуры в URL - F&lt;/a&gt; &lt;br /&gt;
&lt;a href=&quot;http://suppler.blogspot.com/2011/08/oracle-apex-url-p.html&quot;&gt;Oracle APEX: Процедуры в URL - P&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/4863830513842862882/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2011/08/oracle-apex-url-z.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/4863830513842862882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/4863830513842862882'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2011/08/oracle-apex-url-z.html' title='Oracle APEX: Процедуры в URL - Z'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-2777181510049747869</id><published>2011-08-04T02:05:00.007+03:00</published><updated>2011-08-05T14:17:51.538+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="built-in"/><category scheme="http://www.blogger.com/atom/ns#" term="download file"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle apex"/><category scheme="http://www.blogger.com/atom/ns#" term="p"/><category scheme="http://www.blogger.com/atom/ns#" term="url syntax"/><title type='text'>Oracle APEX: Процедуры в URL - P</title><content type='html'>Ещё одна используемая при создании URL процедура: &lt;b&gt;P&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;fullpost&quot;&gt;Она не завраплена, так что её код можно легко увидеть:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;create or replace
procedure p (
    n       in varchar2 default null,
    p_mime_type in varchar2 default null,
    p_inline    in varchar2 default &#39;NO&#39;)

-- Copyright (c) Oracle Corporation 2001. All Rights Reserved.
--
--    DESCRIPTION
--      View a page given a page ID
--
--    SECURITY
--      Public shortcut
--
--    NOTES
--
--    EXAMPLES:
--

is
begin
     if n is null then
         htp.p(wwv_flow_lang.system_message(&#39;p.valid_page_err&#39;));
         return;
     end if;
     --
     wwv_flow_file_mgr.get_file (
        p_id =&gt; n,
        p_mime_type =&gt; p_mime_type,
        p_inline =&gt; p_inline);
end p;
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;P&lt;/b&gt; используется, чтобы скачать загруженные файлы, которые можно найти в представлении &lt;b&gt;APEX_APPLICATION_FILES&lt;/b&gt; (aka &lt;b&gt;WWV_FLOW_FILES&lt;/b&gt;, построено на таблице &lt;b&gt;FLOW_FILES.WWV_FLOW_FILE_OBJECTS$&lt;/b&gt;). У этой процедуры не так много параметров:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;n&lt;/b&gt; — ID файла, который необходимо скачать.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;p_mime_type&lt;/b&gt; — устаревший параметр для указания MIME-типа файла. Сейчас информация берётся из соответствующих столбцов записи в &lt;b&gt;APEX_APPLICATION_FILES&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;p_inline&lt;/b&gt; — &lt;i&gt;NO&lt;/i&gt;, чтобы предложить пользователю скачать файл; &lt;i&gt;YES&lt;/i&gt;, чтобы браузер отобразил его.&lt;/li&gt;
&lt;/ul&gt;Пример относительного URL для скачивания файла с ID=1234567891011:  &lt;pre class=&quot;brush:plain&quot;&gt;p?n=123456789101112&amp;p_inline=NO&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Сообщения по теме:&lt;br /&gt;
&lt;a href=&quot;http://suppler.blogspot.com/2011/07/oracle-apex-url-f.html&quot;&gt;Oracle APEX: Процедуры в URL - F&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://suppler.blogspot.com/2011/08/oracle-apex-url-z.html&quot;&gt;Oracle APEX: Процедуры в URL - Z&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/2777181510049747869/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2011/08/oracle-apex-url-p.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2777181510049747869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/2777181510049747869'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2011/08/oracle-apex-url-p.html' title='Oracle APEX: Процедуры в URL - P'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-6896348555658353130</id><published>2011-07-20T08:51:00.009+03:00</published><updated>2011-08-05T14:20:39.108+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="built-in"/><category scheme="http://www.blogger.com/atom/ns#" term="f"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle apex"/><category scheme="http://www.blogger.com/atom/ns#" term="show page"/><category scheme="http://www.blogger.com/atom/ns#" term="url syntax"/><title type='text'>Oracle APEX: Процедуры в URL - F</title><content type='html'>В APEX переход по страницам приложения - это обращение к процедурам. И одной из самых используемых процедур является &lt;b&gt;F&lt;/b&gt;. &lt;span class=&quot;fullpost&quot;&gt;Чтобы увидеть её, можно просто почаще смотреть в строку адреса во время работы с APEX. Там обнаружится что-то вроде такого:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:plain&quot;&gt;http://work:8080/apex/f?p=4000:1500:434361572702804:::::&lt;/pre&gt;&lt;br /&gt;
С помощью этой процедуры можно создавать ссылки к различным страницам приложений APEX. Я не буду здесь повторять раздел документации &lt;a href=&quot;http://download.oracle.com/docs/cd/E17556_01/doc/user.40/e15517/concept.htm#BEIFCDGF&quot;&gt;Oracle® Application Express Application Builder User&#39;s Guide: 2 Application Builder Concepts - Understanding URL Syntax&lt;/a&gt;. По крайней мере, ту его часть, которая описывает структуру значений параметра &lt;b&gt;P&lt;/b&gt;. Давайте лучше поговорим о том, что упоминается не так часто.&lt;br /&gt;
&lt;br /&gt;
Итак, &lt;b&gt;F&lt;/b&gt; - это своеобразная обёртка для &lt;b&gt;WWV_FLOW.SHOW&lt;/b&gt; (aka &lt;b&gt;APEX_APPLICATION.FLOW&lt;/b&gt;). В этой процедуре устанавливаются различные глобальные переменные, использующиеся для отображения страницы, параметр P разбирается на составляющие, которые передаются в &lt;b&gt;APEX_APPLICATION.FLOW&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Кроме параметра &lt;b&gt;P&lt;/b&gt; у процедуры &lt;b&gt;F&lt;/b&gt; есть ещё параметры. Часть из них описана в документации, часть можно увидеть в URL при работе с приложениями. Вот неполный список:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;p_sep&lt;/b&gt; - разделитель, который используется, чтобы разбить значение параметра P в PL/SQL-коллекцию.&lt;br /&gt;
&lt;li&gt;&lt;b&gt;p_trace&lt;/b&gt; - если равен &quot;YES&quot;, apex_application.show будет создавать трассировочный файл. Подробнее в документации: &lt;a href=&quot;http://download.oracle.com/docs/cd/E17556_01/doc/user.40/e15517/debug.htm#HTMDB10004&quot;&gt;Enabling SQL Tracing and Using TKPROF&lt;/a&gt;.&lt;br /&gt;
&lt;li&gt;&lt;b&gt;c&lt;/b&gt; - workspace_id или название (workspace) рабочего пространства из apex_workspaces. По значению этого параметра выбирается и устанавливается группа безопасности (aka security group ID). Это понадобится, к примеру, при вызове страниц приложения с тем же псевдонимом в другом рабочем пространстве. Упоминается в документации: &lt;a href=&quot;http://download.oracle.com/docs/cd/E17556_01/doc/user.40/e15517/concept.htm#BCECAIFD&quot;&gt;Calling a Page Using an Application and Page Alias&lt;/a&gt;.&lt;br /&gt;
&lt;li&gt;&lt;b&gt;cs&lt;/b&gt; - контрольная сумма, которой проверяются значения параметров. Первый символ - тип кинтрольной суммы, остальная строка - собственно контрольная сумма.&lt;br /&gt;
&lt;li&gt;&lt;b&gt;success_msg&lt;/b&gt; - текст для отображения сообщения об успешном выполнении.&lt;br /&gt;
&lt;li&gt;&lt;b&gt;notification_msg&lt;/b&gt; - текст для отображения уведомления.&lt;br /&gt;
&lt;li&gt;&lt;b&gt;tz&lt;/b&gt;, &lt;b&gt;p_lang&lt;/b&gt;, &lt;b&gt;p_territory&lt;/b&gt; - NLS-параметры: временная зона, язык и территория. Значением &lt;b&gt;p_lang&lt;/b&gt; можно менять язык сессии, который используется при переводе приложения с настройкой &lt;i&gt;Application Language Derived From&lt;/i&gt; = &lt;i&gt;Session&lt;/i&gt;. &lt;/ul&gt;
&lt;br /&gt;
Сообщения по теме:  &lt;br /&gt;
&lt;a href=&quot;http://suppler.blogspot.com/2011/08/oracle-apex-url-p.html&quot;&gt;Oracle APEX: Процедуры в URL - P&lt;/a&gt;  &lt;br /&gt;
&lt;a href=&quot;http://suppler.blogspot.com/2011/08/oracle-apex-url-z.html&quot;&gt;Oracle APEX: Процедуры в URL - Z&lt;/a&gt; &lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/6896348555658353130/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2011/07/oracle-apex-url-f.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/6896348555658353130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/6896348555658353130'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2011/07/oracle-apex-url-f.html' title='Oracle APEX: Процедуры в URL - F'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-7678533705680484167</id><published>2011-07-08T02:43:00.002+03:00</published><updated>2012-05-23T00:45:24.059+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hack"/><category scheme="http://www.blogger.com/atom/ns#" term="howto"/><category scheme="http://www.blogger.com/atom/ns#" term="internals"/><category scheme="http://www.blogger.com/atom/ns#" term="kill"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle apex"/><category scheme="http://www.blogger.com/atom/ns#" term="session"/><title type='text'>Oracle APEX: Убить Билла</title><content type='html'>Как удалить вручную сессию APEX, если известен её ID? Всё довольно просто. &lt;br /&gt;
&lt;br /&gt;
Для начала подумаем, где должна использоваться возможность удаления сессии. Правильно, там где пользователь завершает сеанс в приложении - смотрим на ссылку &lt;b&gt;LOGOUT_URL&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:plain&quot;&gt;http://localhost:8888/apex/wwv_flow_custom_auth_std.logout?p_this_flow=4000&amp;p_next_flow_page_sess=4550:8:8297564516445573&lt;/pre&gt;&lt;br /&gt;
Нужное нам находится в &lt;b&gt;wwv_flow_custom_auth_std.logout&lt;/b&gt;. Давайте глянем ещё на процесс, который выполняется при принудительном удалении сессий администратором экземпляра APEX. Заходим в &lt;i&gt;Administration-&gt;Application Express Internal Administration&lt;/i&gt;, переходим на &lt;i&gt;Manage Instance-&gt;Session State-&gt;Purge Session, by age&lt;/i&gt;. Это страница &lt;b&gt;66&lt;/b&gt; приложения &lt;b&gt;4050&lt;/b&gt;. Посмотрим, что за процессы выполняются при обработке этой страницы:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql; highlight: [8];&quot;&gt;set long 5000
select process_source 
  from apex_application_page_proc 
 where application_id = 4050 and page_id = 66;

PROCESS_SOURCE
--------------------------------------------------------------------------------
wwv_flow_cache.purge_oldest_sessions (
p_num_sessions_to_purge     =&gt; :P66_MAX_SESSIONS,
p_purge_sess_older_then_hrs =&gt; :P66_AGE * 24);&lt;/pre&gt;&lt;br /&gt;
Ещё одна наводка - пакет &lt;b&gt;wwv_flow_cache&lt;/b&gt; с множеством процедур &lt;b&gt;purge_%&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Произведя ритуал Unwrap над этими пакетами, можно увидеть, что удаляется сессия APEX с идентификатором :p_id довольно просто:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:sql&quot;&gt;delete apex_040000.wwv_flow_sessions$ where id = :p_id;&lt;/pre&gt;&lt;br /&gt;
Всё, остальные изыски из этих процедур вроде подсчёта удалённых сессий, переноса их в wwv_flow_purged_sessions$ и изменения значения в печеньке на -1 нам не нужны. &lt;br /&gt;
&lt;br /&gt;
Убить &lt;s&gt;Билла&lt;/s&gt; сессию APEX - проще простого. Была бы лицензия на убийство в виде соответствующей привилегии на таблицу &lt;b&gt;apex_040000.wwv_flow_sessions$&lt;/b&gt;...</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/7678533705680484167/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2011/07/oracle-apex.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7678533705680484167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/7678533705680484167'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2011/07/oracle-apex.html' title='Oracle APEX: Убить Билла'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1048968608851202757.post-3611021216235077659</id><published>2011-06-18T13:26:00.001+03:00</published><updated>2011-06-18T13:27:14.972+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="pl/sql challenge"/><category scheme="http://www.blogger.com/atom/ns#" term="quiz"/><title type='text'>PL/SQL Challenge: Now with APEX flavor!</title><content type='html'>Сегодня на &lt;a href=&quot;http://plsqlchallenge.com/&quot;&gt;PL/SQL Challenge&lt;/a&gt; появилась первая викторина по APEX. Надеюсь, многие захотят поучаствовать: для проверки знаний, из интереса, ради призов и чтобы узнать что-то новое.&lt;br /&gt;
&lt;br /&gt;
Удачи!</content><link rel='replies' type='application/atom+xml' href='http://suppler.blogspot.com/feeds/3611021216235077659/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://suppler.blogspot.com/2011/06/plsql-challenge-now-with-apex-flavor.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/3611021216235077659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1048968608851202757/posts/default/3611021216235077659'/><link rel='alternate' type='text/html' href='http://suppler.blogspot.com/2011/06/plsql-challenge-now-with-apex-flavor.html' title='PL/SQL Challenge: Now with APEX flavor!'/><author><name>suPPLer</name><uri>http://www.blogger.com/profile/01186200400558858674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiaiVEJKpTvrZtY0QTT4ZT7JZxqkDI8pbWzKWAE7sAxcmjeTbH3UMH5oWfoE267MwFmbFmO4KCL_NwIUoGXemvMa74iIuHgjjbUq2BCAUg0xxX9C0nMaKCP8avj4Q/s220/v.jpg'/></author><thr:total>0</thr:total></entry></feed>