와이즈 토토 - a의 OID 및 파일 노드를 해결합니다.PostgreSQL데이터 디렉토리
와이즈 토토
[옵션
...]
와이즈 토토는 관리자가 PostgreSQL에서 사용하는 파일 구조를 검사하는 데 도움이되는 유틸리티 프로그램입니다. 이를 사용하려면에 설명 된 데이터베이스 파일 구조에 익숙해야합니다.토토 꽁 머니 : 문서 : 10 : 67 장. 데이터베이스 물리적 스토리지.
이름“와이즈 토토”는 역사적이며 실제로 오해의 소지가 있습니다. 대부분 사용하기 때문에 실제로 테이블의 filenode 번호 (데이터베이스 디렉토리에서 볼 수있는 파일 이름)와 관련이 있습니다. 테이블 OID와 테이블 filenodes의 차이점을 이해하십시오!
와이즈 토토대상 데이터베이스에 연결하고 OID, Filenode 및/또는 테이블 이름 정보를 추출합니다. 데이터베이스 OID 또는 테이블 스페이스 OID를 표시 할 수도 있습니다.
와이즈 토토다음 명령 줄 인수를 수락합니다 :
-f
filenode
filenode가있는 테이블에 대한 정보 표시filenode
-i
목록에 인덱스 및 시퀀스 포함
-o
OID
OID가있는 테이블에 대한 정보 표시OID
-Q
헤더 생략 (스크립팅에 유용)
-s
테이블 스페이스 OID 표시
-s
시스템 개체 포함 (Information_Schema
, pg_toast
andPG_CATALOG
스키마)
-t
tableName_pattern
테이블에 대한 정보 표시tableName_pattern
-v
-버전
인쇄와이즈 토토버전 및 종료.
-x
표시된 각 객체에 대한 자세한 정보 : 테이블 스페이스 이름, 스키마 이름 및 OID
-?
-help
도움말 표시와이즈 토토명령 줄 인수 및 종료.
와이즈 토토연결 매개 변수에 대한 다음 명령 줄 인수를 수락합니다.
-d
데이터베이스
연결할 데이터베이스
-h
host
Database Server의 호스트
-p
포트
데이터베이스 서버 포트
-u
사용자 이름
사용자 이름으로 연결할
-p
비밀번호
비밀번호 (비밀번호 - 명령 줄에 이것을 보관하는 것)
특정 테이블을 표시하려면 사용하여 표시 할 테이블을 선택하십시오-o
, -f
및/또는-t
. -o
OID를 가져와-f
Filenode를 가져 가서-t
테이블 이름을 가져옵니다 (실제로는Like
패턴이므로와 같은 것을 사용할 수 있습니다.foo%
). 원하는만큼 이러한 옵션을 사용할 수 있으며 리스팅에는 옵션과 일치하는 모든 객체가 포함됩니다. 그러나 이러한 옵션은에 제공된 데이터베이스에 객체 만 표시 할 수 있습니다.-d
.
당신이 아무것도주지 않는다면-o
, -f
또는-t
하지만-d
, 이름이 지정된 데이터베이스에 모든 테이블을 나열합니다-d
. 이 모드에서-s
and-i
옵션 제어 내용을 제어합니다.
당신이주지 않으면-d
또한 데이터베이스 OID 목록을 표시합니다. 또는 당신은 줄 수 있습니다-s
테이블 스페이스 목록을 얻으려면
와이즈 토토비유 시스템 카탈로그가있는 실행중인 데이터베이스 서버가 필요합니다. 그러므로 치명적인 데이터베이스 부패 상황에서 복구하는 데 제한된 사용이 제한적입니다.
$ #이 데이터베이스 서버의 내용은 무엇입니까? $ 와이즈 토토 모든 데이터베이스 : OID 데이터베이스 이름 테이블 스페이스 ------------------------------------ 17228 ALVHERRE PG_DEFAULT 17255 회귀 pg_default 17227 Template0 PG_DEFAULT 1 Template1 PG_DEFAULT $ 와이즈 토토 -s 모든 테이블 스페이스 : OID 테이블 스페이스 이름 ----------------------------- 1663 PG_DEFAULT 1664 PG_GLOBAL 155151 FastDisk 155152 BIGDISK $ # 좋아, 데이터베이스 ALVHERRE를 살펴 보자 $ cd $ pgdata/base/17228 $ # 기본 테이블 스페이스에서 상위 10 개의 DB 객체를 크기별로 주문하십시오. $ ls -ls * | 머리 -10 -RW ------ 1 ALVHERRE ALVHERRE 136536064 9 월 14 일 09:51 155173 -RW ------ 1 ALVHERRE ALVHERRE 17965056 9 월 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이 무엇인지 궁금합니다 ... $ OID2NAME -D ALVHERRE -F 155173 데이터베이스 "Alvherre"에서 : Filenode 테이블 이름 ------------------------ 155173 계정 $ # 둘 이상의 객체를 요청할 수 있습니다. $ OID2NAME -D ALVHERRE -F 155173 -F 1155291 데이터베이스 "Alvherre"에서 : Filenode 테이블 이름 ----------------------------- 155173 계정 1155291 Accounts_pkey $ # 옵션을 혼합하고 -X로 자세한 내용을 얻을 수 있습니다. $ 와이즈 토토 -d alvherre -t 계정 -f 1155291 -x 데이터베이스 "Alvherre"에서 : Filenode 테이블 이름 OID 스키마 테이블 스페이스 -------------------------------------------------------------- 155173 계정 155173 Public Pg_default 1155291 Accounts_Pkey 1155291 Public PG_DEFAULT $ # 모든 DB 객체에 대한 디스크 공간 표시 $ du [0-9]* | 크기 필레 노드를 읽는 동안 하십시오 echo "$ size`와이즈 토토 -q -d alvherre -i -f $ filenode`" 완료 16 1155287 Branches_pkey 16 1155289 Tellers_pkey 17561 1155291 Accounts_pkey ... $ # 동일하지만 크기별로 정렬하십시오 $ du [0-9]* | 정렬 -rn | 읽기 크기 fn 하십시오 echo "$ size`와이즈 토토 -q -d alvherre -f $ fn`" 완료 133466 155173 계정 17561 1155291 Accounts_pkey 1177 16717 PG_PROC_PRONAME_ARGS_NSP_INDEX ... $ # 테이블 스페이스에있는 내용을 보려면 PG_TBLSPC 디렉토리를 사용하십시오. $ cd $ pgdata/pg_tblspc $ 와이즈 토토 -s 모든 테이블 스페이스 : OID 테이블 스페이스 이름 ----------------------------- 1663 PG_DEFAULT 1664 PG_GLOBAL 155151 FastDisk 155152 BIGDISK $ # 테이블 스페이스 "FastDisk"에 객체가있는 데이터베이스는 무엇입니까? $ ls -d 155151/* 155151/17228/155151/pg_version $ # 오, 데이터베이스 17228은 무엇입니까? $ 와이즈 토토 모든 데이터베이스 : OID 데이터베이스 이름 테이블 스페이스 ------------------------------------ 17228 ALVHERRE PG_DEFAULT 17255 회귀 pg_default 17227 Template0 PG_DEFAULT 1 Template1 PG_DEFAULT $ #이 데이터베이스가 테이블 스페이스에 어떤 객체를 가지고 있는지 보자. $ CD 155151/17228 $ ls -l 총 0 -RW ------- 1 Postgres Postgres 0 9 월 13:20 155156 $ # 좋아, 이것은 꽤 작은 테이블이지만 ... 어느 쪽입니까? $ OID2NAME -D ALVHERRE -F 155156 데이터베이스 "Alvherre"에서 : Filenode 테이블 이름 ------------------------ 155156 foo
b. 성지 순례자<bpalmer@crimelabs.net