powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
15 сообщений из 15, страница 1 из 1
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39705239
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю-читаю про эту опцию и никак толком не могу понять, что она дает :(

1. Все примеры, какие нашел в доках и форумах, почему-то с системными вьюхами. А в доках в картинке грамматики команды и ее описании стоит возможность указания схемы и вьюхи/таблицы.
Значит ли это, что вьюха и таблица может быть произвольной от любого пользователя?

2. Если я каким-то образом укажу для common user, что у него CONTAINER_DATA=(CDB$ROOT, PDB1), значит ли это, что при наличии идентичных по структуре и названиям таблиц в обоих контейнерах я при запросе SELECT из корня получу данные из обоих контейнеров?
А если структура будет немного отличаться или совсем разная, что я получу?
А если в одном контейнере это будет таблица, а в другой вьюха с идентичной структурой и именем?

3. А для local user опция CONTAINER_DATA доступна?

4. Как с этой опцией сочетается опция CONTAINER=... ? Они зависимы друг от друга или нет?
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39705253
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да начни ты наконец доку курить: 43.10 Querying User-Created Tables and Views Across All PDBs .

SY.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39705264
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
Но это только первых два вопроса.

Не серчай :) В гигах доков немудрено пропустить маленькие важные абзацы.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39706556
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде бы разобрался с теми 4 вопросами.

Но появились новые всё по этой же опции:

1. Вчера долго бился, но
Код: plsql
1.
ALTER USER C##XA SET container_data=(CDB$ROOT,orapdb) container=CURRENT

приводило к странному результату. В результате
Код: plsql
1.
SELECT * FROM dba_container_data

не было строчки с ORAPDB, зато была с CDB$ROOT.
Сегодня делал все то же самое, но строчка с ORAPDB появилась сразу же. Что это может быть?

2. Есть юзер C##XA созданный commonly, у него и в ORAPDB и в CDB$ROOT созданы идентичные таблицы TBL_TEST. Однако запрос
Код: plsql
1.
ALTER USER C##XA SET container_data=(CDB$ROOT,orapdb) FOR C##XA.TBL_TEST container=CURRENT

дает ошибку
Код: plsql
1.
2.
3.
4.
ORA-65058: object-specific CONTAINER_DATA attribute may only be specified
for a CONTAINER_DATA object
Cause: Object referenced in an ALTER USER statement modifying an object-specific CONTAINER_DATA attribute is not a CONTAINER_DATA table or view.
Action: Ensure that an object referenced in the statement is a CONTAINER_DATA table or view.

Не понимаю :(
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39706557
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3. Похож на пункт 1, но только сначала делал
Код: plsql
1.
ALTER USER C##XA SET container_data=(CDB$ROOT) container=CURRENT

, а затем добавлял ORAPBD путем
Код: plsql
1.
ALTER USER C##XA ADD container_data=(ORAPBD) container=CURRENT

. Но этот ORAPBD нельзя было увидеть в dba_container_data, а сегодня - получается. Что за наваждения?

От чего это зависит? От каких звезд или фаз луны?
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39706569
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный ВасяОт чего это зависит? От каких звезд или фаз луны?

От курения доки:

Container data objects include V$, GV$, CDB_, and some Automatic Workload Repository DBA_HIST* views. A common user's CONTAINER_DATA attribute determines which PDBs are visible in container data objects.

А ты пытаешься засунуть пользовательскую таблицу C##XA.TBL_TEST. В доке черным по белому сказано для меж-контейнерной выборки пользовательских обьектов используй CONTAINERS.

SY.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39706572
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYВ доке черным по белому сказано
Может, я и тупой, но про CONTAINERS я не спрашивал.

Я спрашивал про CONTAINER_DATA. И в доке я не увидел четкого указания, что это только для V$, GV$, CDB_. Формулировка include не означает, что туда не входят и другие возможности. Если б там стояло только или исключительно , а так - понимай как знаешь. Вот я и понял по-своему.

Причем ты сам сбил меня в первом своем ответе на мой первый пункт первого поста. А теперь негодуешь.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39706576
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный ВасяИ в доке я не увидел четкого указания, что это только для V$, GV$, CDB_.

Container Data Objects in a CDB
A container data object is a table or view containing data pertaining to multiple containers and possibly the CDB as a whole, along with mechanisms to restrict data visible to specific common users through such objects to one or more containers.

Ну и как пользовательская таблица сдержит data pertaining to multiple containers and possibly the CDB as a whole? И дажен если ты засунешь туда например содержимое CDB_PDBS как Oracle это знает? Поэтому меж-кoнтейнерное чтение системных "table or view" и то не всех регулируется привилегиями а меж-кoнтейнерное чтение пользовательских "table or view" использованием CONTAINERS.

SY.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39706580
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за разъяснения.

Пазл потихоньку складывается.
Но вот вопросы 1 21683120 и 3 21683122 до сих пор ставят в тупик.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39706583
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный ВасяСпасибо за разъяснения.

Пазл потихоньку складывается.
Но вот вопросы 1 21683120 и 3 21683122 до сих пор ставят в тупик.


Ну тут тебе никто не поможет. Вернее ответ что-то ты упустил и это только кажется что "Сегодня делал все то же самое, но строчка с ORAPDB появилась сразу же".

SY.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39706664
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, но крайне маловероятно.
Я вчера сохранил и сегодня выполнял все запросы в той же последовательности, чтобы результаты написать сюда в виде вопроса. И был очень удивлен, когда получилось. И мне кажется, что, когда шерстил форумы, натыкался пару раз на точно такую же ситуацию в вопросах (но без ответов).

И все-таки мне не дает покоя формулировка If you specify the FOR clause [...] If you omit schema, then Oracle Database assumes that container_data_object is in your own schema. в описании опций ALTER USER. О какой your own schema идет речь, если там можно вписать только системные вьюхи?
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39708516
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наткнулся на парочку интересных фраз.

Первая - из Security Guide:
Код: plsql
1.
You can find if a specific table or view is a container data object by querying the TABLE_NAME, VIEW_NAME, and CONTAINER_DATA columns of the USER_|DBA_|ALL_VIEWS|TABLES dictionary views.


Вторая - из описаний ALL_VIEWS и ALL_TABLES:
CONTAINER_DATA Indicates whether the view contains container-specific data. Possible values:
• Y if the view was created with the CONTAINER_DATA clause
CONTAINER_DATA Indicates whether the table contains container-specific data. Possible values:
• YES if the table was created with the CONTAINER_DATA clause
Однако я не обнаружил опций для CONTAINER_DATA ни у таблиц, ни у вьюх.
Только некая опция
Код: plsql
1.
Use the CONTAINER_MAP clause to enable or disable the table to be queried using a container map.

которую мне не удалось включить для таблицы
Код: plsql
1.
ALTER TABLE C##XA.TBL_TEST ENABLE CONTAINER_MAP

Ругается "ORA-00905: отсутствует ключевое слово", хотя по формальной грамматике команды больше ничего не надо.

Судя по приведенным цитатам, видимо, как-то можно создать свою вьюху/таблицу, чтоб использовать ее в CONTAINER DATA. Но пока не могу допетрить, как.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39708539
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно, но не простым смертным. Смотрим:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
SQL> show user
USER is "SYS"
SQL> select dbms_metadata.get_ddl('TABLE','USER$') from dual;

DBMS_METADATA.GET_DDL('TABLE','USER$')
-------------------------------------------------------------------------------

  CREATE TABLE "SYS"."USER$" SHARING=METADATA
   (    "USER#" NUMBER NOT NULL ENABLE,
        "NAME" VARCHAR2(128) NOT NULL ENABLE,
        "TYPE#" NUMBER NOT NULL ENABLE,
        "PASSWORD" VARCHAR2(4000),
        "DATATS#" NUMBER NOT NULL ENABLE,
        "TEMPTS#" NUMBER NOT NULL ENABLE,
        "CTIME" DATE NOT NULL ENABLE,
        "PTIME" DATE,
        "EXPTIME" DATE,

DBMS_METADATA.GET_DDL('TABLE','USER$')
-------------------------------------------------------------------------------
        "LTIME" DATE,
        "RESOURCE$" NUMBER NOT NULL ENABLE,
        "AUDIT$" VARCHAR2(38),
        "DEFROLE" NUMBER NOT NULL ENABLE,
        "DEFGRP#" NUMBER,
        "DEFGRP_SEQ#" NUMBER,
        "ASTATUS" NUMBER DEFAULT 0 NOT NULL ENABLE,
        "LCOUNT" NUMBER DEFAULT 0 NOT NULL ENABLE,
        "DEFSCHCLASS" VARCHAR2(128),
        "EXT_USERNAME" VARCHAR2(4000),
        "SPARE1" NUMBER,

DBMS_METADATA.GET_DDL('TABLE','USER$')
-------------------------------------------------------------------------------
        "SPARE2" NUMBER,
        "SPARE3" NUMBER,
        "SPARE4" VARCHAR2(1000),
        "SPARE5" VARCHAR2(1000),
        "SPARE6" DATE,
        "SPARE7" VARCHAR2(4000),
        "SPARE8" VARCHAR2(4000),
        "SPARE9" NUMBER,
        "SPARE10" NUMBER,
        "SPARE11" TIMESTAMP (6)
   ) CLUSTER "SYS"."C_USER#" ("USER#")

DBMS_METADATA.GET_DDL('TABLE','USER$')
-------------------------------------------------------------------------------


SQL> create table vasia SHARING=METADATA(n number);
create table vasia SHARING=METADATA(n number)
                           *
ERROR at line 1:
ORA-65021: illegal use of SHARING clause


SQL> select dbms_metadata.get_ddl('VIEW','V_$SESSION') from dual;

DBMS_METADATA.GET_DDL('VIEW','V_$SESSION')
--------------------------------------------------------------------------------

  CREATE OR REPLACE FORCE NONEDITIONABLE VIEW "SYS"."V_$SESSION"  CONTAINER_DATA

 ("SADDR", "SID", "SERIAL#", "AUDSID", "PADDR", "USER#", "USERNAME", "COMMAND",
"OWNERID", "TADDR", "LOCKWAIT", "STATUS", "SERVER", "SCHEMA#", "SCHEMANAME", "OS
USER", "PROCESS", "MACHINE", "PORT", "TERMINAL", "PROGRAM", "TYPE", "SQL_ADDRESS
", "SQL_HASH_VALUE", "SQL_ID", "SQL_CHILD_NUMBER", "SQL_EXEC_START", "SQL_EXEC_I
D", "PREV_SQL_ADDR", "PREV_HASH_VALUE", "PREV_SQL_ID", "PREV_CHILD_NUMBER", "PRE
V_EXEC_START", "PREV_EXEC_ID", "PLSQL_ENTRY_OBJECT_ID", "PLSQL_ENTRY_SUBPROGRAM_
ID", "PLSQL_OBJECT_ID", "PLSQL_SUBPROGRAM_ID", "MODULE", "MODULE_HASH", "ACTION"
, "ACTION_HASH", "CLIENT_INFO", "FIXED_TABLE_SEQUENCE", "ROW_WAIT_OBJ#", "ROW_WA

DBMS_METADATA.GET_DDL('VIEW','V_$SESSION')
--------------------------------------------------------------------------------
IT_FILE#", "ROW_WAIT_BLOCK#", "ROW_WAIT_ROW#", "TOP_LEVEL_CALL#", "LOGON_TIME",
"LAST_CALL_ET", "PDML_ENABLED", "FAILOVER_TYPE", "FAILOVER_METHOD", "FAILED_OVER
", "RESOURCE_CONSUMER_GROUP", "PDML_STATUS", "PDDL_STATUS", "PQ_STATUS", "CURREN
T_QUEUE_DURATION", "CLIENT_IDENTIFIER", "BLOCKING_SESSION_STATUS", "BLOCKING_INS
TANCE", "BLOCKING_SESSION", "FINAL_BLOCKING_SESSION_STATUS", "FINAL_BLOCKING_INS
TANCE", "FINAL_BLOCKING_SESSION", "SEQ#", "EVENT#", "EVENT", "P1TEXT", "P1", "P1
RAW", "P2TEXT", "P2", "P2RAW", "P3TEXT", "P3", "P3RAW", "WAIT_CLASS_ID", "WAIT_C
LASS#", "WAIT_CLASS", "WAIT_TIME", "SECONDS_IN_WAIT", "STATE", "WAIT_TIME_MICRO"
, "TIME_REMAINING_MICRO", "TIME_SINCE_LAST_WAIT_MICRO", "SERVICE_NAME", "SQL_TRA
CE", "SQL_TRACE_WAITS", "SQL_TRACE_BINDS", "SQL_TRACE_PLAN_STATS", "SESSION_EDIT
ION_ID", "CREATOR_ADDR", "CREATOR_SERIAL#", "ECID", "SQL_TRANSLATION_PROFILE_ID"

DBMS_METADATA.GET_DDL('VIEW','V_$SESSION')
--------------------------------------------------------------------------------
, "PGA_TUNABLE_MEM", "SHARD_DDL_STATUS", "CON_ID", "EXTERNAL_NAME", "PLSQL_DEBUG
GER_CONNECTED") AS
  select "SADDR","SID","SERIAL#","AUDSID","PADDR","USER#","USERNAME","COMMAND","
OWNERID","TADDR","LOCKWAIT","STATUS","SERVER","SCHEMA#","SCHEMANAME","OSUSER","P
ROCESS","MACHINE","PORT","TERMINAL","PROGRAM","TYPE","SQL_ADDRESS","SQL_HASH_VAL
UE","SQL_ID","SQL_CHILD_NUMBER","SQL_EXEC_START","SQL_EXEC_ID","PREV_SQL_ADDR","
PREV_HASH_VALUE","PREV_SQL_ID","PREV_CHILD_NUMBER","PREV_EXEC_START","PREV_EXEC_
ID","PLSQL_ENTRY_OBJECT_ID","PLSQL_ENTRY_SUBPROGRAM_ID","PLSQL_OBJECT_ID","PLSQL
_SUBPROGRAM_ID","MODULE","MODULE_HASH","ACTION","ACTION_HASH","CLIENT_INFO","FIX
ED_TABLE_SEQUENCE","ROW_WAIT_OBJ#","ROW_WAIT_FILE#","ROW_WAIT_BLOCK#","ROW_WAIT_
ROW#","TOP_LEVEL_CALL#","LOGON_TIME","LAST_CALL_ET","PDML_ENABLED","FAILOVER_TYP

DBMS_METADATA.GET_DDL('VIEW','V_$SESSION')
--------------------------------------------------------------------------------
E","FAILOVER_METHOD","FAILED_OVER","RESOURCE_CONSUMER_GROUP","PDML_STATUS","PDDL
_STATUS","PQ_STATUS","CURRENT_QUEUE_DURATION","CLIENT_IDENTIFIER","BLOCKING_SESS
ION_STATUS","BLOCKING_INSTANCE","BLOCKING_SESSION","FINAL_BLOCKING_SESSION_STATU
S","FINAL_BLOCKING_INSTANCE","FINAL_BLOCKING_SESSION","SEQ#","EVENT#","EVENT","P
1TEXT","P1","P1RAW","P2TEXT","P2","P2RAW","P3TEXT","P3","P3RAW","WAIT_CLASS_ID",
"WAIT_CLASS#","WAIT_CLASS","WAIT_TIME","SECONDS_IN_WAIT","STATE","WAIT_TIME_MICR
O","TIME_REMAINING_MICRO","TIME_SINCE_LAST_WAIT_MICRO","SERVICE_NAME","SQL_TRACE
","SQL_TRACE_WAITS","SQL_TRACE_BINDS","SQL_TRACE_PLAN_STATS","SESSION_EDITION_ID
","CREATOR_ADDR","CREATOR_SERIAL#","ECID","SQL_TRANSLATION_PROFILE_ID","PGA_TUNA
BLE_MEM","SHARD_DDL_STATUS","CON_ID","EXTERNAL_NAME","PLSQL_DEBUGGER_CONNECTED"
from v$session

DBMS_METADATA.GET_DDL('VIEW','V_$SESSION')
--------------------------------------------------------------------------------


SQL> create or replace view vasia CONTAINER_DATA(n number);
create or replace view vasia CONTAINER_DATA(n number)
                             *
ERROR at line 1:
ORA-00905: missing keyword


SQL>  



SY.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39708557
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс, запостил рньше времени. А "не простой смертный" в плане SHARING=METADATA это application container: Administering Application Containers with SQL*Plus .

Ну а как добавить в CONTAINER_DATA это скорее всего какой-то недокументированный параметр.

SY.
...
Рейтинг: 0 / 0
Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
    #39708641
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYCONTAINER_DATA это скорее всего какой-то недокументированный параметр.
Нашлось в catrepv.sql и depssvrm.sql :
Код: plsql
1.
2.
3.
/* Enable container_data sharing=object */
alter session set "_ORACLE_SCRIPT"=TRUE
/
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите разобраться с CONTAINER_DATA в команде ALTER USER в 12.2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]