Glassfish LB Plug-in limit?
Dear all,
I configured the SUN Webserver7 with Glassfish LB plugin.
It worked fine with Glassfish in normal SOAP request.
Unfortunately, in my real case, each SOAP request might need about 1-4 seconds to response back to client.
So I used Thread.sleep(1000~4000) to simulate the request. The reason why it takes so long is that in my
SOAP service it will send another SOAP to another server not in my domain.
Normally without sleep(N) seconds, the Glassfish's throughput is about 800 TPS on 2GB Head with 4core Q8200 CPU
on CentOS 5.3.
But with sleep 1000 ms, the throughput drop to 400.
with sleep 2000 ms, the throughput drop to 300.
with sleep 10000 ms, the throughput drop to about 45 only.
I am curiouly about G.F. performance and it looks like the upper-limit of G.F. HTTP Thread-Count is 500. then my TPS
could not over 500 just because each worker thread is locked.
Another issue is once I used sleep(N), then the max. request thread through SUN webserver 7 with LB plugin can not exceed
256 thread.
If I did not use sleep(N) it worked fine. I am curious about this.
Then I switched to HAProxy, it can accept more thread than SUN did.
Can anyone helpme about this?
Thanks in advance.
Eric
should u not post this question to glassfish alias as it pertains more about glassfish than web server 7
Similar Messages
-
Sound window only has digital choice
have analog speakers plugged into lime green...sound window has digital checked but no other option in window to change to speakers[for analog]
Right-click in the Sound Properties window (on a space that is empty) and select "Show disconnected devices".
... an HP employee expressing his own opinion.
Please post rather than send me a Message. It's good for the community and I might not be able to get back quickly. - Thank you. -
When I plug my iphone in to my USB port in the car or computer I get an error message which says the USB has exceeded it power limit.
What can I do?madonnafromqld wrote:
When I plug my iphone in to my USB port in the car or computer I get an error message which says the USB has exceeded it power limit.
What can I do?
Stop doing that. -
Why does my Ipod play at a low volume? When I have my earbuds in I have to have it at almost full volume, and when I plug it into a boombox it doesn't play as loud as the radio or a cd. I have the volume limit turned all the way up in the settings also. All my songs on my Ipod were burned from cd's(if that helps) thanks.
Sorry, I have the same issue.
So far searching threads here is not coming up with anything.
I have set aside my restore discs, to start the process of ripping the drive clean.
I tried Omni Sweep, but all it did was confirm the space I counted up.
Still does not show what's hidding. 113GB worth on mine.
That software really boggs down the system.
I could not load an email with it running.
Good LUck as well. -
To read outlook exhange limit in outlook plug in(2010 and 2013)
Hi,
I have to read the outlook exchange limit size in my outlook plug in (c#). I tried below code bit it did not work.Please help me out on this.
this.Application.Session.Stores[i].PropertyAccessor.GetProperty("PR_MAX_SUBMIT_MESSAGE_SIZE")
this.Application.Session.DefaultStore.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x666D0003");
Thanks
ChandramohanHello,
Do you get any exception in the code? Could you please be more specific?
Anyway, try to you any low-level property viewer such as MFCMAPI or Outlook Spy to explore properties. Do you see that property set?
You may find the
similar forum thread helpful. -
How do I limit access of a computer that is plugged directly into the router?
I have an AirPort Extreme, Version 7.6.1 I need to limit access of a computer that's plugged by usb directly into the router. I have the MAC address for this computer and have had restrictions on it the in the past, but it was connected by WiFi then. How do I do this? Do I limit access to the Ethernet ID? I don't want to lock myself out trying to figure it out; I did that last night. Can someone advise please.
You could use OpenDNS's parental controls:
http://www.opendns.com/home-solutions/parental-controls
It can restrict access according to your specifications for everyone on your network.
It's free. -
Error creating plug-in in Apex 4.2 using GlassFish and ORDS
Hi All,
Having problems importing plugins in Apex 4.2.4 using Glassfish and ORDS.
Error message:
ORA-20987: APEX - Execution of the statement was unsuccessful. ORA-20001: Error creating plug-in id="7527582887400956434" ORA-20001: Application ID and current security group ID are not consistent.
Error_On_Component_Type:
WWV_FLOW_SECURITY
Error_On_Component_Name:
FINAL_EXCEPTION_HANDLER
Environment:
Linux
- Oracle11g r2 Linux database.
Windows 2012
- Glassfish version 3.1.2.2
- Oracle Restfull Data Service
Is there a way to simply log the Glassfish / ORDS environment to find out what's the database connection it's using and the security information that is passed and used in the Apex environment?
P.S:
When using the Oracle 11g WebTier HTTP Server on Windows 2012 or the IIS Thoth Gateway on Windows 2012 i can import the plug-in without any problem.
Any help or advice will be much appreciated.
Thx,
AnibalI would start by putting this after submit, to check the contents of the array.
apex_debug.message('count:'||apex_application.g_f01.COUNT);
FOR i IN 1..apex_application.g_f01.COUNT LOOP
apex_debug.message('i:'||i||':'||apex_application.g_f01(i));
END LOOP;
Then compare the contents with your answers table. -
PL/SQL Limit When Dealing with a CLOB?
Greetings,
I am constructing HTML into a CLOB in a PL/SQL routine which I later display in an APEX application. The HTML can get large, because I am constructing a grid over an image, and the grid can have a lot of columns and rows which means there can be a lot of <area shape="rect" HTML lines. I did a search and found that another person had the same problem, because there is a 32K limit with HTML contents. That was very helpful.
Thing is - I have another (maybe similar) issue. The procedure that constructs the HTML gets a numeric error when the number of cells in the grid reach a certain point. I checked and this happens when the CLOB in the procedure gets close to 32K. Sorry, it difficult to know exactly when it fails, but the most I have been able to put into the CLOB is 32,852 characters. Therefore my question - is there in internal limit in PL/SQL (or some other Oracle aspect) that is limited to 32K? The coluimn in the table that contains the HTML is a CLOB and the variable in the PL/SQL that the HTML is parsed into is a CLOB, so I thought I was good to go since the CLOB limit is 4GB. But, it looks like I may be missing something.
We are running Oracle 11i and APEX 4.0.2.00.07. If other system info is needed let me know and I will get that for you.
Also, if it helps. The code from the procedure is copied below. v_html is the variable that holds the HTML. The table column for the HTML is imagemap_html. Both v_html and imagemap_html are defined as CLOB's.
Thanks, Tony
= = = = = = =
create or replace
procedure create_grid (p_action IN VARCHAR2) as
v_wcount integer := 0;
v_wmax integer := 20;
v_width integer := 720;
v_w1 integer := 0;
v_w2 integer := 0;
v_winc integer := 0;
v_wstart integer := 0;
v_wend integer := 0;
v_hcount integer := 0;
v_hmax integer := 10;
v_height integer := 520;
v_h1 integer := 0;
v_h2 integer := 0;
v_hinc integer := 0;
v_hstart integer := 0;
v_hend integer := 0;
v_cell_row integer := 0;
v_cell_col integer := 0;
v_cell_title varchar2(10) := NULL;
v_whitespace varchar2(10) := NULL;
v_url_1 varchar2(100) := NULL;
v_url_2 varchar2(100) := NULL;
v_url_3 varchar2(100) := NULL;
v_brand_id integer := 0;
v_division_id integer := 0;
v_plant_id integer := 0;
v_model_id integer := 0;
v_acc_group integer := 0;
v_accessory integer := 0;
v_acc_grp integer := 0;
v_acc integer := 0;
v_station_id integer := 0;
v_substation_id integer := 0;
v_image_id integer := 0;
v_id integer := 0;
v_html clob;
begin
v_brand_id := v('P4_BRAND_ID');
v_division_id :=v('P4_DIVISION_ID');
v_plant_id := v('P4_PLANT_ID');
v_model_id := v('P4_MODEL_ID');
v_acc_group := v('P4_ACC_GROUP');
v_accessory := v('P4_ACCESSORY');
v_station_id := v('P4_STATION_ID');
v_substation_id := v('P4_SUBSTATION_ID');
v_image_id := v('P4_IMAGES_ID');
v_wmax := v('P4_COLUMNS');
v_hmax := v('P4_ROWS');
v_wstart := v('P4_XSTART');
v_hstart := v('P4_YSTART');
v_wend := v('P4_XEND');
v_hend := v('P4_YEND');
v_whitespace := v('P4_WHITESPACE');
if p_action = 'INSERT' then
-- insert the row now, so that the cell table rows can be inserted with the correct FK
insert into IM_TEMPLATE_DRAFT
(plant_id, brand_id, division_id, model_id, acc_group, accessory, station_id,
substation_id, image_id)
values
(v_plant_id,v_brand_id,v_division_id,v_model_id,v_acc_group,v_accessory,v_station_id,v_substation_id,v_image_id);
commit;
end if;
-- get the id of the row that was just inserted
select header_id into v_id from IM_TEMPLATE_DRAFT where
plant_id=v_plant_id and brand_id=v_brand_id and division_id=v_division_id and
model_id=v_model_id and acc_group=v_acc_group and accessory=v_accessory and
station_id=v_station_id and substation_id=v_substation_id and image_id=v_image_id;
-- remove all the cell rows for the draft, they will be created anew
delete from qcis_draft_cells where draft_id = v_id;
BEGIN
select pixel_width, pixel_height into v_width, v_height from images
where images_id = v_image_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_height := 720;
v_width := 520;
END;
-- the first part of the href for the image is stored in the keyword table and put into v_url_1 for use later
BEGIN
select keyword_value into v_url_1 from qcis_keywords
where keyword_type = 'Control' and keyword_code = 'URL_PATH';
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_url_1 := 'http://xxx.xxx.com:8000/apex40/f?p=';
END;
-- construct the first three lines of the div tag
v_html := '<div style="text-align:center; width:'||v_width||'px; margin-left:auto; margin-right:auto;">';
v_html := v_html || chr(10) || '<img id="ImageMap" src="download_image?p_id='||v_image_id||'" usemap="#ImageMap" border="0" width="'||v_width||'" height="'||v_height||'" alt="" />';
v_html := v_html || chr(10) || '<map id="_ImageMap" name="ImageMap">';
-- subtract the ending inset amounts from the image dimensions
v_width := v_width - v_wend;
v_height := v_height - v_hend;
-- calculate the increment for each cell and subtract the starting inset amounts
v_winc := floor((v_width - v_wstart) / v_wmax);
v_hinc := floor((v_height - v_hstart) / v_hmax);
-- there are two main loops, one for the columns, one for the rows
-- one loop is inside the other, which helps to build the cells in logical order and helps with the naming of the cells
loop
-- if this is the first row (count = 0) and they have inset values we need to adust the first x y values to something other than zero
if ((v_wstart != 0) and (v_wcount = 0)) then v_w1 := v_wstart; end if;
if ((v_hstart != 0) and (v_hcount = 0)) then v_h1 := v_hstart; end if;
if ((v_wstart != 0) and (v_wcount = 0)) then v_w2 := v_wstart; end if;
if ((v_hstart != 0) and (v_hcount = 0)) then v_h2 := v_hstart; end if;
v_wcount := v_wcount + 1;
v_w2 := v_w2 + v_winc;
-- checking to see if this is the last row and whether they want the grid to go to the end or have all cells the same size which may leave whitespace
if (v_wcount = v_wmax) and (v_whitespace = 'Y') then v_w2 := v_width - 2; end if;
v_cell_row := 0;
v_cell_col := v_cell_col +1;
loop
v_hcount := v_hcount + 1;
v_h2 := v_h2 + v_hinc;
-- checking to see if this is the last row and whether they want the grid to go to the end or have all cells the same size which may leave whitespace
if (v_hcount = v_hmax) and (v_whitespace = 'Y') then v_h2 := v_height - 2; end if;
v_cell_row := v_cell_row + 1;
-- put it all together and construct the line for the area shape tag
v_html := v_html || chr(10) || '<area shape="rect" coords="'
||v_w1||','||v_h1||','||v_w2||','||v_h2||
'" href="'||v_url_1|| '" alt="'||v_cell_col||'-'||v_cell_row||'" title="'||v_cell_col||'-'||v_cell_row||'" />';
v_cell_title := v_cell_col||'-'||v_cell_row;
insert into DRAFT_CELLS (DRAFT_ID, CELL_TITLE) values(v_id, v_cell_title);
v_h1 := v_h1 + v_hinc;
exit when v_hcount = v_hmax;
end loop;
v_hcount := 0;
v_h1 := 0;
v_h2 := 0;
v_w1 := v_w1 + v_winc;
exit when v_wcount = v_wmax;
end loop;
v_html := v_html || chr(10) || '</div>';
update IM_TEMPLATE_DRAFT set imagemap_html = v_html
where header_id = v_id;
END create_grid;Edited by: cloaked on Nov 7, 2011 4:45 AMFor "Application Express 4.2.1.00.08" i created such good solution.
I downloaded freeware plugin "Enkitec Clob Load Plug-in Version: 1.0.0 - APEX Version: 4.2.0" from there:
http://www.enkitec.com/products/plugins/clob-load/help
Then i followed plugin installation steps and created a APEX page where i added an item of type "Rich Text Editor".
I found the plugin crashes when my database CLOB field is empty, also crashed when i tried to save down empty value to database.
I changed Plugin code a little, and now everything works as needed, i can save down larga data, and also empty data.
1. In Apex open plugin "Enkitec CLOB Load".
2. Navigate to "Source-->PL/SQL Code" where is text area with plugin source code.
3. there you have such code:
FUNCTION enkitec_clob_load_render (
p_dynamic_action IN APEX_PLUGIN.T_DYNAMIC_ACTION,
p_plugin IN APEX_PLUGIN.T_PLUGIN
RETURN APEX_PLUGIN.T_DYNAMIC_ACTION_RENDER_RESULT
IS
l_retval APEX_PLUGIN.T_DYNAMIC_ACTION_RENDER_RESULT;
l_show_modal VARCHAR2(1) := p_plugin.attribute_01;
l_dialog_title VARCHAR2(4000) := NVL(p_plugin.attribute_02, 'Please wait...');
l_loading_img_type VARCHAR2(30) := p_plugin.attribute_03;
l_loading_img_c VARCHAR2(4000) := p_plugin.attribute_04;
l_action VARCHAR2(10) := NVL(p_dynamic_action.attribute_01, 'RENDER');
l_change_only VARCHAR2(1) := NVL(p_dynamic_action.attribute_06, 'Y');
l_make_blocking VARCHAR2(1) := NVL(p_dynamic_action.attribute_07, 'Y');
l_loading_img_src VARCHAR2(32767);
l_crlf VARCHAR2(2) := CHR(13)||CHR(10);
l_js_function VARCHAR2(32767);
l_onload_code VARCHAR2(32767);
BEGIN
IF apex_application.g_debug
THEN
apex_plugin_util.debug_dynamic_action(
p_plugin => p_plugin,
p_dynamic_action => p_dynamic_action
END IF;
IF l_loading_img_type = 'DEFAULT'
THEN
l_loading_img_src := p_plugin.file_prefix || 'enkitec-loading.gif';
ELSE
l_loading_img_src := REPLACE(l_loading_img_c, '#IMAGE_PREFIX#', apex_application.g_image_prefix);
l_loading_img_src := REPLACE(l_loading_img_src, '#PLUGIN_PREFIX#', p_plugin.file_prefix);
END IF;
apex_css.add(
p_css => '.clob-load-dialog .ui-dialog-titlebar-close {display: none;}',
p_key => 'clob-load-hide-modal-close'
apex_javascript.add_library(
p_name => 'enkitec-clob-load.min',
p_directory => p_plugin.file_prefix,
p_version => NULL
l_onload_code :=
'apex.jQuery(document).clob_load({'|| l_crlf ||
' showModal: "' || l_show_modal ||'",'|| l_crlf ||
' dialogTitle: "' || l_dialog_title ||'",'|| l_crlf ||
' loadingImageSrc: "' || l_loading_img_src ||'",'|| l_crlf ||
' pluginFilePrefix: "' || p_plugin.file_prefix || '",' || l_crlf ||
' apexImagePrefix: "' || apex_application.g_image_prefix || ',"' || l_crlf ||
apex_javascript.add_onload_code(
p_code => l_onload_code
IF l_action = 'RENDER'
THEN
l_js_function :=
'function(){'|| l_crlf ||
' apex.jQuery(document).clob_load("renderClob", {' || l_crlf ||
' $elmt: this.affectedElements.eq(0),' || l_crlf ||
' ajaxIdentifier: "' || apex_plugin.get_ajax_identifier() || '"' || l_crlf ||
' });'|| l_crlf ||
ELSE
l_js_function :=
'function(){'|| l_crlf ||
' apex.jQuery(document).clob_load("submitClob", {' || l_crlf ||
' $elmt: this.affectedElements.eq(0),' || l_crlf ||
' ajaxIdentifier: "' || apex_plugin.get_ajax_identifier() || '",' || l_crlf ||
' changeOnly: "' || l_change_only || '",' || l_crlf ||
' makeBlocking: "' || l_make_blocking || '"' || l_crlf ||
' });'|| l_crlf ||
END IF;
l_retval.javascript_function := l_js_function;
RETURN l_retval;
END enkitec_clob_load_render;
FUNCTION enkitec_clob_load_ajax (
p_dynamic_action IN APEX_PLUGIN.T_DYNAMIC_ACTION,
p_plugin IN APEX_PLUGIN.T_PLUGIN
RETURN APEX_PLUGIN.T_DYNAMIC_ACTION_AJAX_RESULT
IS
l_retval APEX_PLUGIN.T_DYNAMIC_ACTION_AJAX_RESULT;
l_ajax_function VARCHAR2(32767) := apex_application.g_x01;
l_source VARCHAR2(20) := NVL(p_dynamic_action.attribute_02, 'COLLECTION');
l_render_collection_name VARCHAR2(255) := p_dynamic_action.attribute_03;
l_query VARCHAR2(32767) := p_dynamic_action.attribute_04;
l_submit_collection_name VARCHAR2(255) := p_dynamic_action.attribute_05;
l_column_value_list APEX_PLUGIN_UTIL.T_COLUMN_VALUE_LIST2;
l_clob_text CLOB := EMPTY_CLOB();
l_token VARCHAR2(32000);
l_chunk_size NUMBER := 4000;
BEGIN
IF l_ajax_function = 'RENDER_CLOB'
THEN
IF l_source = 'COLLECTION'
THEN
IF apex_collection.collection_exists(l_render_collection_name)
THEN
SELECT clob001
INTO l_clob_text
FROM apex_collections
WHERE collection_name = l_render_collection_name
AND seq_id = 1;
END IF;
ELSE --must be SQL_QUERY
BEGIN
l_column_value_list := apex_plugin_util.get_data2(
p_sql_statement => l_query,
p_min_columns => 1,
p_max_columns => 1,
p_component_name => p_dynamic_action.action,
p_first_row => 1,
p_max_rows => 1
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
END;
IF l_column_value_list.exists(1)
AND l_column_value_list(1).value_list.exists(1)
THEN
l_clob_text := l_column_value_list(1).value_list(1).clob_value;
END IF;
END IF;
FOR i IN 0 .. FLOOR(LENGTH(l_clob_text)/l_chunk_size)
LOOP
sys.htp.prn(substr(l_clob_text, i * l_chunk_size + 1, l_chunk_size));
END LOOP;
ELSE --must be SUBMIT_CLOB
dbms_lob.createtemporary(l_clob_text, false, dbms_lob.session);
FOR i IN 1..apex_application.g_f01.count
LOOP
l_token := wwv_flow.g_f01(i);
dbms_lob.writeappend(l_clob_text, length(l_token), l_token);
END LOOP;
apex_collection.create_or_truncate_collection(
p_collection_name => l_submit_collection_name
apex_collection.add_member(
p_collection_name => l_submit_collection_name,
p_clob001 => l_clob_text
END IF;
RETURN l_retval;
END enkitec_clob_load_ajax;4. Change this code to this code:
FUNCTION enkitec_clob_load_render (
p_dynamic_action IN APEX_PLUGIN.T_DYNAMIC_ACTION,
p_plugin IN APEX_PLUGIN.T_PLUGIN
RETURN APEX_PLUGIN.T_DYNAMIC_ACTION_RENDER_RESULT
IS
l_retval APEX_PLUGIN.T_DYNAMIC_ACTION_RENDER_RESULT;
l_show_modal VARCHAR2(1) := p_plugin.attribute_01;
l_dialog_title VARCHAR2(4000) := NVL(p_plugin.attribute_02, 'Please wait...');
l_loading_img_type VARCHAR2(30) := p_plugin.attribute_03;
l_loading_img_c VARCHAR2(4000) := p_plugin.attribute_04;
l_action VARCHAR2(10) := NVL(p_dynamic_action.attribute_01, 'RENDER');
l_change_only VARCHAR2(1) := NVL(p_dynamic_action.attribute_06, 'Y');
l_make_blocking VARCHAR2(1) := NVL(p_dynamic_action.attribute_07, 'Y');
l_loading_img_src VARCHAR2(32767);
l_crlf VARCHAR2(2) := CHR(13)||CHR(10);
l_js_function VARCHAR2(32767);
l_onload_code VARCHAR2(32767);
BEGIN
IF apex_application.g_debug
THEN
apex_plugin_util.debug_dynamic_action(
p_plugin => p_plugin,
p_dynamic_action => p_dynamic_action
END IF;
IF l_loading_img_type = 'DEFAULT'
THEN
l_loading_img_src := p_plugin.file_prefix || 'enkitec-loading.gif';
ELSE
l_loading_img_src := REPLACE(l_loading_img_c, '#IMAGE_PREFIX#', apex_application.g_image_prefix);
l_loading_img_src := REPLACE(l_loading_img_src, '#PLUGIN_PREFIX#', p_plugin.file_prefix);
END IF;
apex_css.add(
p_css => '.clob-load-dialog .ui-dialog-titlebar-close {display: none;}',
p_key => 'clob-load-hide-modal-close'
apex_javascript.add_library(
p_name => 'enkitec-clob-load.min',
p_directory => p_plugin.file_prefix,
p_version => NULL
l_onload_code :=
'apex.jQuery(document).clob_load({'|| l_crlf ||
' showModal: "' || l_show_modal ||'",'|| l_crlf ||
' dialogTitle: "' || l_dialog_title ||'",'|| l_crlf ||
' loadingImageSrc: "' || l_loading_img_src ||'",'|| l_crlf ||
' pluginFilePrefix: "' || p_plugin.file_prefix || '",' || l_crlf ||
' apexImagePrefix: "' || apex_application.g_image_prefix || ',"' || l_crlf ||
apex_javascript.add_onload_code(
p_code => l_onload_code
IF l_action = 'RENDER'
THEN
l_js_function :=
'function(){'|| l_crlf ||
' apex.jQuery(document).clob_load("renderClob", {' || l_crlf ||
' $elmt: this.affectedElements.eq(0),' || l_crlf ||
' ajaxIdentifier: "' || apex_plugin.get_ajax_identifier() || '"' || l_crlf ||
' });'|| l_crlf ||
ELSE
l_js_function :=
'function(){'|| l_crlf ||
' apex.jQuery(document).clob_load("submitClob", {' || l_crlf ||
' $elmt: this.affectedElements.eq(0),' || l_crlf ||
' ajaxIdentifier: "' || apex_plugin.get_ajax_identifier() || '",' || l_crlf ||
' changeOnly: "' || l_change_only || '",' || l_crlf ||
' makeBlocking: "' || l_make_blocking || '"' || l_crlf ||
' });'|| l_crlf ||
END IF;
l_retval.javascript_function := l_js_function;
RETURN l_retval;
END enkitec_clob_load_render;
FUNCTION enkitec_clob_load_ajax (
p_dynamic_action IN APEX_PLUGIN.T_DYNAMIC_ACTION,
p_plugin IN APEX_PLUGIN.T_PLUGIN
RETURN APEX_PLUGIN.T_DYNAMIC_ACTION_AJAX_RESULT
IS
l_retval APEX_PLUGIN.T_DYNAMIC_ACTION_AJAX_RESULT;
l_ajax_function VARCHAR2(32767) := apex_application.g_x01;
l_source VARCHAR2(20) := NVL(p_dynamic_action.attribute_02, 'COLLECTION');
l_render_collection_name VARCHAR2(255) := p_dynamic_action.attribute_03;
l_query VARCHAR2(32767) := p_dynamic_action.attribute_04;
l_submit_collection_name VARCHAR2(255) := p_dynamic_action.attribute_05;
l_column_value_list APEX_PLUGIN_UTIL.T_COLUMN_VALUE_LIST2;
l_clob_text CLOB := EMPTY_CLOB();
l_token VARCHAR2(32000);
l_chunk_size NUMBER := 4000;
BEGIN
IF l_ajax_function = 'RENDER_CLOB'
THEN
IF l_source = 'COLLECTION'
THEN
IF apex_collection.collection_exists(l_render_collection_name)
THEN
SELECT clob001
INTO l_clob_text
FROM apex_collections
WHERE collection_name = l_render_collection_name
AND seq_id = 1;
END IF;
ELSE --must be SQL_QUERY
BEGIN
l_column_value_list := apex_plugin_util.get_data2(
p_sql_statement => l_query,
p_min_columns => 1,
p_max_columns => 1,
p_component_name => p_dynamic_action.action,
p_first_row => 1,
p_max_rows => 1
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
END;
IF l_column_value_list.exists(1)
AND l_column_value_list(1).value_list.exists(1)
THEN
l_clob_text := l_column_value_list(1).value_list(1).clob_value;
END IF;
END IF;
FOR i IN 0 .. FLOOR(NVL(LENGTH(l_clob_text)/l_chunk_size,0))
LOOP
sys.htp.prn(substr(l_clob_text, i * l_chunk_size + 1, l_chunk_size));
END LOOP;
ELSE --must be SUBMIT_CLOB
dbms_lob.createtemporary(l_clob_text, false, dbms_lob.session);
FOR i IN 1..apex_application.g_f01.count
LOOP
l_token := wwv_flow.g_f01(i);
if NVL(length(l_token),0) > 0 Then
dbms_lob.writeappend(l_clob_text, length(l_token), l_token);
end if;
END LOOP;
apex_collection.create_or_truncate_collection(
p_collection_name => l_submit_collection_name
apex_collection.add_member(
p_collection_name => l_submit_collection_name,
p_clob001 => l_clob_text
END IF;
RETURN l_retval;
END enkitec_clob_load_ajax;5. As you see only 2 places of plugin had to be fixed, when you compare previous 2 steps:
FOR i IN 0 .. FLOOR(LENGTH(l_clob_text)/l_chunk_size)
LOOP
sys.htp.prn(substr(l_clob_text, i * l_chunk_size + 1, l_chunk_size));
END LOOP;-->
FOR i IN 0 .. FLOOR(NVL(LENGTH(l_clob_text)/l_chunk_size,0))
LOOP
sys.htp.prn(substr(l_clob_text, i * l_chunk_size + 1, l_chunk_size));
END LOOP;And
FOR i IN 1..apex_application.g_f01.count
LOOP
l_token := wwv_flow.g_f01(i);
dbms_lob.writeappend(l_clob_text, length(l_token), l_token);
END LOOP;-->
FOR i IN 1..apex_application.g_f01.count
LOOP
l_token := wwv_flow.g_f01(i);
if NVL(length(l_token),0) > 0 Then
dbms_lob.writeappend(l_clob_text, length(l_token), l_token);
end if;
END LOOP;This way seems to be best way to handle APEX CLOBS today, using that plugin, and a little fix. -
For years I was happily plugging in my Palm Treo Pro, and having my contacts and calendar synch with my PC, WITHOUT the need for that information to be stored on the cloud, where anyone could get at it. When that died recently, I bought a used Windows 7
phone.
So far, it sucks. And it's not the phone that's the problem.
My main issue is that I have diligently exported my (over 5000) contacts from Outlook as a CSV file, and went to import them into Windows Live, only to discover that there's a 500KB limit. That's somewhere around 500 contacts.
ARE YOU SERIOUS?!? You really need me to set up 10 different files, to import stuff onto the cloud?
Please tell me there is a way around this limit, or (better yet) a way to synch directly with my PC, so I can avoid this whole Windows Live disaster?? I want to use Outlook. It's a Microsoft product!
Please help!
DebHi,
I'm not sure about the Microsoft Account Contact limit, for this issue, you may post the question to Microsoft Community:
http://answers.microsoft.com/en-us/outlook_com
If you still have the contacts in your Outlook Client, I suggest you setup the Microsoft Account(Windows Live) in Outlook via Exchange ActiveSync, then move the contacts to the contacts folder of the Microsoft Account, let it sync, then all will be done,
you don't have to export and import the .csv file any more.
How to configure Outlook to connect to an outlook.com email account
http://support.microsoft.com/kb/2735989
Regards,
Melon Chen
TechNet Community Support -
Hypothetical question: Let's suppose for example I've got a 3750 switch stack in a data center with over 300 VLANs defined on the 3750 stack, and that stack is also my VTP domain server. I wish to connect a small compact 2960C switch (which has a max limit of 255 VLIDs) as a VTP client to the 3750 stack's VTP domain and have the port at each end of this uplink connection set up to be an 802.1q trunk, but limit the VLIDs trunked to the 2960 to just a small handful (let's say just 3 or 4 vlans) via for example something like "switchport trunk allowed vlan 1,2,11,18" on the uplink port of the 2960C switch. Will the mere fact that there are hundreds of VLIDs present in the vlan configs on the 3750 stack confuse the little 2960C switch's max 255 vlans limits? Or will the 2960C with its "Lan Base" software happily show all 300+ vlans present in the parent switch stack in a "show vlan" command but simply only let you activate up to the 255 limit locally on that switch?
Normally I'd just use a 3560C switch with IP Base software for this purpose and not worry about any vlan max limit, but we're having to penny-pinch the project and save a few hundred dollars on this compact switch purchase and I've never used the 2960 family before. The small compact switch will be used to host a non-Cisco, 3rd party wireless LAN controller with several APs that will have a handful of different SSIDS, each on a separate vlan, and will not be located in the data center, but in another building connected by a fiberoptic link that will carry the "trunk".
EDIT: I found an old discussion thread where someone else was faced with a similar scenario, and he discovered that even with using "switchport trunk allowed..." and "switchport trunk pruning..." commands on the interfaces at both ends of the link, that the 2960 switch would still fall out of VTP client mode into transparent mode, which make you lose the benefit of having centralized management of a VTP domain. Seems the VTP protocol will always publish the full list of vlans from the server and this blows the mind of the small switches which drop into VTP transparent mode because they cannot handle all that many spanning tree sessions. Looks like the 2960 simply cannot be used in a high-vlan-density network if you wish to preserve central VTP domain management features. Rats.The house network machine can browse and playback/stream video fine, however at the same time the machine on the wireless shows significant slowdown when browsing the web.
The issue is defiantly on the wireless side, If i plug a machine directly into the switch and assign it a static ip, i do not get slowdown, so this is happening before it reaches the poe switch.
So many factors affect the way to stream data up and down wireless. Sure, I have seen >40 clients on 802.11a AND 802.11b radio of a single 1140 AP. But this is not good. Why? Because wireless is a very "noisy" environment. When one talks, everyone else has to stop, listen and waits for their turn. The > 80 wireless clients connected to the 1140 AP had a detected maximum speed of 11 Mbps and they couldn't get any higher than that. They couldn't get any lower than 11 Mbps because I've disabled lower data rates.
You said you hard-code the channels to 1, 6 and 11 but what is the co-channel interferrence like in your wireless environment? -
Can you limit the list of AirPlay devices seen on the iPad if multiple devices exist?
We are setting up a school to use iPads, Apple Tvs and Projectors in classrooms.
- Teachers are using iPads in classrooms and we are setting up wireless projection using AirPlay.
- Each classroom has an Airport Express with a unique WiFi name.
- Each classroom has a projector with an Apple TV mounted on it and each Apple TV has a unique AirPlay name.
- An iPad and the AppleTV are the only two devices on each classroom’s wifi.
- When a teacher wants to mirror iPad to the projector, we thought they would just see their own AppleTv (projector) but, I think because the underlying school network is the same in each classroom, the teacher sees every device in the school.
Question: If you have multiple AirPlay devices on the same network, can you limit the list that one sees on an iPad?
And/or: Is there a way to set up the wifi differently so the teacher is not presented with a huge list of devices?I wish teachers like you would leave technology you don't understand alone. The fact you were allowed to plug-in "consumer grade" access points into a enterprise network says a lot about your lack of knowledge; next you want to turn all of these low end access points into routers!? Your going configure a unique SSID on every AP setup each device to only connect to that network? Do you have any consent of wireless networks? Management?
It's teachers like you that bring down a network. Then you insult the very IT staff that work in a very thankless position in which most of their interaction occurs when something doesn't work. -
Authentication Plug-ins for active directory Multiple Domains(oidspad2.sh)
hi ,
i have use note 294791.1 from metalink to try link to active directory i have 2 one is staff and another is student
i first ran oidspadi.sh to create plugin for staff it works then i edit the 2 script to oidspad2.pls and oidspad2.sh with the require changes inside the files then i ran it it work but now the problem is the first ad now cant work this is my changes below
FOR oidspad2.pls
Rem
Rem $Header: oidspada.pls 02-aug-2004.04:45:11 saroy Exp $
Rem
Rem oidspads.pls
Rem
Rem Copyright (c) 2002, 2004, Oracle. All rights reserved.
Rem
Rem NAME
Rem oidspada.pls - 9.0.4 OID Password Active Directory
Rem External Authentication Plug-in
Rem
Rem
Rem NOTES
Rem <other useful comments, qualifications, etc.>
Rem
Rem MODIFIED (MM/DD/YY)
Rem saroy 08/02/04 - Fix for bug 3807482
Rem qdinh 01/27/04 - bug 3374115
Rem dlin 01/08/04 - pingan perf
Rem dlin 08/22/03 - 3111770 bug fix
Rem dlin 08/27/03 - change the way to get name
Rem dlin 08/13/03 - bug 2962082 fix
Rem dlin 02/21/03 - plug-in install changes
Rem dlin 02/13/03 - dlin_bug-2625027
Rem dlin 02/05/03 - fix ssl & failover
Rem dlin 01/31/03 - dlin_adextauth1
Rem dlin 01/30/03 - Created
Rem
SET echo off;
SET serveroutput off;
SET feedback off;
SET verify off;
CREATE OR REPLACE PACKAGE OIDADPSW2 AS
PROCEDURE when_bind_replace (ldapplugincontext IN ODS.plugincontext,
result OUT INTEGER,
dn IN VARCHAR2,
passwd IN VARCHAR2,
rc OUT INTEGER,
errormsg OUT VARCHAR2
PROCEDURE when_compare_replace (ldapplugincontext IN ODS.plugincontext,
result OUT INTEGER,
dn IN VARCHAR2,
attrname IN VARCHAR2,
attrval IN VARCHAR2,
rc OUT INTEGER,
errormsg OUT VARCHAR2
AD_HANDLE DBMS_LDAP.session DEFAULT NULL;
END OIDADPSW2;
SHOW ERROR
CREATE OR REPLACE PACKAGE BODY OIDADPSW2 AS
SUBTYPE LDAP_SESSION IS RAW(32);
SUBTYPE LDAP_MESSAGE IS RAW(32);
SUBTYPE LDAP_BER_ELEMENT IS RAW(32);
SUBTYPE ATTRLIST IS DBMS_LDAP.STRING_COLLECTION;
SUBTYPE MOD_ARRAY IS RAW(32);
SUBTYPE BERLIST IS DBMS_LDAP.BERVAL_COLLECTION;
PROCEDURE when_bind_replace (ldapplugincontext IN ODS.plugincontext,
result OUT INTEGER,
dn IN VARCHAR2,
passwd IN VARCHAR2,
rc OUT INTEGER,
errormsg OUT VARCHAR2
IS
retval pls_integer;
lresult BOOLEAN;
my_session DBMS_LDAP.session;
my_session1 DBMS_LDAP.session;
tmp_session DBMS_LDAP.session;
adupname VARCHAR2(1024) DEFAULT NULL;
BEGIN
plg_debug( '=== Begin when_bind_replace()');
DBMS_LDAP.USE_EXCEPTION := FALSE;
result := 49;
adupname := LDAP_PLUGIN.get_adupname(ldapplugincontext);
IF (adupname IS NULL) THEN
result := 1;
plg_debug('Can not get ADUserPrincipalName');
rc := DBMS_LDAP.SUCCESS;
errormsg := 'Exception in when_bind_replace: Can not get ADUserPrincipalName';
plg_debug( '=== End when_bind_replace() ===');
RETURN;
END IF;
plg_debug( 'Go to AD for authentication');
-- externally authenticate user
IF ('&1' = 'n') THEN
IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
my_session := DBMS_LDAP.init('&2', &3);
OIDADPSW2.AD_HANDLE := my_session;
ELSE
my_session := OIDADPSW2.AD_HANDLE;
END IF;
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
retval := DBMS_LDAP.simple_bind_s(my_session, adupname, passwd);
plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
-- Retry logic should be invoked only
-- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
-- Should free the old session if retry logic kept failing
-- to cause the number of outstanding sessions exceeding the
-- limit session number
IF (retval = 52 OR retval = 53 OR retval = 81) THEN
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
my_session1 := DBMS_LDAP.init('&4', &5);
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
tmp_session := my_session1;
retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, passwd);
plg_debug( 'simple_bind_res again: ' || TO_CHAR(retval));
IF (retval != 52 AND retval != 53 AND retval != 81) THEN
OIDADPSW2.AD_HANDLE := tmp_session;
ELSE
retval := DBMS_LDAP.unbind_s(tmp_session);
plg_debug( 'unbind_res result ' || TO_CHAR(retval));
END IF;
END IF;
ELSE
-- SSL bind
IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
my_session := DBMS_LDAP.init('&6', &7);
plg_debug( 'ldap_session initialized: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
retval := DBMS_LDAP.open_ssl(my_session,
'file:' || '&8', '&9', 2);
IF (retval != 0) THEN
plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
result := 82;
RETURN;
END IF;
plg_debug( 'open_ssl: ' || TO_CHAR(retval));
OIDADPSW2.AD_HANDLE := my_session;
ELSE
my_session := OIDADPSW2.AD_HANDLE;
END IF;
retval := DBMS_LDAP.simple_bind_s(my_session, adupname, passwd);
plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
-- Retry logic should be invoked only
-- when retval = LDAP_UNWILLING_TO_PERFORM
-- or LDAP_UNAVAILABLE
IF (retval = 52 OR retval = 53 OR retval = 81) THEN
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
my_session1 := DBMS_LDAP.init('&10', &11);
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
tmp_session := my_session1;
retval := DBMS_LDAP.open_ssl(my_session1,
'file:' || '&12', '&13', 2);
IF (retval != 0) THEN
plg_debug( 'retry open_ssl failed error: ' || TO_CHAR(retval));
retval := DBMS_LDAP.unbind_s(my_session1);
plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
result := 82;
RETURN;
END IF;
plg_debug( 'retry open_ssl: ' || TO_CHAR(retval));
retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, passwd);
plg_debug( 'simple_bind_res: again ' || TO_CHAR(retval));
IF (retval != 52 AND retval != 53 AND retval != 81) THEN
OIDADPSW2.AD_HANDLE := tmp_session;
ELSE
retval := DBMS_LDAP.unbind_s(tmp_session);
plg_debug( 'unbind_res Returns ' || TO_CHAR(retval));
END IF;
END IF;
END IF;
-- for failover to connect to the secondary server
IF ('&14' = 'y' AND retval != 0) THEN
IF ('&15' = 'n') THEN
IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
my_session := DBMS_LDAP.init('&16', &17);
OIDADPSW2.AD_HANDLE := my_session;
ELSE
my_session := OIDADPSW2.AD_HANDLE;
END IF;
plg_debug( 'ldap_session initialized: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
retval := DBMS_LDAP.simple_bind_s(my_session, adupname, passwd);
plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
IF (retval = 52 OR retval = 53 OR retval = 81) THEN
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
my_session1 := DBMS_LDAP.init('&18', &19);
plg_debug( 'retry ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
tmp_session := my_session1;
retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, passwd);
plg_debug( 'retry simple_bind_res again: ' || TO_CHAR(retval));
IF (retval != 52 AND retval != 53 AND retval != 81) THEN
OIDADPSW2.AD_HANDLE := tmp_session;
ELSE
retval := DBMS_LDAP.unbind_s(tmp_session);
plg_debug( 'unbind_res Returns ' || TO_CHAR(retval));
END IF;
END IF;
ELSE
IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
my_session := DBMS_LDAP.init('&20', &21);
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
retval := DBMS_LDAP.open_ssl(my_session,
'file:' || '&22', '&23', 2);
IF (retval != 0) THEN
plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
result := 82;
RETURN;
END IF;
plg_debug( 'open_ssl: ' || TO_CHAR(retval));
OIDADPSW2.AD_HANDLE := my_session;
ELSE
my_session := OIDADPSW2.AD_HANDLE;
END IF;
retval := DBMS_LDAP.simple_bind_s(my_session, adupname, passwd);
plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
-- Retry logic should be invoked only
-- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
IF (retval = 52 OR retval = 53 OR retval = 81) THEN
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
my_session1 := DBMS_LDAP.init('&24', &25);
plg_debug( 'retry ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
tmp_session := my_session1;
retval := DBMS_LDAP.open_ssl(my_session1,
'file:' || '&26', '&27', 2);
IF (retval != 0) THEN
plg_debug( 'retry open_ssl failed error: ' || TO_CHAR(retval));
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
result := 82;
RETURN;
END IF;
plg_debug( 'retry open_ssl: ' || TO_CHAR(retval));
retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, passwd);
plg_debug( 'simple_bind_res: again ' || TO_CHAR(retval));
IF (retval != 52 AND retval != 53 AND retval != 81) THEN
OIDADPSW2.AD_HANDLE := tmp_session;
ELSE
retval := DBMS_LDAP.unbind_s(tmp_session);
plg_debug( 'unbind_res result ' || TO_CHAR(retval));
END IF;
END IF;
END IF;
END IF;
IF (retval = 0) THEN
result := 0;
plg_debug('AD auth return TRUE');
ELSE
result := retval;
plg_debug('AD auth return FALSE or ERROR');
END IF;
-- retval := DBMS_LDAP.unbind_s(my_session);
-- plg_debug( 'unbind_res Returns ' || TO_CHAR(retval));
rc := DBMS_LDAP.SUCCESS;
errormsg := 'No error msg.';
plg_debug( '=== End when_bind_replace() ===');
EXCEPTION
WHEN OTHERS THEN
rc := DBMS_LDAP.OPERATIONS_ERROR;
retval := DBMS_LDAP.unbind_s(OIDADPSW2.AD_HANDLE);
OIDADPSW2.AD_HANDLE := NULL;
plg_debug( ' exception unbind_res returns ' || TO_CHAR(retval));
errormsg := 'Exception: when_bind_replace plugin';
plg_debug( 'Exception in when_bind_replace(). Error code is ' ||
TO_CHAR(sqlcode));
plg_debug( ' ' || Sqlerrm);
END;
PROCEDURE when_compare_replace (ldapplugincontext IN ODS.plugincontext,
result OUT INTEGER,
dn IN VARCHAR2,
attrname IN VARCHAR2,
attrval IN VARCHAR2,
rc OUT INTEGER,
errormsg OUT VARCHAR2
IS
retval pls_integer;
lresult BOOLEAN;
my_session DBMS_LDAP.session;
my_session1 DBMS_LDAP.session;
tmp_session DBMS_LDAP.session;
adupname VARCHAR2(1024) DEFAULT NULL;
BEGIN
plg_debug( '=== Begin when_compare_replace()');
result := DBMS_LDAP.COMPARE_FALSE;
DBMS_LDAP.USE_EXCEPTION := FALSE;
adupname := LDAP_PLUGIN.get_adupname(ldapplugincontext);
IF (adupname IS NULL) THEN
result := DBMS_LDAP.COMPARE_FALSE;
plg_debug('Can not get ADuserPrincipalName');
rc := DBMS_LDAP.SUCCESS;
errormsg := 'Exception in when_compare_replace: Can not get ADUserPrincipalName';
plg_debug( '=== End when_compare_replace() ===');
RETURN;
END IF;
-- externally authenticate user
IF ('&28' = 'n') THEN
IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
my_session := DBMS_LDAP.init('&29', &30);
OIDADPSW2.AD_HANDLE := my_session;
ELSE
my_session := OIDADPSW2.AD_HANDLE;
END IF;
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
retval := DBMS_LDAP.simple_bind_s(my_session, adupname, attrval);
plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
-- Retry logic should be invoked only
-- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
IF (retval = 52 OR retval = 53 OR retval = 81) THEN
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
my_session1 := DBMS_LDAP.init('&31', &32);
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
tmp_session := my_session1;
retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, attrval);
plg_debug( 'simple_bind_res again: ' || TO_CHAR(retval));
IF (retval != 52 AND retval != 53 AND retval != 81) THEN
OIDADPSW2.AD_HANDLE := tmp_session;
ELSE
retval := DBMS_LDAP.unbind_s(tmp_session);
plg_debug( 'unbind_res result ' || TO_CHAR(retval));
END IF;
END IF;
ELSE
IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
my_session := DBMS_LDAP.init('&33', &34);
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
retval := DBMS_LDAP.open_ssl(my_session,
'file:' || '&35', '&36', 2);
IF (retval != 0) THEN
plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
result := 82;
RETURN;
END IF;
plg_debug( 'open_ssl: ' || TO_CHAR(retval));
OIDADPSW2.AD_HANDLE := my_session;
ELSE
my_session := OIDADPSW2.AD_HANDLE;
END IF;
retval := DBMS_LDAP.simple_bind_s(my_session, adupname, attrval);
plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
-- Retry logic should be invoked only
-- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
IF (retval = 52 OR retval = 53 OR retval = 81) THEN
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
my_session1 := DBMS_LDAP.init('&37', &38);
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
tmp_session := my_session1;
retval := DBMS_LDAP.open_ssl(my_session1,
'file:' || '&39', '&40', 2);
IF (retval != 0) THEN
plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
result := 82;
RETURN;
END IF;
plg_debug( 'open_ssl: ' || TO_CHAR(retval));
retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, attrval);
plg_debug( 'simple_bind_res: again ' || TO_CHAR(retval));
IF (retval != 52 AND retval != 53 AND retval != 81) THEN
OIDADPSW2.AD_HANDLE := tmp_session;
ELSE
retval := DBMS_LDAP.unbind_s(tmp_session);
plg_debug( 'unbind_res result ' || TO_CHAR(retval));
END IF;
END IF;
END IF;
-- for failover to connect to the secondary AD
IF ('&41' = 'y' AND retval != 0) THEN
IF ('&42' = 'n') THEN
IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
my_session := DBMS_LDAP.init('&43', &44);
OIDADPSW2.AD_HANDLE := my_session;
ELSE
my_session := OIDADPSW2.AD_HANDLE;
END IF;
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
retval := DBMS_LDAP.simple_bind_s(my_session, adupname, attrval);
plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
-- Retry logic should be invoked only
-- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
IF (retval = 52 OR retval = 53 OR retval = 81) THEN
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
my_session1 := DBMS_LDAP.init('&45', &46);
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
tmp_session := my_session1;
retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, attrval);
plg_debug( 'simple_bind_res again: ' || TO_CHAR(retval));
IF (retval != 52 AND retval != 53 AND retval != 81) THEN
OIDADPSW2.AD_HANDLE := tmp_session;
ELSE
retval := DBMS_LDAP.unbind_s(tmp_session);
plg_debug( 'unbind_res result ' || TO_CHAR(retval));
END IF;
END IF;
ELSE
IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
my_session := DBMS_LDAP.init('&47', &48);
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
retval := DBMS_LDAP.open_ssl(my_session,
'file:' || '&49', '&50', 2);
IF (retval != 0) THEN
plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
result := 82;
RETURN;
END IF;
plg_debug( 'open_ssl: ' || TO_CHAR(retval));
OIDADPSW2.AD_HANDLE := my_session;
ELSE
my_session := OIDADPSW2.AD_HANDLE;
END IF;
retval := DBMS_LDAP.simple_bind_s(my_session, adupname, attrval);
plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
-- Retry logic should be invoked only
-- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
IF (retval = 52 OR retval = 53 OR retval = 81) THEN
retval := DBMS_LDAP.unbind_s(my_session);
plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
my_session1 := DBMS_LDAP.init('&51', &52);
plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
tmp_session := my_session1;
retval := DBMS_LDAP.open_ssl(my_session1,
'file:' || '&53', '&54', 2);
IF (retval != 0) THEN
plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
retval := DBMS_LDAP.unbind_s(my_session1);
plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
result := 82;
RETURN;
END IF;
plg_debug( 'open_ssl: ' || TO_CHAR(retval));
retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, attrval);
plg_debug( 'simple_bind_res: again ' || TO_CHAR(retval));
IF (retval != 52 AND retval != 53 AND retval != 81) THEN
OIDADPSW2.AD_HANDLE := tmp_session;
ELSE
retval := DBMS_LDAP.unbind_s(tmp_session);
plg_debug( 'unbind_res result ' || TO_CHAR(retval));
END IF;
END IF;
END IF;
END IF;
IF (retval = 0) THEN
result := DBMS_LDAP.COMPARE_TRUE;
plg_debug('AD auth return TRUE');
ELSE
result := DBMS_LDAP.COMPARE_FALSE;
plg_debug('AD auth return FALSE or ERROR');
END IF;
-- retval := DBMS_LDAP.unbind_s(my_session);
-- plg_debug( 'unbind_res Returns ' || TO_CHAR(retval));
rc := DBMS_LDAP.SUCCESS;
errormsg := 'No error msg.';
plg_debug( '=== End when_compare_replace() ===');
EXCEPTION
WHEN OTHERS THEN
rc := DBMS_LDAP.OPERATIONS_ERROR;
errormsg := 'Exception: when_compare_replace plugin';
plg_debug( 'Exception in when_compare_replace(). Error code is ' ||
TO_CHAR(sqlcode));
plg_debug( ' ' || Sqlerrm);
retval := DBMS_LDAP.unbind_s(OIDADPSW2.AD_HANDLE);
OIDADPSW2.AD_HANDLE := NULL;
END;
END OIDADPSW2;
SHOW ERRORS
EXIT;
-- usessl, adhost, adport, adhost, adsslport, walletloc, walletpwd
-- isfailover, isfailoverssl, sechost, secport, sechost, secsslport
-- secwalletloc, secwalletpwd
-- usessl, adhost, adport, adhost, adsslport, walletloc, walletpwd
-- isfailover, isfailoverssl, sechost, secport, sechost, secsslport
-- secwalletloc, secwalletpwd
FOR oidspadi.sh
#!/bin/sh
# $Header: oidspadi.sh 13-may-2005.13:48:51 saroy Exp $
# oidspadi.sh
# Copyright (c) 2002, 2005, Oracle. All rights reserved.
# NAME
# oidspadi.sh - AD external authentication plug-in install
# DESCRIPTION
# <short description of component this file declares/defines>
# NOTES
# <other useful comments, qualifications, etc.>
# MODIFIED (MM/DD/YY)
# saroy 05/13/05 - Fix for bug 4233817
# saroy 02/18/05 - Fix for bug 4054414
# saroy 11/02/04 - Fix for bug 3980370
# qdinh 01/19/04 - bug 3374115
# dlin 07/10/03 - turn off debug
# dlin 02/21/03 - plug-in install changes
# dlin 02/13/03 - dlin_bug-2625027
# dlin 07/22/02 - Creation
ADHOST="A"
ADPORT="1"
ADSSLPORT="1"
WALLETLOC="A"
WALLETPWD="A"
WALLETPWD2="A"
CONNECT="A"
ODSPWD="A"
ODSPWD2="A"
OIDHOST="A"
OIDPORT="1"
ORCLADMINPWD="A"
ORCLADMINPWD2="A"
PRGDN="A"
SCUSB="A"
EP="A"
ISSSL="n"
ISFAILOVER="n"
ISFAILOVERSSL="n"
SECADHOST="A"
SECADPORT="1"
SECADSSLPORT="1"
SECWALLETLOC="A"
SECWALLETPWD="A"
SECWALLETPWD2="A"
clear
echo "---------------------------------------------"
echo " OID Active Directory Plug-in Configuration"
echo "---------------------------------------------"
echo " "
echo "Please make sure Database and OID are up and running."
echo " "
LDAP_DIR=${ORACLE_HOME}/ldap
LDAP_LOG=${LDAP_DIR}/log
## ORACLE_HOME
if [ -z $ORACLE_HOME ] ; then
echo " ORACLE_HOME must be set for this installation script"
exit 0
fi
# gather required information
if [ ${ADHOST} = "A" ] ; then
printf "Please enter Active Directory host name: "
read ADHOST
fi
## active directory host name is required
if [ "${ADHOST}" = "" ]
then
echo "Active Directory host name is required";
exit 1;
fi
printf "Do you want to use SSL to connect to Active Directory? (y/n) "
read ISSSL
if [ "${ISSSL}" = "n" ]
then
if [ ${ADPORT} = "1" ] ; then
printf "Please enter Active Directory port number [389]: "
read ADPORT
if [ "${ADPORT}" = "" ]
then
ADPORT="389"
fi
fi
fi
if [ "${ISSSL}" = "y" ]
then
if [ ${ADSSLPORT} = "1" ] ; then
printf "Please enter Active Directory SSL port number [636]: "
read ADSSLPORT
if [ "${ADSSLPORT}" = "" ]
then
ADSSLPORT="636"
fi
fi
if [ ${WALLETLOC} = "A" ] ; then
echo " "
printf "Please enter Oracle wallet location: "
read WALLETLOC
fi
## wallet location is required
if [ "${WALLETLOC}" = "" ]
then
echo "Oracle wallet location is required";
exit 1;
fi
if [ ${WALLETPWD} = "A" ] ; then
printf "Please enter Oracle wallet password: "
stty -echo ; read WALLETPWD ; stty echo ; echo
fi
if [ "${WALLETPWD}" = "" ]
then
echo "Oracle wallet password is required";
exit 1;
fi
if [ ${WALLETPWD2} = "A" ] ; then
printf "Please enter confirmed Oracle wallet password: "
stty -echo ; read WALLETPWD2 ; stty echo ; echo
fi
if [ "${WALLETPWD}" != "${WALLETPWD2}" ]
then
echo "The input passwords are not matched";
exit 1;
fi
fi
if [ ${CONNECT} = "A" ] ; then
echo " "
printf "Please enter DB connect string: "
read CONNECT
fi
if [ ${ODSPWD} = "A" ] ; then
printf "Please enter ODS password: "
stty -echo ; read ODSPWD ; stty echo ; echo
fi
## password is required
if [ "${ODSPWD}" = "" ]
then
echo "ODS password is required";
exit 1;
fi
if [ ${ODSPWD2} = "A" ] ; then
printf "Please enter confirmed ODS password: "
stty -echo ; read ODSPWD2 ; stty echo ; echo
fi
if [ "${ODSPWD}" != "${ODSPWD2}" ]
then
echo "The input passwords are not matched";
exit 1;
fi
if [ "${CONNECT}" = "" ]
then
CMDNAME="$ORACLE_HOME/bin/sqlplus -s ods/${ODSPWD} "
else
CMDNAME="$ORACLE_HOME/bin/sqlplus -s ods/${ODSPWD}@${CONNECT} "
fi
# Check if ODS password and connect string is correct
${ORACLE_HOME}/bin/sqlplus -L ods/${ODSPWD}@${CONNECT} << END 1>/dev/null 2>/dev/null
exit;
END
if [ $? -ne 0 ]; then
echo "Incorrect connect string or ODS password specified"
exit 1;
fi
if [ ${OIDHOST} = "A" ] ; then
echo " "
printf "Please enter OID host name: "
read OIDHOST
fi
## oid host is required
if [ "${OIDHOST}" = "" ]
then
echo "OID host name is required";
exit 1;
fi
if [ ${OIDPORT} = "1" ] ; then
printf "Please enter OID port number [389]: "
read OIDPORT
if [ "${OIDPORT}" = "" ]
then
OIDPORT="389"
fi
fi
# Check if OID host and port is correct
${ORACLE_HOME}/bin/ldapbind -h ${OIDHOST} -p ${OIDPORT} 1>/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
echo "Incorrect OID host or port specified"
exit 1;
fi
if [ ${ORCLADMINPWD} = "A" ] ; then
printf "Please enter orcladmin password: "
stty -echo ; read ORCLADMINPWD ; stty echo ; echo
fi
if [ "${ORCLADMINPWD}" = "" ]
then
echo "orcladmin password is required";
exit 1;
fi
if [ ${ORCLADMINPWD2} = "A" ] ; then
printf "Please enter confirmed orcladmin password: "
stty -echo ; read ORCLADMINPWD2 ; stty echo ; echo
fi
if [ "${ORCLADMINPWD}" != "${ORCLADMINPWD2}" ]
then
echo "The input passwords are not matched";
exit 1;
fi
# Check if orcladmin password is correct
${ORACLE_HOME}/bin/ldapbind -h ${OIDHOST} -p ${OIDPORT} -D 'cn=orcladmin' -w ${ORCLADMINPWD} 1>/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
echo "Incorrect orcladmin password specified"
exit 1;
fi
echo " "
if [ ${SCUSB} = "A" ] ; then
printf "Please enter the subscriber common user search base [orclcommonusersearchbase]: "
read SCUSB
if [ "${SCUSB}" = "" ]
then
SCUSB=`${ORACLE_HOME}/bin/ldapsearch -h ${OIDHOST} -p ${OIDPORT} -D 'cn=orcladmin' -w ${ORCLADMINPWD} -s base -b 'cn=common,cn=products,cn=oraclecontext' -L 'objectclass=*' orclcommonusersearchbase | head -2 | grep -v 'dn:' | awk '{printf $2}'`
fi
fi
if [ ${PRGDN} = "A" ] ; then
printf "Please enter the Plug-in Request Group DN: "
read PRGDN
fi
if [ ${EP} = "A" ] ; then
printf "Please enter the exception entry property [(!(objectclass=orcladuser))]: "
read EP
if [ "${EP}" = "" ]
then
EP='(!(objectclass=orcladuser))'
fi
fi
echo " "
printf "Do you want to setup the backup Active Directory for failover? (y/n) "
read ISFAILOVER
if [ "${ISFAILOVER}" = "y" ]
then
if [ ${SECADHOST} = "A" ] ; then
printf "Please enter the backup Active Directory host name: "
read SECADHOST
if [ "${SECADHOST}" = "" ]
then
echo "Backup Active Directory host name is required";
exit 1;
fi
fi
printf "Do you want to use SSL to connect to the backup Active Directory? (y/n) "
read ISFAILOVERSSL
if [ "${ISFAILOVERSSL}" = "n" ]
then
if [ ${SECADPORT} = "1" ] ; then
printf "Please enter the backup Active Directory port number [389]: "
read SECADPORT
if [ "${SECADPORT}" = "" ]
then
SECADPORT="389"
fi
fi
fi
if [ "${ISFAILOVERSSL}" = "y" ]
then
if [ ${SECADSSLPORT} = "1" ] ; then
printf "Please enter the backup Active Directory SSL port number [636]: "
read SECADSSLPORT
if [ "${SECADSSLPORT}" = "" ]
then
SECADSSLPORT="636"
fi
fi
if [ ${SECWALLETLOC} = "A" ] ; then
echo " "
printf "Please enter Oracle wallet location: "
read SECWALLETLOC
fi
## wallet location is required
if [ "${SECWALLETLOC}" = "" ]
then
echo "Oracle wallet location is required";
exit 1;
fi
if [ ${SECWALLETPWD} = "A" ] ; then
printf "Please enter Oracle wallet password: "
stty -echo ; read SECWALLETPWD ; stty echo ; echo
fi
if [ "${SECWALLETPWD}" = "" ]
then
echo "Oracle wallet password is required";
exit 1;
fi
if [ ${SECWALLETPWD2} = "A" ] ; then
printf "Please enter confirmed Oracle wallet password: "
stty -echo ; read SECWALLETPWD2 ; stty echo ; echo
fi
if [ "${SECWALLETPWD}" != "${SECWALLETPWD2}" ]
then
echo "The input passwords are not matched";
exit 1;
fi
fi
fi
# install the plug-in PL/SQL packages
echo " "
echo "Installing Plug-in Packages ..."
echo " "
# install plug-in debug tool
cp $ORACLE_HOME/ldap/admin/oidspdsu.pls $LDAP_LOG
chmod +w $LDAP_LOG/oidspdsu.pls
echo "EXIT;" >> $LDAP_LOG/oidspdsu.pls
${CMDNAME} @$LDAP_LOG/oidspdsu.pls
rm $LDAP_LOG/oidspdsu.pls
${CMDNAME} @$ORACLE_HOME/ldap/admin/oidspdof.pls
# install plug-in packages
${CMDNAME} @$ORACLE_HOME/ldap/admin/oidspad2.pls ${ISSSL} ${ADHOST} ${ADPORT} ${ADHOST} ${ADPORT} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ISFAILOVER} ${ISFAILOVERSSL} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${ISSSL} ${ADHOST} ${ADPORT} ${ADHOST} ${ADPORT} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ISFAILOVER} ${ISFAILOVERSSL} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} 2>&1 ; stty echo ; echo
#stty -echo; eval ${CMDNAME} @$ORACLE_HOME/ldap/admin/oidspad2.pls ${ISSSL} ${ADHOST} ${ADPORT} ${ADHOST} ${ADPORT} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ISFAILOVER} ${ISFAILOVERSSL} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${ISSSL} ${ADHOST} ${ADPORT} ${ADHOST} ${ADPORT} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ISFAILOVER} ${ISFAILOVERSSL} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} 2>&1 ; stty echo ; echo
# usessl, adhost, adport, adhost, adsslport, walletloc, walletpwd
# isfailover, isfailoverssl, sechost, secport, sechost, secsslport
# secwalletloc, secwalletpwd
# usessl, adhost, adport, adhost, adsslport, walletloc, walletpwd
# isfailover, isfailoverssl, sechost, secport, sechost, secsslport
# secwalletloc, secwalletpwd
# register the plug-ins
echo " "
echo "Registering Plug-ins ..."
echo " "
$ORACLE_HOME/bin/ldapadd -h ${OIDHOST} -p ${OIDPORT} -D cn=orcladmin -w ${ORCLADMINPWD} << EOF
dn: cn=adwhencompare2,cn=plugin,cn=subconfigsubentry
objectclass:orclPluginConfig
objectclass:top
orclpluginname:OIDADPSW2
orclplugintype:operational
orclplugintiming:when
orclpluginldapoperation:ldapcompare
orclpluginenable:1
orclpluginversion:1.0.1
orclPluginIsReplace:1
cn:adwhencompare2
orclpluginsubscriberdnlist:${SCUSB}
orclpluginattributelist:userpassword
orclpluginrequestgroup:${PRGDN}
orclpluginentryproperties:${EP}
dn: cn=adwhenbind2,cn=plugin,cn=subconfigsubentry
objectclass:orclPluginConfig
objectclass:top
orclpluginname:OIDADPSW2
orclplugintype:operational
orclplugintiming:when
orclpluginldapoperation:ldapbind
orclpluginenable:1
orclpluginversion:1.0.1
orclPluginIsReplace:1
cn:adwhenbind2
orclpluginsubscriberdnlist:${SCUSB}
orclpluginrequestgroup:${PRGDN}
orclpluginentryproperties:${EP}
EOF
cat <<DONE
Done.
DONEHi,
This is a problem that is not made clear in the note. What is probably happening here is that both plugins are being fired when a user logs in. OID will only read the value returned from the final plugin to fire. This can be a problem if the user authenticates correctly against the first plug-in but fails on the second. This is entirely legitimate as this note tells you to configure this way but the OID only observes the final result. The note doesn't tell us this.
Here's an example:
We've two OID User users in different containers: cn=Al is in container cn=usersA,dc=oracle,dc=com and cn=BOB is in container cn=usersB,dc=oracle,dc=com.
We have two plugins: pluginA and PluginB. Installed in that order.
When Al logs in the two plugins fire. pluginA finds Al and returns a true, but then pluginB fires and returns a false undoing the good result. OID only accepts the final answer and so rejects the user. When Bob logins in both plugins fire again but it's the second plugin that returns the answer again. This is true and bob gets in.
There's a couple of ways around this and one of the more effective ways is to associate the plugin with the dn. So in our example, we associate the pluginA to fire only for the dn cn=usersA,dc=oracle,dc=com and pluginB only to fire when a user is in cn=usersB,dc=oracle,dc=com. This gets around the problem of mulitple plugins firing and giving conflicting answers as the appropriate plugin only fires once.
I've used this solution in a realtime environment when connecting and provisioning multiple ADs into one OID and found it to be extremely effective.
Another solution is to associate the plugins with groups.
Both of these options may be configured easily by modifying the plugin properties in ODM. Don't forget to restart OID after you've made the changes.
HTH!
Phil.
If -
Weird...Is there a polyphony limit to Logic?
OK, I'm stumped.
I've just started a new composition. So far I've used only 10 tracks. Each track is using an instance of EXS24. The tracks are, from 1-10, Piano, Bass (arco), Cellos, Violas, Violins, Soft pad, Celeste, Flute, Clarinet, and Harp.
Measures 21-28 are using the harp, clarinet, flute, celeste, pad, violas and cellos. Starting in measure 29, I have the harp drop out completely, and the violins take over the melody, and I've add arco bass.
Here's the strange thing that's happening:
The problem is that everything except the flute cuts out half-way through measure 30! It's weird. It sounds just like it used to when I maxed out my polyphony on a keyboard -- back in the day when I used outboard keyboards . Everything cuts out, even the reverb. Actually, I think the flute cuts out too, but it probably doesn't seem like it because it's in a moving line, so the next note picks up right away. Everything else comes back in on the downbeat of measure 30, when each instrument has to play the next note.
I think the problem is somehow related to the harp -- even though the harp isn't playing in measure 30. If I mute the harp track, measure 30 plays just fine. Or, if I start the track in measure 27 (2 measures before the harp section ends), it'll play fine. But if I play 4 or more measures of the harp section, measure 30 cuts out completely for a second.
I've made sure that I'm never playing more than 3 notes at a time in the harp track, and have even played with the "voices" setting in the EXS24 instance on that track. But no matter how many voices I allocate to the harp (large or small) the effect on measure 30 remains the same. The only thing so far that solves the problem is muting the whole harp track.
BTW, the polyphony requirement isn't very high in measure 30 -- probably only about 12 or 13 notes, although the damper pedal is used on the piano, so that would raise it a bit, but probably no more than 6 or 10 more notes. Certainly I've taxed sequences much harder in times past. But, I thought that MAYBE I've accidentally changed some global parameter that effects what's going on, thereby screwing up measure 30. BTW, this is the only measure in the song that's effected (although the sequence is only 38 measure long at present).
Does this problem sound familiar at all? Or is this just a very bizarre problem that makes no sense to anyone? It certainly isn't making sense to me.
I would greatly appreciate any advice you could give me.
Thank you!
Kevin
Edited to add: BTW, I don't know if the following symptom is helpful or not, but I'm going to add it anyway, just in case it helps explain something.
As I was playing with the "voices" parameter in the EXS24 instance on the harp track, I noticed that even though there is only 3 notes playing at any given time, and no pedal is being used, the "voices used" number keeps going up and up as the sequence plays the harp section. I'm assuming that the "voices used" number doesn't go down because of a long sample length (I'm using the harp that comes with VSL's Opus series).
After the harp section ends in measure 28, the "voices used" starts going down slowly, taking about 3 measures to make it back down to zero.
Does this make sense? I don't know if this is helpful to my problem, or if it's not related at all. But, I thought I'd better include it just in case.Sounds to me like you're experiencing "SIDS", or "sudden instrument dropout syndrome", an endemic problem with certain version of Logic. This was supposedly fixed in 7.2.3 (if memory serves), but it seems like you're running into SIDS nevertheless.
There are other bugaboos with Logic (related to the performance of audio instrument plugs) that you might want to know about. For example, some sampler plugs, including instances of EXS-24 itself will not play back correctly if you initiate playback from a downbeat. It doesn't always happen, but then again, it happens a lot to me....
For example, if you were to play a sequence back from, say, bar 54, beat 1, you might not hear some of the notes (or you'll hear bits and pieces of garbled sound), even if those notes are quantized to the downbeat, or, even if chase notes is enabled. But then, when this occurs, if you were to start from an 8th note before that point, playback is fine! It's an inexplicable and confounding problem that Logic can't play back correctly from a downbeat but will play back if you start playback off the downbeat.
Next, polyphony. Logic does not have a polyphony limit exactly... The the number of plugs that can be handled (both sampler and fx plugs) dependent on your computer's horsepower. Taking into account non-Logic-related system requirements, other programs that might be running in the background, and then Logic and the cumulative needs of your plugs, these things all draw on processor resources. It's entirely possible to use up all available resources if you have too much going on. That's what the various benchmark tests are all about -- how far can you push the computer until it says, "uncle"...
But it doesn't sound like you have a very heavy processor load, and as I said earlier, it sounds to me like you're running into SIDS.
Now...
By chance have you done any capture recording? (this is important, please let me know).
Finally, regarding the polyphony count of EXS while only a few notes are being played... you are on the right track: as long as a sample is playing (even if it's nearly inaudible during the last moments of a long sample's release), it's using a voice. So let's say that you're playing a simple 3-note pattern outlining C major (C, E, G). If you play those notes over and over again, and assuming that you're playing a harp sound with a long release, here's the deal:
The first 3 notes will indeed use 3 voices (CEG). Now you play another C, E, G. If those original 3 voices are still ringing out, you're now using 6 voices. Play C, E, G again. If those original 6 voices are still ringing out, you're now playing 9 voices. And so on.
HTH. (Please let me know if you're using capture recording.)
Message was edited by: iSchwartz -
My PC restarts when I plug in my iPod Nano.
Hi. Can anyone please help? Sometimes when I plug in my iPod Nano my computer re-boots. It doesn't always do a clean re-boot and I have to unplug the Nano and re-set the computer a couple of times. I have seen similar problems on this forum, and no, I am not using Aluria Spyware Eliminator. I use Norton Anti-virus.
Help!Brian, another way of looking at this is: how many devices do you have connected to the USB port (the same one)? I've found through using external storage devices that one port can handle two devices. I had four going at once one time, but the same thing happened, only two would evenually connect.
There's a limit to connections per USB port, I'm just trying to see if you have too many connectins on one port. If so, obviously, if you have other USB ports available, plug the nano into it's own port and see if that "cures" the missing nano. -
Error during creation of application entity for the plug-in.
Hi Experts,
As part of creating Content Database source for SES....
We,
1 Activated the Oracle Internet Directory identity plug-in for the Oracle Content
Database instance.
2) However after activating Identity plug-in for Oracle Internet Directory.... ......... we used the csPlugin.ldif file to create an application entity for the plug-in by running the following command "$ORACLE_HOME/bin/ldapmodify -h oidHost -p OIDPortNumber -D "cn=oracle" -w password -f csPlugin.ldif" ....but in the process executing the above command.... getting the following error(we gave correct login details):
SASL/DIGEST-MD5 authentication started
ldap_sasl_interactive_bind_s: Invalid credentials (49)
How can i resolve this.
I have another query...in the command "$ORACLE_HOME/bin/ldapmodify -h oidHost -p OIDPortNumber -D "cn=oracle" -w password -f csPlugin.ldif" which user name should i specify..... is it "cn=oracle" or "cn=orcladmin"
Thanks
peter.Hi Raford,
Thanks for your reply.
We tried to create Content Database Source with the details we have...
However in this process getting an exception....
11:20:20:778 INFO main
11:20:20:784 INFO main Oracle Secure Enterprise Search, Crawler: Release 10.1.8.2
11:20:20:785 INFO main Copyright © 2006, 2007, Oracle. All rights reserved.
11:20:20:785 INFO main
11:20:20:785 INFO main ================== Crawling settings ==================
11:20:20:785 INFO main Reading configuration file from /mnt/u08/SOADEVIL/seshome/search/data/config/crawler.dat
11:20:20:785 INFO main Agent = Oracle Secure Enterprise Search
11:20:20:807 INFO main User = EQ_TEST
11:20:20:807 INFO main Database connect string = jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=devilrays.appsassociates.com)(PORT=1525))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=Devilses.devilrays.appsassociates.com)))
11:20:20:807 INFO main Source type is User-defined
11:20:20:807 INFO main Source is "BJ_Cont"
11:20:20:807 INFO main Document access control policy is user-defined
11:20:20:808 INFO main Number of crawling threads = 5
11:20:20:808 INFO main Queue table = I1S8
11:20:20:808 INFO main URL table = EQ$URL
11:20:20:808 INFO main Maximum documents to crawl = no limit
11:20:20:808 INFO main Maximum depth to crawl = 2
11:20:20:808 INFO main Document size limit = 10M
11:20:20:808 INFO main Locale of the crawler message is "en_US"
11:20:20:808 INFO main URL exclusion rule = (?i:(?:\.gif)|(?:\.jpg)|(?:\.jar)|(?:\.tif)|(?:\.bmp)|(?:\.war)|(?:\.ear)|(?:\.mpg)|(?:\.wmv)|(?:\.mpeg)|(?:\.scm)|(?:\.iso)|(?:\.dmp)|(?:\.dll)|(?:\.cab)|(?:\.so)|(?:\.avi)|(?:\.wav)|(?:\.mp3)|(?:\.wma)|(?:\.bin)|(?:\.exe)|(?:\.iso)|(?:\.tar)|(?:\.png))$
11:20:20:808 INFO main URL exclusion rule = \?.*(.*\+)\1{3}
11:20:20:812 INFO main Document read timeout threshold = 30 second(s)
11:20:20:812 INFO main Crawler default character set is "8859_1"
11:20:20:812 INFO main Crawler default language is "en"
11:20:20:813 INFO main Auto language detection is on
11:20:20:813 INFO main Auto character set detection is off
11:20:20:813 INFO main Document service pipeline is "Default pipeline"
11:20:20:813 INFO main Verbose mode is on
11:20:20:935 INFO main Caching on: directory = /mnt/u08/SOADEVIL/sesdata/Devilses/cache/I1DS8/, max size = 250, action = SES_TASK
11:20:20:935 INFO main Filtering on: filter path = /mnt/u08/SOADEVIL/seshome/ctx/bin/ctxhx, number of filters = 2
11:20:20:935 INFO main MIME inclusions = text/html text/plain application/pdf application/x-msexcel application/vnd.ms-excel application/ms-excel application/x-mspowerpoint application/vnd.ms-powerpoint application/msword
11:20:20:935 INFO main URL table attributes = url, depth, signature, last_modified, status, url_id, access_url, enqueue_status, TITLE, DESCRIPTION, AUTHOR, CRAWLED_DATE, CONTENT_LENGTH, CONTENT_TYPE, LANG, CACHE_FILE_PATH, DS_ID
11:20:20:936 INFO main SQL callback statement is "begin eq_crw.crawler_callback(?,?,?,?); exception when eq_def.search_error then eq_err.raise; when others then eq_err.raise; end;"
11:20:20:936 INFO main Cookie support is enabled
11:20:20:937 INFO main Maximum number of cookies = 300
11:20:20:939 INFO main Maximum number of cookies per host = 20
11:20:20:939 INFO main Maximum size of cookie = 4096 bytes
11:20:20:940 INFO main Cache file deletion is disabled
11:20:20:940 INFO main Crawler plug-in manager class is "oracle.search.plugin.ocs.cservices.OCSCSPluginMgr"
11:20:20:940 INFO main SQL hook ID is "8"
11:20:20:940 INFO main SQL command hook statement is "begin ? := eq_crw.crawler_get_command(?,?,?,?); end;"
11:20:20:940 INFO main SQL response hook statement is "begin ? := eq_crw.crawler_send_response (?,?,?,?,?,?,?,?,?,?,?,?,?); end;"
11:20:20:940 INFO main Crawler launched by schedule "BJ_Cont"
11:20:20:940 INFO main
11:20:20:940 INFO main =================== Crawling status ===================
11:20:20:941 INFO main Crawling started at 9/18/07 11:20 AM
11:20:21:912 INFO main URL manager connecting to Oracle...
11:20:21:974 INFO main connected
11:20:22:586 INFO main Queue manager connecting to Oracle...
11:20:22:631 INFO main connected
11:20:23:497 INFO main Invoking "oracle.search.plugin.ocs.cservices.OCSCSPluginMgr"
11:20:23:501 INFO main URL manager connecting to Oracle...
11:20:23:529 INFO main connected
11:20:23:531 INFO main Initializing crawler plug-in manager "oracle.search.plugin.ocs.cservices.OCSCSPluginMgr"
11:20:23:531 ERROR main SES keystore location: null
11:20:23:532 ERROR main null oracle.search.sdk.crawler.PluginException oracle.search.plugin.ocs.cservices.OCSCSPluginMgr:getParamValue:351 oracle.search.plugin.ocs.cservices.OCSCSPluginMgr:init:479 oracle.search.crawler.WebCrawler:begin:1076 ImtCrawler:run:1831 ImtCrawler:main:480
11:20:23:532 ERROR main null oracle.search.sdk.crawler.PluginException oracle.search.plugin.ocs.cservices.OCSCSPluginMgr:getParamValue:351 oracle.search.plugin.ocs.cservices.OCSCSPluginMgr:init:479 oracle.search.crawler.WebCrawler:begin:1076 ImtCrawler:run:1831 ImtCrawler:main:480
11:20:23:676 INFO Thread-1 Remote command "reportstatistics" received, argument = "quit"
11:20:23:676 INFO Thread-1 Executing remote command "reportstatistics"
11:20:23:697 INFO Thread-1 Send back remote command execution result
11:20:25:944 INFO main Shutting down all crawling threads...
11:20:25:948 INFO main
11:20:25:949 INFO main =================== Crawling results ===================
11:20:25:949 INFO main Crawling started at 9/18/07 11:20 AM
11:20:25:949 INFO main Crawling stopped at 9/18/07 11:20 AM
11:20:25:949 INFO main Total crawling time = 0:0:5
11:20:25:949 INFO main
11:20:25:954 INFO main Total number of documents fetched = 0
11:20:25:954 INFO main Document fetch failures = 0
11:20:25:954 INFO main Document conversion failures = 0
11:20:25:954 INFO main Total number of unique documents indexed = 0
11:20:25:954 INFO main Total data collected = 0 bytes
11:20:25:954 INFO main Total number of non-indexable documents = 0
11:20:25:955 INFO main
11:20:25:955 INFO main Number of times disk cache is full = 0
We have followed the installation details provided in "SESAdmiistratorGuide".
In that guide.... during creation of Content Database source he did not mention any entry for "SES keystore location", and the exception which we are getting is related to "SES keystore location: null" (please look into the exception stack).
could you please guide us.
Thanks
peter.
Maybe you are looking for
-
Dam, did you know that ppl make things harder then they should be
As I look here and other places I see that people make things harder then what they need tobe.I see people fearing fear when it comes to programming.They are so worried if they are going to make it or if they will pass this test or that test,well I g
-
Apple Password doesn't work when it is the correct password
A few days ago, in the middle of playing music on iTunes, I was no longer able to sign in. When I tried to sign into Apple that day, my password (which I know was correct) didn't work. So I reset my password. Today I tried to sign into Apple with the
-
hello friends, iam using the following code when i tryo to compile it gives the error as follow <code> import java.sql.*; import java.util.*; class DbDemoPrepared public static void main (String args[]) throws SQLException Class.forName("com.mysql.jd
-
So I'm getting the dreaded "does not support directory connections encrypted with ssl" error when attempting to bind clients (10.5) to the server (10.5). I followed the Apple KB article, but it did not help...double-checked permissions and the config
-
The default Cashed Rowset can hold 100 records. But if I want to put more than 100, how am I supposed to increase the limit. And also pls. let me know whether it is good to put say about 600 records in a cashed rowset or some other method should be u