WedX - журнал о программировании и компьютерных науках

Oracle 11g: как переопределить таблицы схемы по умолчанию тестовыми таблицами для моего тестового пользователя

Я знаю, что это можно сделать, потому что я видел это на своем последнем рабочем месте, но я не знаю, как повторить!

По сути, есть пользователь MASTER, у которого есть права записи для всех наших таблиц. В настройках подключения адаптера БД нашего приложения мы используем DEFAULT_SCHEMA: MASTER

Я создал для себя нового тестового пользователя (в той же базе данных, что и главный пользователь, не используя ссылку на базу данных), чтобы я мог свободно создавать тестовые данные, не связываясь с реальными данными. Затем скопировал таблицу для моего тестового пользователя, чтобы я мог свободно манипулировать данными: create table SIMMBOT.real_data_table as select * from MASTER.real_data_table

Проблема в том, что я не знаю, как настроить соединение, чтобы Oracle знал, что нужно переопределить MASTER.real_data_table моим собственным SIMMBOT.real_data_table. У меня есть подозрение, что на самом деле вы не можете сделать это в настройках подключения... Итак, начнем с самого начала, что мне нужно сделать, чтобы настроить тестовые таблицы таким образом? Что-то вроде общей схемы?


Ответы:


1

Если в вашем коде используются полные имена таблиц (например, MASTER.real_data_table или SIMMBOT.real_data_table), то с точки зрения конфигурации нет возможности изменить объект, на который ссылаются.

Предполагая, однако, что ваш код не использует полное имя таблицы — если он просто выбирает из real_data_table, то Oracle сначала будет искать объект в текущей схеме с этим именем, а затем искать общедоступный синоним с этим именем.

Если вы подключаетесь как MASTER, вы можете изменить текущую схему

ALTER SESSION SET current_schema = SIMMBOT

Как только вы это сделаете, все неквалифицированные ссылки на имя таблицы будут разрешаться в таблицы в схеме SIMMBOT. Обратите внимание, что пользователю MASTER необходимо будет предоставить соответствующий доступ к объектам в схеме SIMMBOT отдельно — настройка текущей схемы влияет только на разрешение имен, но не на привилегии. Схема SIMMBOT также должна иметь каждую таблицу, на которую код хочет сослаться — нет способа указать иерархию для разрешения неполных имен. Вы не можете указать Oracle сначала разрешать неполные имена в схеме SIMMBOT, а затем в схеме MASTER.

Альтернативой может быть создание синонимов для каждой таблицы и манипулирование синонимами, чтобы ссылаться на вашу таблицу для некоторых или всех пользователей. Если ваше приложение вошло в систему как третий пользователь, не владеющий какими-либо объектами, например APP_USER, вы можете создать в схеме APP_USER частные синонимы, указывающие на разные объекты в разных схемах:

CREATE SYNONYM app_user.real_data_table FOR simmbot.real_data_table;
CREATE SYNONYM app_user.some_other_table FOR master.some_other_table;

или вы можете создать общедоступные синонимы, которые будут применяться ко всем пользователям (кроме тех, кому принадлежат объекты)

CREATE PUBLIC SYNONYM real_data_table FOR simmbot.real_data_table;
CREATE PUBLIC SYNONYM some_other_table FOR master.some_other_table;
22.08.2011
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: wedx@cp9.ru