Преимущество наличия global_names = TRUE состоит в том, что оно просто заставляет вас использовать имена для ссылок на базы данных, которые четко указывают, к какой базе данных они подключаются. Установка в FALSE просто снимает это ограничение; Недостатком является то, что это позволит вам создавать ссылки с именами, которые могут сбивать с толку. В извращенном случае, если у вас есть базы данных A, B и C, вы можете создать ссылку в A, называемую «B», но указывающую на C.
Вы также можете считать это проблемой безопасности, так как этот параметр global_names = FALSE делает маловероятным, что кто-то может злонамеренно изменить определение ссылки, что приведет к неправильному доступу или повреждению данных. Хотя я не могу придумать конкретный сценарий для этого.
В целом, нет большого недостатка в настройке FALSE. Однако есть несколько других вариантов, которые вы могли бы рассмотреть.
Один из них - сохранить глобальную настройку TRUE, но сбросить ее на FALSE на уровне сеанса в коде, который нуждается в этом. Мы делаем это на моем сайте, потому что есть только одно приложение, которое требует использования «неправильно» именованных ссылок. Этот метод гарантирует, что любому, кто использует ссылку в интерактивном режиме или пишет код, который ее использует, будет напоминать, что имя не соответствует назначению.
Другой вариант - оставить global_names = TRUE, чтобы в средах использовались разные имена ссылок, но при этом имя ссылки должно быть параметром или параметром конфигурации в вашем коде. Например, если у вас есть сценарии, которые создают пакеты PL / SQL, вы можете сделать имя ссылки параметром сценария.