ALTER SESSION SET NLS_COMP=LINGUISTIC;
ALTER SESSION SET NLS_SORT=BINARY_CI;
That statement will only affect your current session, when you open you a new session, the previous alter session in previous session won't affect the new session. If you want to make all the sessions to be case-insensitive, then use a AFTER LOGON TRIGGER
and issue the same statements using dynamic sql.
For example,
CREATE OR REPLACE TRIGGER case_insensitive_trg
AFTER LOGON ON SCHEMA
BEGIN
execute immediate 'alter session set NLS_SORT=BINARY_CI';
execute immediate 'alter session set NLS_COMP=LINGUISTIC';
END;
/
For detailed information on case-insensitive sorts and compares, please read Oracle – Case Insensitive Sorts & Compares
Regarding, system level,
ALTER SYSTEM SET NLS_COMP=LINGUISTIC SCOPE SPFILE;
ALTER SYSTEM SET NLS_SORT=BINARY_AI SCOPE SPFILE;
You can certainly do whatever you want, of course it is your database. But, I won't recommend to do such a thing at system level. It is an overkill at system level, and unnecessary welcome to performance issues.
Update : The confusion between a session and a connection
A connection is actual connection (typically a socket over TCP/IP)
between the client and the server. It is used by the client to
communicate with the server, and by the server to respond to the
client's requests.
A session is the process (or thread) on the server that has been
created for that connection, to service the client. This reads the
client's request from the connection, executes/services the request,
and then respond to the request to the client via the connection.
So, a session reads and respond back the client's request via the connection.