#sql #oracle #data-dictionary
#sql #Oracle #данные-словарь
Вопрос:
я пытаюсь выполнить это утверждение в Oracle 9i. Однако кажется, что результирующий набор пуст, хотя я очень уверен, что существует много столбцов с идентификатором имени.
select * from cols where column_name like '%ID%';
Кроме того, следующий оператор возвращает пустой результирующий набор.
select * from cols;
Могу ли я спросить, может ли это быть связано с привилегиями пользователя?
Спасибо!
Ответ №1:
В ссылке Oracle говорится о COLS:
"COLS is a synonym for USER_TAB_COLUMNS."
Это предлагает простой ответ на вашу головоломку: вы подключены к базе данных через пользователя, который не владеет таблицами (или представлениями). Либо измените своего пользователя, либо попробуйте выбрать из ALL_TAB_COLUMNS (который показывает результаты из всех таблиц / представлений, к которым у вас есть привилегии).
Комментарии:
1. Я думаю, что где-то в строке перед вашим сообщением участник упомянул, что на это также может повлиять функция, называемая виртуальной частной базой данных, которая существует начиная с версии Oracle 8i, однако я думаю, что сообщение было удалено, APC у вас есть какие-либо комментарии по этому поводу? Пожалуйста. 🙂
2. @ChinBoon — Виртуальная частная база данных (ОНА же мелкозернистый контроль доступа) — это механизм для незаметного ограничения доступа к строкам данных — и столбцам после 10gR2 — путем определения дополнительных фильтров, которые применяются ко всем операторам DML. Проверьте DBMS_RL, чтобы узнать больше. Я не думаю, что это имеет отношение к вашей ситуации, потому что VPD не будет применен к словарю данных.