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!

[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
124 views