Code:
set line 130
set serverout on
set pagesize 40
set termout off
col plan_plus_exp for a96

column gname new_value gname
variable server varchar2(64)

declare
  l_role varchar2(36);
  l_user varchar2(30) := user;
begin
  begin
  select role
    into l_role
    from session_roles
   where role='DBA';
  exception
  when no_data_found then null;
  end;
  if l_role = 'DBA' or l_user = 'SYS'
  then
    select lower(user) || '@' || instance_name || '-' || upper(host_name)
      into :server
      from v$instance;
  else
    select lower(user) || '@' || substr(global_name, 1, decode(instr(global_name, '.', -1, 1), 0, length(global_name) + 1, 
           instr(global_name, '.', -1, 1) ) - 1) 
      into :server  
      from global_name;
  end if;
end;
/

select :server gname
  from dual;

set sqlprompt '&gname>'


alter session set nls_date_format='YYYYMMDD HH24:MI:SS';

set termout on