В Oracle (+) обозначает «необязательную» таблицу в JOIN. Так что в вашем запросе
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id(+)
это ЛЕВОЕ НАРУЖНОЕ СОЕДИНЕНИЕ таблицы 'b' к таблице 'a'. Он вернет все данные таблицы «а» без потери своих данных, когда другая сторона (необязательная таблица «б») не имеет данных.
Современный стандартный синтаксис для того же запроса будет
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b ON a.id=b.id
или с сокращением для a.id=b.id
(не поддерживается всеми базами данных):
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
LEFT JOIN b USING(id)
Если вы удалите (+), то это будет обычный запрос внутреннего соединения
Более старый синтаксис, как в Oracle, так и в других базах данных:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id=b.id
Более современный синтаксис:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
INNER JOIN b ON a.id=b.id
Или просто:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
JOIN b ON a.id=b.id
Он будет возвращать только те данные, в которых значение «id» таблиц «a» и «b» одинаково, что означает общую часть.
Если вы хотите сделать ваш запрос Правильным
Это то же самое, что LEFT JOIN, но переключает, какая таблица является необязательной.
Старый синтаксис Oracle:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a,b
WHERE a.id(+)=b.id
Современный стандартный синтаксис:
SELECT a.id, b.id, a.col_2, b.col_2, ...
FROM a
RIGHT JOIN b ON a.id=b.id
Ref & help:
https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:6585774577187
Левое внешнее объединение с помощью знака + в Oracle 11g
https://www.w3schools.com/sql/sql_join_left.asp