토토 베이 — a에서 OID 및 파일 노드를 확인합니다.포스트그레SQL데이터 디렉토리
토토 베이 [옵션...]
토토 베이은 관리자가 PostgreSQL에서 사용하는 파일 구조를 검사하는 데 도움이 되는 유틸리티 프로그램입니다. 이를 사용하려면 다음에서 설명하는 데이터베이스 파일 구조를 잘 알아야 합니다.토토 캔 : 문서 : 14 : 70 장. 데이터베이스 물리적 스토리지.
이름“oid2이름”은 역사적이며 실제로 다소 오해의 소지가 있습니다. 대부분의 경우 이를 사용할 때 실제로 테이블의 파일 노드 번호(데이터베이스 디렉토리에 표시되는 파일 이름)에 관심을 갖게 되기 때문입니다. 테이블 OID와 테이블 파일 노드의 차이점을 이해하세요!
oid2이름대상 데이터베이스에 연결하고 OID, 파일 노드 및/또는 테이블 이름 정보를 추출합니다. 데이터베이스 OID나 테이블스페이스 OID를 표시하도록 할 수도 있습니다.
oid2이름다음 명령줄 인수를 허용합니다:
-f파일 노드--filenode=파일 노드filenode가 있는 테이블에 대한 정보 표시파일 노드.
-i--색인목록에 색인과 시퀀스를 포함합니다.
-ooid--oid=oidOID가 있는 테이블에 대한 정보 표시oid.
-q--조용함헤더를 생략합니다(스크립팅에 유용함).
-s--테이블스페이스테이블스페이스 OID를 표시합니다.
-S--시스템-객체시스템 개체 포함(다음에 있는 개체information_schema, pg_toast그리고pg_catalog스키마).
-t테이블 이름_패턴--테이블=테이블 이름_패턴일치하는 테이블에 대한 정보 표시테이블 이름_패턴.
-V--버전인쇄oid2이름버전 및 종료.
-x--확장표시된 각 개체에 대한 추가 정보 표시: 테이블스페이스 이름, 스키마 이름 및 OID.
-?--도움말다음에 관한 도움말 보기oid2이름명령줄 인수 및 종료.
oid2이름또한 연결 매개변수에 대해 다음 명령줄 인수를 허용합니다.
-d데이터베이스--dbname=데이터베이스연결할 데이터베이스.
-h호스트--호스트=호스트데이터베이스 서버의 호스트.
-H호스트데이터베이스 서버의 호스트. 이 매개변수의 사용은 다음과 같습니다.지원 중단됨현재PostgreSQL 12.
-p포트--포트=포트데이터베이스 서버의 포트.
-U사용자 이름--사용자 이름=사용자 이름연결할 사용자 이름.
특정 테이블을 표시하려면 다음을 사용하여 표시할 테이블을 선택하십시오.-o, -f및/또는-t. -oOID를 가져옵니다.-f파일 노드를 취하고-t테이블 이름을 사용합니다(실제로는좋아요패턴이므로 다음과 같은 것을 사용할 수 있습니다.foo%). 이러한 옵션을 원하는 만큼 사용할 수 있으며 목록에는 옵션과 일치하는 모든 개체가 포함됩니다. 그러나 이러한 옵션은 다음과 같이 지정된 데이터베이스의 개체만 표시할 수 있습니다.-d.
아무것도 주지 않으면-o, -f또는-t하지만 기부하세요-d, 이름이 다음과 같은 데이터베이스의 모든 테이블이 나열됩니다.-d. 이 모드에서는-S그리고-i옵션은 나열되는 항목을 제어합니다.
당신이 주지 않는다면-d또는 데이터베이스 OID 목록이 표시됩니다. 또는 당신이 줄 수 있습니다-s테이블스페이스 목록을 얻으려면.
PGHOSTPG포트PGUSER기본 연결 매개변수.
이 유틸리티는 대부분의 다른 유틸리티와 마찬가지로포스트그레SQL유틸리티는 다음에서 지원하는 환경 변수도 사용합니다.libpq(참조PostgreSQL : 문서 : 14 : 34.15. 환경 배트맨 토토).
환경 변수PG_COLOR진단 메시지에 색상을 사용할지 여부를 지정합니다. 가능한 값은 다음과 같습니다.항상, 자동그리고절대로.
토토 베이손상되지 않은 시스템 카탈로그를 갖춘 실행 중인 데이터베이스 서버가 필요합니다. 따라서 이는 치명적인 데이터베이스 손상 상황에서 복구하는 데 제한적으로만 사용됩니다.
$ # 어쨌든 이 데이터베이스 서버에는 무엇이 들어있나요?
$ oid2이름
모든 데이터베이스:
    Oid 데이터베이스 이름 테이블스페이스
----------------------------------
  17228 alvherre pg_default
  17255 회귀 pg_default
  17227 템플릿0 pg_default
      1 템플릿1 pg_default
$ 토토 베이 -s
모든 테이블스페이스:
     Oid 테이블스페이스 이름
------------
    1663 pg_기본
    1664 pg_글로벌
  155151 패스트 디스크
  155152 빅디스크
$ # 좋아요, 데이터베이스 alvherre를 살펴보겠습니다
$ cd $PGDATA/베이스/17228
$ # 크기순으로 기본 테이블스페이스의 상위 10개 DB 객체를 가져옵니다.
$ ls -lS * | 머리 -10
-rw------- 1 alvherre alvherre 136536064 sep 14 09:51 155173
-rw------- 1 alvherre alvherre 17965056 sep 14 09:51 1155291
-rw------- 1 alvherre alvherre 1204224 9월 14일 09:51 16717
-rw------- 1 alvherre alvherre 581632 9월 6일 17:51 1255
-rw------- 1 alvherre alvherre 237568 9월 14일 09:50 16674
-rw------- 1 alvherre alvherre 212992 9월 14일 09:51 1249
-rw------- 1 alvherre alvherre 204800 9월 14일 09:51 16684
-rw------- 1 alvherre alvherre 196608 9월 14일 09:50 16700
-rw------- 1 alvherre alvherre 163840 9월 14일 09:50 16699
-rw------- 1 alvherre alvherre 122880 9월 6일 17:51 16751
$ # 155173 파일이 뭔지 궁금하네요...
$ 토토 베이 -d alvherre -f 155173
데이터베이스 "alvherre"에서:
  파일노드 테이블 이름
---------
    155173 계정
$ # 하나 이상의 개체를 요청할 수 있습니다
$ 토토 베이 -d alvherre -f 155173 -f 1155291
데이터베이스 "alvherre"에서:
  파일노드 테이블 이름
------------
    155173 계정
   1155291 account_pkey
$ # 옵션을 혼합할 수 있으며 -x를 사용하여 자세한 내용을 얻을 수 있습니다.
$ 토토 베이 -d alvherre -t 계정 -f 1155291 -x
데이터베이스 "alvherre"에서:
  Filenode 테이블 이름 Oid 스키마 테이블스페이스
----------------------------
    155173 계정 155173 공개 pg_default
   1155291 account_pkey 1155291 공개 pg_default
$ # 모든 DB 객체의 디스크 공간을 표시합니다.
$ du [0-9]* |
 SIZE FILENODE를 읽는 동안
 하다
 echo "$SIZE `토토 베이 -q -d alvherre -i -f $FILENODE`"
 완료
16 1155287 Branch_pkey
16 1155289 Tellers_pkey
17561 1155291 account_pkey
...
$ # 동일하지만 크기별로 정렬
$ du [0-9]* | 정렬 -rn | SIZE FN을 읽는 동안
 하다
 echo "$SIZE `토토 베이 -q -d alvherre -f $FN`"
 완료
133466 155173 계정
17561 1155291 account_pkey
1177 16717 pg_proc_proname_args_nsp_index
...
$ # 테이블스페이스에 무엇이 있는지 보려면 pg_tblspc 디렉토리를 사용하십시오.
$ cd $PGDATA/pg_tblspc
$ 토토 베이 -s
모든 테이블스페이스:
     Oid 테이블스페이스 이름
------------
    1663 pg_기본
    1664 pg_글로벌
  155151 패스트 디스크
  155152 빅디스크
$ # 테이블스페이스 "fastdisk"에 개체가 있는 데이터베이스는 무엇입니까?
$ ls -d 155151/*
155151/17228/155151/PG_VERSION
$ # 아, 데이터베이스 17228은 또 뭐였죠?
$ oid2이름
모든 데이터베이스:
    Oid 데이터베이스 이름 테이블스페이스
----------------------------------
  17228 alvherre pg_default
  17255 회귀 pg_default
  17227 템플릿0 pg_default
      1 템플릿1 pg_default
$ # 이 데이터베이스가 테이블스페이스에 어떤 객체를 가지고 있는지 살펴보겠습니다.
$ CD 155151/17228
$ ls -l
총 0
-rw------- 1 포스트그레스 포스트그레스 0 sep 13 23:20 155156
$ # 네, 꽤 작은 테이블인데... 어느 테이블인가요?
$ 토토 베이 -d alvherre -f 155156
데이터베이스 "alvherre"에서:
  파일노드 테이블 이름
---------
    155156 푸
  B. 팔머<bpalmer@crimelabs.net
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.