와이즈 토토 - a의 OID 및 파일 노드를 해결합니다.와이즈 토토데이터 디렉토리
와이즈 토토
[옵션
...]
와이즈 토토관리자가 와이즈 토토에서 사용하는 파일 구조를 검사하는 데 도움이되는 유틸리티 프로그램입니다. 이를 사용하려면에 설명 된 데이터베이스 파일 구조에 익숙해야합니다.PostgreSQL : 문서 : 12 : 69 장. 데이터베이스 물리적 토토 커뮤니티.
이름“와이즈 토토”는 역사적이며 실제로 오해의 소지가 있습니다. 대부분 사용하기 때문에 실제로 테이블의 filenode 번호 (데이터베이스 디렉토리에 표시되는 파일 이름)에 관심이 있습니다. 테이블 OID와 테이블 filenodes의 차이점을 이해하십시오!
와이즈 토토대상 데이터베이스에 연결하고 OID, Filenode 및/또는 테이블 이름 정보를 추출합니다. 데이터베이스 OID 또는 테이블 스페이스 OID를 표시 할 수도 있습니다.
와이즈 토토다음 명령 줄 인수를 수락합니다 :
-ffilenode
-filenode =filenode
filenode가있는 테이블에 대한 정보 표시filenode
.
-i
-인덱스
목록에 인덱스 및 시퀀스 포함.
-oOID
--Oid =OID
OID가있는 테이블에 대한 정보 표시OID
.
-Q
-Quiet
헤더 생략 (스크립팅에 유용).
-s
--- 테이블 스페이스
테이블 스페이스 Oids 표시.
-s
--시스템-오브젝트
시스템 개체 포함 (Information_Schema
, pg_toast
andPG_CATALOG
스키마).
-tTableName_pattern
--table =TableName_pattern
테이블 일치에 대한 정보 표시TableName_pattern
.
-v
-버전
인쇄와이즈 토토버전 및 종료.
-x
-extended
표시된 각 객체에 대한 자세한 정보 : 테이블 스페이스 이름, 스키마 이름 및 OID.
-?
-help
도움말 표시와이즈 토토명령 줄 인수 및 종료
와이즈 토토연결 매개 변수에 대한 다음 명령 줄 인수를 수락합니다 :
-d데이터베이스
-dbname =데이터베이스
연결할 데이터베이스.
-hhost
-host =호스트
Database Server의 호스트.
-hhost
Database Server의 호스트. 이 매개 변수의 사용은입니다.감가 상각와이즈 토토 12.
-p포트
-포트 =포트
데이터베이스 서버 포트.
-u사용자 이름
--username =사용자 이름
사용자 이름으로 연결합니다.
특정 테이블을 표시하려면 사용하여 표시 할 테이블을 선택하십시오-o
, -f
및/또는-t
. -o
OID를 가져와-f
Filenode를 복용하고-t
테이블 이름을 가져옵니다 (실제로는Like
패턴이므로와 같은 것을 사용할 수 있습니다.foo%
). 원하는만큼 이러한 옵션을 사용할 수 있으며 리스팅에는 옵션과 일치하는 모든 객체가 포함됩니다. 그러나 이러한 옵션은에 제공된 데이터베이스에 객체 만 표시 할 수 있습니다.-d
.
당신이 아무것도주지 않는다면-o
, -f
또는-t
, 그러나-d
-d
. 이 모드에서-s
and-i
옵션 제어 내용을 제어합니다.
당신이주지 않으면-d
또한 데이터베이스 OID 목록이 표시됩니다. 또는 당신은 줄 수 있습니다-s
테이블 스페이스 목록을 얻으려면
pghost
pgport
PGUSER
기본 연결 매개 변수.
이 유틸리티, 대부분의 다른 유틸리티와이즈 토토유틸리티는 또한 지원하는 환경 변수를 사용합니다libpq(참조PostgreSQL : 문서 : 12 : 33.14. 환경 토토 핫).
와이즈 토토비유 시스템 카탈로그가있는 실행중인 데이터베이스 서버가 필요합니다. 그러므로 치명적인 데이터베이스 부패 상황에서 복구하는 데 제한된 사용이 제한적입니다.
$ # 어쨌든이 데이터베이스 서버는 무엇입니까? $ 와이즈 토토 모든 데이터베이스 : 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