와이즈 토토 — a에서 OID 및 파일 노드를 확인합니다.포스트그레SQL데이터 디렉토리
와이즈 토토 [옵션...]
oid2이름은 관리자가 와이즈 토토에서 사용하는 파일 구조를 검사하는 데 도움이 되는 유틸리티 프로그램입니다. 이를 사용하려면 다음에서 설명하는 데이터베이스 파일 구조를 잘 알아야 합니다.PostgreSQL : 문서 : 12 : 69 장. 데이터베이스 물리적 토토 커뮤니티.
이름“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이름또한 연결 매개변수에 대해 다음 명령줄 인수를 허용합니다.
-d데이터베이스--dbname=데이터베이스연결할 데이터베이스.
-h호스트--호스트=호스트데이터베이스 서버의 호스트.
-H호스트데이터베이스 서버의 호스트. 이 매개변수의 사용은 다음과 같습니다.지원 중단됨현재와이즈 토토 12.
-p포트--포트=포트데이터베이스 서버의 포트.
-U사용자 이름--사용자 이름=사용자 이름연결할 사용자 이름.
특정 테이블을 표시하려면 다음을 사용하여 표시할 테이블을 선택하십시오.-o, -f및/또는-t. -oOID를 가져옵니다.-f파일 노드를 취하고-t테이블 이름을 사용합니다(실제로는좋아요패턴이므로 다음과 같은 것을 사용할 수 있습니다.foo%). 이러한 옵션을 원하는 만큼 사용할 수 있으며 목록에는 옵션과 일치하는 모든 개체가 포함됩니다. 그러나 이러한 옵션은 다음과 같이 지정된 데이터베이스의 개체만 표시할 수 있습니다.-d.
당신이 아무것도 주지 않는다면-o, -f또는-t하지만 기부하세요-d, 이름이 다음과 같은 데이터베이스의 모든 테이블이 나열됩니다.-d. 이 모드에서는-S그리고-i옵션은 나열되는 항목을 제어합니다.
당신이 포기하지 않는다면-d또는 데이터베이스 OID 목록이 표시됩니다. 또는 당신이 줄 수 있습니다-s테이블스페이스 목록을 가져옵니다.
PGHOSTPG포트PGUSER기본 연결 매개변수.
이 유틸리티는 대부분의 다른 유틸리티와 마찬가지로와이즈 토토유틸리티는 다음에서 지원하는 환경 변수도 사용합니다.libpq(참조PostgreSQL : 문서 : 12 : 33.14. 환경 토토 핫).
와이즈 토토손상되지 않은 시스템 카탈로그를 갖춘 실행 중인 데이터베이스 서버가 필요합니다. 따라서 이는 치명적인 데이터베이스 손상 상황에서 복구하는 데 제한적으로만 사용됩니다.
$ # 그런데 이 데이터베이스 서버에는 무엇이 들어있나요?
$ 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