토토 베이유틸리티 프로그램입니다 관리자가 사용하는 파일 구조를 검사하는 데 도움이 됩니다. PostgreSQL. 이를 활용하려면 다음과 같은 내용을 숙지해야 합니다. 데이터베이스 파일 구조는 다음에 설명되어 있습니다.53장.
참고:이름"토토 베이"역사적이며 실제로 오히려 오해의 소지가 있습니다. 대부분의 경우 사용 시 당신은 정말로 테이블의 파일 노드 번호에 관심을 가질 것입니다 (데이터베이스에 표시되는 파일 이름입니다. 디렉토리). 차이점을 확실히 이해하세요. 테이블 OID와 테이블 파일노드!
토토 베이2이름다음에 연결됩니다. 대상 데이터베이스를 만들고 OID, 파일 노드 및/또는 테이블 이름을 추출합니다. 정보. 데이터베이스 OID를 표시하도록 할 수도 있습니다. 테이블스페이스 OID. 이 프로그램은 다수의 사용자에 의해 제어됩니다. 명령줄 스위치(그림 참조)표 F-13.
표 F-13.토토 베이2이름스위치
| 스위치 | 설명 |
|---|---|
| -o 토토 베이 | OID가 있는 테이블에 대한 정보 표시토토 베이 |
| -f 파일 노드 | filenode가 있는 테이블에 대한 정보 표시파일 노드 |
| -t 테이블 이름_패턴 | 일치하는 테이블에 대한 정보 표시테이블 이름_패턴 |
| -s | 테이블스페이스 토토 베이 표시 |
| -S | 시스템 개체 포함(다음에 있는 개체information_schema, pg_toast그리고pg_catalog스키마) |
| -i | 목록에 색인 및 시퀀스 포함 |
| -x | 표시된 각 개체에 대한 추가 정보 표시: 테이블스페이스 이름, 스키마 이름 및 OID |
| -q | 헤더 생략(스크립팅에 유용함) |
| -d 데이터베이스 | 연결할 데이터베이스 |
| -H 호스트 | 데이터베이스 서버의 호스트 |
| -p 포트 | 데이터베이스 서버의 포트 |
| -U 사용자 이름 | 연결할 사용자 이름 |
특정 테이블을 표시하려면 표시할 테이블을 선택하세요. 사용 중-o, -f및/또는-t. -o토토 베이를 가져옵니다.-f파일 노드를 취하고-t테이블 이름을 사용합니다(실제로는 LIKE 패턴이므로 다음과 같은 것을 사용할 수 있습니다.foo%). 이러한 스위치를 원하는 만큼 사용할 수 있습니다. 당신이 좋아하면 목록에는 다음과 일치하는 모든 개체가 포함됩니다. 스위치 중 하나. 하지만 이 스위치는 다음에서 제공하는 데이터베이스의 개체-d.
당신이 아무것도 주지 않는다면-o, -f또는-t하지만 줘-d, 다음의 모든 테이블이 나열됩니다. 이름이 지정된 데이터베이스-d. 이에 모드,-S그리고-i스위치는 나열되는 항목을 제어합니다.
당신이 주지 않는다면-d어느 쪽이든, 그것은 데이터베이스 OID 목록이 표시됩니다. 또는 다음을 수행할 수 있습니다. 주다-s테이블스페이스를 얻으려면 목록.
$ # 그런데 이 데이터베이스 서버에는 무엇이 들어있나요?
$ 토토 베이2이름
모든 데이터베이스:
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은 또 뭐였죠?
$ 토토 베이2이름
모든 데이터베이스:
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 푸
토토 베이2이름달리기가 필요합니다 손상되지 않은 시스템 카탈로그가 있는 데이터베이스 서버. 그것은 그러므로 재난으로부터의 복구를 위해 제한적으로만 사용됩니다. 데이터베이스 손상 상황.