Вы должны использовать -1, а не -2 в качестве второго аргумента для substr: этот пример работает отлично.
более того ... сравнение на равенство "=", а не "==".
declare
test_string varchar2(100) := 'text ending with newiline'||chr(10);
begin
IF (SUBSTR(test_string, -1) = CHR(10)) THEN
DBMS_OUTPUT.PUT_LINE('THERE IS!');
END IF;
end;