Skip to Main Content

Oracle Database Free

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

[RAS] xs_sys_context() only understands UPPER Namespace names

Mike KutzMar 2 2025

I'm unsure of where to post this. So, I posted it here.

Something like this might have been posted a few years ago. It has been fixed but only for xs$session Namespace

For all other Namespaces, only the upper() value is recognized.

note: attribute is case sensitive. But, since the case that it was created with is the case that is recognized, that isn't a problem...in some situations, it might even be the desired outcome.

RUN AS ADMIN (tested on 23.5 FREE)

set serveroutput on;

REM Setup
begin
  sys.xs_namespace.create_template(
      'NamespaceTest',
      xs$ns_attribute_list( xs$ns_attribute( 'some_value' ) ) 
  );
  sys.xs_principal.create_user(name => 'ras_user');
end;
/

REM run test
DECLARE
  ras_session raw(256);
begin
  -- create+join session
  dbms_xs_sessions.create_session( 'ras_user', ras_session );
  dbms_xs_sessions.attach_session( ras_session );

  -- inside a session
  dbms_xs_sessions.create_namespace( 'NamespaceTest' );
  dbms_xs_sessions.set_attribute( 'NamespaceTest', 'some_value','Hello World' );

  for rec in ( select xs_sys_context( 'NamespaceTest', 'some_value') mixed_name
                     ,xs_sys_context( upper( 'NamespaceTest' ), 'some_value') upper_name
                     ,xs_sys_context( lower( 'NamespaceTest' ), 'some_value') lower_name
                     ,xs_sys_context( 'XS$Session', 'session_id') mixed_session
                     ,xs_sys_context( upper('XS$Session'), 'session_id') upper_session
                     ,xs_sys_context( lower('XS$Session'), 'session_id') lower_session
              )
  loop
    dbms_output.put_line( 'Mixed Case Name = "' || rec.mixed_name || '"');
    dbms_output.put_line( 'Upper Case Name = "' || rec.upper_name || '"');
    dbms_output.put_line( 'Lower Case Name = "' || rec.lower_name || '"');
    dbms_output.put_line( 'Mixed Case Session = "' || rec.mixed_session || '"');
    dbms_output.put_line( 'Upper Case Session = "' || rec.upper_session || '"');
    dbms_output.put_line( 'Lower Case Session = "' || rec.lower_session || '"');
  end loop;

  -- exit+destroy session
  dbms_xs_sessions.detach_session();
  dbms_xs_sessions.destroy_session( ras_session );
end;
/

REM cleanup
begin
  xs_namespace.delete_template( 'NamespaceTest' );
  xs_principal.delete_principal( 'ras_user' );
end;
/

-- should return 0 rows
-- select * from dba_xs_sessions;

-- force destroy ALL lingering RAS Sessions
-- begin
--   for rec in ( select sessionid from dba_xs_sessions )
--   loop
--     dbms_xs_sessions.destroy_session( rec.sessionID, true );
--   end loop;
-- end;
-- /


Comments

Post Details

Added on Mar 2 2025
0 comments
45 views