데이터베이스 및 데이터 파일의 모든 테이블스페이스를 표시하기 위한 쿼리
데이터베이스에 있는 모든 테이블스페이스를 표시하기 위한 쿼리 작성 방법은 사용자 SCOT에 속한다고 가정합니다.SCOT 계정에 연결하여 확인할 수 있지만 sysas sysdba에 연결하여 모든 테이블스페이스와 데이터 파일이 SCOT에 속하는지 확인하고 싶습니다.
오라클에서는 일반적으로 다음 섹션에서 언급할 여러 가지 사실이 있습니다.
- 각 데이터베이스는 많은 스키마/사용자(논리 분할)를 가질 수 있습니다.
- 각 데이터베이스는 많은 테이블스페이스(논리적 분할)를 가질 수 있습니다.
- 스키마는 사용자에게 속한 개체(테이블, 인덱스, 보기 등)의 집합입니다.
- Oracle에서는 사용자를 스키마와 동일하게 간주할 수 있습니다.
- 데이터베이스는 관련 논리 구조를 함께 그룹화하는 테이블스페이스라는 논리 저장 단위로 나뉩니다.예를 들어 테이블스페이스는 일반적으로 응용프로그램의 모든 개체를 그룹화하여 일부 관리 작업을 단순화합니다.응용프로그램 데이터를 위한 테이블스페이스와 응용프로그램 인덱스를 위한 테이블스페이스가 있을 수 있습니다.
따라서 "모든 테이블스페이스와 데이터 파일이 SCOT에 속하는지 확인하는 것"이라는 당신의 질문은 약간 틀렸습니다.
그러나 소유자에 관계없이 모든 데이터베이스 개체에 대한 정보를 포함하는 일부 DBA 보기가 있습니다.DBA 권한이 있는 사용자만 DBA_DATA_FILES, DBA_TABLESPACE, DBA_FREE_SPACE, DBA_SEGENGS 등의 보기에 액세스할 수 있습니다.
따라서 sysdba로 DB에 연결하고 이러한 유용한 보기를 통해 쿼리를 실행합니다.예를 들어 이 쿼리를 사용하면 사용자의 개체가 있는 모든 테이블스페이스와 해당 데이터 파일을 찾을 수 있습니다.
SELECT DISTINCT sgm.TABLESPACE_NAME , dtf.FILE_NAME
FROM DBA_SEGMENTS sgm
JOIN DBA_DATA_FILES dtf ON (sgm.TABLESPACE_NAME = dtf.TABLESPACE_NAME)
WHERE sgm.OWNER = 'SCOTT'
현재 데이터베이스 인스턴스에 사용되는 모든 테이블스페이스 목록을 가져오려면 다음 SQL 스크립트 예제와 같이 DBA_TABLESPACE 보기를 사용할 수 있습니다.
SQL> connect SYSTEM/fyicenter
Connected.
SQL> SELECT TABLESPACE_NAME, STATUS, CONTENTS
2 FROM USER_TABLESPACES;
TABLESPACE_NAME STATUS CONTENTS
------------------------------ --------- ---------
SYSTEM ONLINE PERMANENT
UNDO ONLINE UNDO
SYSAUX ONLINE PERMANENT
TEMP ONLINE TEMPORARY
USERS ONLINE PERMANENT
http://dba.fyicenter.com/faq/oracle/Show-All-Tablespaces-in-Current-Database.html
SELECT a.file_name,
substr(A.tablespace_name,1,14) tablespace_name,
trunc(decode(A.autoextensible,'YES',A.MAXSIZE-A.bytes+b.free,'NO',b.free)/1024/1024) free_mb,
trunc(a.bytes/1024/1024) allocated_mb,
trunc(A.MAXSIZE/1024/1024) capacity,
a.autoextensible ae
FROM (
SELECT file_id, file_name,
tablespace_name,
autoextensible,
bytes,
decode(autoextensible,'YES',maxbytes,bytes) maxsize
FROM dba_data_files
GROUP BY file_id, file_name,
tablespace_name,
autoextensible,
bytes,
decode(autoextensible,'YES',maxbytes,bytes)
) a,
(SELECT file_id,
tablespace_name,
sum(bytes) free
FROM dba_free_space
GROUP BY file_id,
tablespace_name
) b
WHERE a.file_id=b.file_id(+)
AND A.tablespace_name=b.tablespace_name(+)
ORDER BY A.tablespace_name ASC;
데이터베이스, 테이블스페이스 또는 데이터 파일은 사용자에게 속하지 않습니다.MS SQL 배경에서 이 문제를 해결할 수 있습니까?
select tablespace_name,
file_name
from dba_tablespaces
order by tablespace_name,
file_name;
언급URL : https://stackoverflow.com/questions/36209102/query-to-display-all-tablespaces-in-a-database-and-datafiles
'programing' 카테고리의 다른 글
파이썬에서 연쇄적인 방법을 끊는 방법은 무엇입니까? (0) | 2023.06.24 |
---|---|
프로그램을 종료하기 전에 작업 수행 (0) | 2023.06.24 |
클래스 방법 대 클래스 필드 함수 대 클래스 필드 화살표 함수의 차이점은 무엇입니까? (0) | 2023.06.24 |
ESM(Programmatic Webpack & Jest): '.js' 파일 확장자가 없으면 모듈을 확인할 수 없습니다. (0) | 2023.06.24 |
if/while(조건) {: TRUE/FALSE가 필요한 값 누락 (0) | 2023.06.24 |