COLLATE Latin1_General_CS_AS
não é uma coisa de sintaxe oracle, parece uma coisa de sql server seu sql básico poderia ser:
ResultSet rs = statement.executeQuery("SELECT NAMES, AUTHOR, ID FROM BOOKS WHERE upper(NAMES) LIKE upper('%"+word+"%') OR upper(AUTHOR) LIKE upper('%"+word+"%') ");
mas esta é uma verificação completa de tabela/índice completo, portanto, não será rápida. para pesquisas rápidas de strings, a Oracle tem oracle text . Eu sugiro que você leia isso e implemente um índice de texto se precisar fazer esse tipo de pesquisa ilimitada (em tabelas grandes).