Oracle에서 인덱스 및 테이블 소유자에 대한 정보를 얻으려면 어떻게 해야 합니까?
테이블 사용자 인덱스의 데이터 사전에 존재하는 index_name, table_name, table_owner 및 고유성을 표시하는 선택문을 쓰고 싶습니다.어떤 도움이라도 좋습니다.문제는 index_name과 테이블 소유자를 표시하는 방법을 찾을 수 없다는 것입니다.
SELECT owner, table_name FROM dba_tables;
이게 대부분을 줄 수 있어요.
문서에 따르면 다음 작업을 수행할 수 있습니다.
select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from USER_INDEXES
또는
select INDEX_NAME, TABLE_OWNER, TABLE_NAME, UNIQUENESS from ALL_INDEXES
모든 인덱스를 원하는 경우...
select index_name, column_name
from user_ind_columns
where table_name = 'NAME';
또는 다음을 사용합니다.
select TABLE_NAME, OWNER
from SYS.ALL_TABLES
order by OWNER, TABLE_NAME
인덱스의 경우:
select INDEX_NAME, TABLE_NAME, TABLE_OWNER
from SYS.ALL_INDEXES
order by TABLE_OWNER, TABLE_NAME, INDEX_NAME
필요한 것은 다음과 같습니다.
SELECT
index_owner, index_name, table_name, column_name, column_position
FROM DBA_IND_COLUMNS
ORDER BY
index_owner,
table_name,
index_name,
column_position
;
제 사용 사례에서는 column_names를 인덱스에 포함시키고자 했습니다(AWS로 마이그레이션한 후 다른 데이터베이스 엔진에서 다시 생성할 수 있도록).다른 사람에게 도움이 될지도 모르니, 이하와 같이 사용했습니다.
SELECT
index_name, table_name, column_name, column_position
FROM DBA_IND_COLUMNS
WHERE
INDEX_OWNER = 'FOO'
AND TABLE_NAME NOT LIKE '%$%'
ORDER BY
table_name,
index_name,
column_position
;
다음은 Oracle 테이블에 작성된 인덱스를 확인할 수 있는 두 가지 간단한 쿼리입니다.
select index_name
from dba_indexes
where table_name='&TABLE_NAME'
and owner='&TABLE_OWNER';
select index_name
from user_indexes
where table_name='&TABLE_NAME';
자세한 내용과 인덱스 사이즈는 아래를 확인해 주세요.Oracle에서의 테이블 인덱스 및 크기
DBA에 액세스할 수 없고 열 이름도 필요했기 때문에 다음 사항이 도움이 되었습니다.
참조: https://dataedo.com/kb/query/oracle/list-table-indexes
select ind.table_owner || '.' || ind.table_name as "TABLE",
ind.index_name,
LISTAGG(ind_col.column_name, ',')
WITHIN GROUP(order by ind_col.column_position) as columns,
ind.index_type,
ind.uniqueness
from sys.all_indexes ind
join sys.all_ind_columns ind_col
on ind.owner = ind_col.index_owner
and ind.index_name = ind_col.index_name
where ind.table_owner not in ('ANONYMOUS','CTXSYS','DBSNMP','EXFSYS',
'MDSYS', 'MGMT_VIEW','OLAPSYS','OWBSYS','ORDPLUGINS', 'ORDSYS',
'SI_INFORMTN_SCHEMA','SYS','SYSMAN','SYSTEM', 'TSMSYS','WK_TEST',
'WKPROXY','WMSYS','XDB','APEX_040000','APEX_040200',
'DIP', 'FLOWS_30000','FLOWS_FILES','MDDATA', 'ORACLE_OCM', 'XS$NULL',
'SPATIAL_CSW_ADMIN_USR', 'SPATIAL_WFS_ADMIN_USR', 'PUBLIC',
'LBACSYS', 'OUTLN', 'WKSYS', 'APEX_PUBLIC_USER')
-- AND ind.table_name='TableNameGoesHereIfYouWantASpecificTable'
group by ind.table_owner,
ind.table_name,
ind.index_name,
ind.index_type,
ind.uniqueness
order by ind.table_owner,
ind.table_name;
유사한 질문 Oracle - 인덱스 필드에 대한 정보를 얻는 방법 등에서 답변을 복제합니다.
인덱스 열의 테이블, 인덱스 및 쉼표로 구분된 목록을 표시하는 스크립트
set pagesize 50000
set linesize 32000
col table_name format a30
col index_name format a30
col primary_key_name format a30
col uniqueness format a10
col columns format a200
select ui.table_name,
ui.index_name,
uc.constraint_name as primary_key_name,
ui.uniqueness,
listagg(aic.column_name, ', ') within group (order by aic.column_position) as columns
from user_indexes ui
inner join all_ind_columns aic on aic.index_name = ui.index_name
left outer join user_constraints uc on uc.index_name = ui.index_name and uc.constraint_type = 'P'
group by ui.table_name, ui.index_name, ui.uniqueness, uc.constraint_name
order by table_name;
결과:
TABLE_NAME INDEX_NAME PRIMARY_KEY_NAME UNIQUENESS COLUMNS
------------------------------ ------------------------------ ------------------------------ ---------- ----------------------------------------
ACTIVEMQ_ACKS ACTIVEMQ_ACKS_PK ACTIVEMQ_ACKS_PK UNIQUE CONTAINER, CLIENT_ID, SUB_NAME, PRIORITY
ACTIVEMQ_ACKS ACTIVEMQ_ACKS_XIDX NONUNIQUE XID
ACTIVEMQ_CONNECTION ACTIVEMQ_CONNECTION_NAME_UK UNIQUE NAME
ACTIVEMQ_CONNECTION ACTIVEMQ_CONNECTION_PK ACTIVEMQ_CONNECTION_PK UNIQUE ID
ACTIVEMQ_MSGS ACTIVEMQ_MSGS_CIDX NONUNIQUE CONTAINER
ACTIVEMQ_MSGS ACTIVEMQ_MSGS_EIDX NONUNIQUE EXPIRATION
ACTIVEMQ_MSGS ACTIVEMQ_MSGS_MIDX NONUNIQUE MSGID_PROD, MSGID_SEQ
ACTIVEMQ_MSGS ACTIVEMQ_MSGS_PIDX NONUNIQUE PRIORITY
ACTIVEMQ_MSGS ACTIVEMQ_MSGS_PK ACTIVEMQ_MSGS_PK UNIQUE ID
ACTIVEMQ_MSGS ACTIVEMQ_MSGS_XIDX NONUNIQUE XID
ACT_EVT_LOG SYS_C00444651 SYS_C00444651 UNIQUE LOG_NR_
ACT_GE_BYTEARRAY ACT_IDX_BYTEAR_DEPL NONUNIQUE DEPLOYMENT_ID_
ACT_GE_BYTEARRAY SYS_C00444634 SYS_C00444634 UNIQUE ID_
ACT_GE_PROPERTY SYS_C00444632 SYS_C00444632 UNIQUE NAME_
ACT_HI_ACTINST ACT_IDX_HI_ACT_INST_END NONUNIQUE END_TIME_
ACT_HI_ACTINST ACT_IDX_HI_ACT_INST_EXEC NONUNIQUE EXECUTION_ID_, ACT_ID_
ACT_HI_ACTINST ACT_IDX_HI_ACT_INST_PROCINST NONUNIQUE PROC_INST_ID_, ACT_ID_
언급URL : https://stackoverflow.com/questions/7669001/how-do-i-get-information-about-an-index-and-table-owner-in-oracle
'programing' 카테고리의 다른 글
tsconfig.json 파일을 생성하려면 어떻게 해야 합니까? (0) | 2023.03.22 |
---|---|
AngularJS가 숨겨진 필드 값을 전송하지 않음 (0) | 2023.03.22 |
정의되지 않은 상수 REQUEST_URI 사용 - 함수에서 'REQUEST_URI'로 가정합니다.73행의 php (0) | 2023.03.22 |
AngularJS : 커스텀필터 및 ng-repeat (0) | 2023.03.22 |
각도 2+ 및 데바운스 (0) | 2023.03.22 |