PostgreSQL バックアップ/リストア

バックアップ

スクリプト形式

pg_dump -Fp (オプション) > (出力先パス)

カスタム形式

pg_dump -Fc > (出力先パス)

共通オプション

テーブル名指定
-t (正規表現)
-t "tbl_*"

クリーンアップ(リストア前削除)
-c

リストア

スクリプト形式

psql < (入力先パス)

カスタム形式

pg_restore -d (db名) (入力先パス)

PostgreSQL コマンド

接続前

接続

psql -d (DB名) -U (ユーザ名) -h (ホスト名) -p (ポート番号)
psql -d testdb -U testuser -h localhost -p 5432

DB一覧

psql -l

外部スクリプト実行

psql (接続情報) -f "\~\test.sql"
接続と同時

接続後

切断

# \q

テーブル一覧

# \d
# \dt

標準出力先

show data_directory;

データベース作成

create database test;
create database test owner user;
create database test encoding 'UTF8' /'SJIS'

ユーザー作成

create user test;

外部スクリプト実行

\i test.sql
パスを"では囲まない

OSコマンド実行

\! ls
\! dir

DBA 診断機能

自己監視アーキテクチャ

dba_adviser1

ADDM

自動データベース診断モニター
Automatic Database Diagnostic Monitor (Diagnostic:診断)
AWRスナップショットに基づいてパフォーマンス診断を行い、結果をEMに表示する。

・一般:DBの状態
・ホストCPU:CPU使用率
DBインスタンスの使用時間、その他プロセスの使用時間
dba_adviser6

パフォーマンス
dba_adviser5

AWR

自動ワークロードリポジトリ Auto Workload Repository
AWRスナップショット(=ある時点のDBのパフォーマンス統計情報)を保存する場所。
SYSAUX表領域内のメモリ領域
↓ で設定する
サーバー > 統計管理 > 自動ワークロード・リポジトリ
dba_adviser4
スナップショット保存(日):8 ※規定
スナップショット間隔(分):60 ※規定
ベースライン
しきい値に用いる特定の時期のスナップショット

メトリック

=監視項目
MMONによって計算される。
ホーム > 関連リンク > すべてのメトリック
dba_adviser2

メトリックのしきい値

メトリックに対して設定する値
しきい値を超えた場合にDBの機能を損なう警告としてアラートを表示する。
ホーム > 関連リンク > メトリックとポリシー設定
dba_adviser3

アラート

しきい値 意味
警告しきい値 この段階で対応する事が望ましい
クリティカルしきい値 「警告しきい値」より深刻な状況である事を通知する為のしきい値

dba_adviser7

サポートワークベンチ

クリティティカルアラート表示

問題の詳細を表示
(以下、日本ではサービス外)
サービスリクエスト作成

Oracleサポートへアップロード

サービスリクエストを実行

インシデントをクローズ

ソフトウェアとサポート > サポート > サポート・ワークベンチ
dba_adviser10

アドバイザ

一覧

関連リンク > アドバイザ・セントラル
dba_adviser8

種類 アドバイザ名 機能
ADDM ADDM ADDM」参照
SQLアドバイザ SQLチューニングアドバイザ SQLチューニングアドバイザ」参照
SQLアクセスアドバイザ SQLアクセスアドバイザ」参照
メモリアドバイザ メモリーアドバイザ DBA インスタンス/メモリアドバイザ」参照
SGAアドバイザ
PGAアドバイザ
共有プールアドバイザ
バッファキャッシュアドバイザ
その他 セグメントアドバイザ セグメントアドバイザ」参照
UNDOアドバイザ UNDO表領域のサイズ設定アドバイスを提示
問い合わせ履歴から見たコスト、UNDO保存期間等から判定
平均リカバリ時間(MTTR) インスタンス障害の回復時間を提示
SQLアドバイザ

アドバイザ名 対象 DML文 機能 自動
SQLチューニングアドバイザ 全SQL文 推奨事項提示
SQL推奨事項実行
SQLプロファイル更新
索引作成
SQLアクセスアドバイザ 指定SQL文 索引作成
マテリアライズドビュー作成
SQLチューニングアドバイザ

dba_adviser13

14

・データソースに対するアドバイスを生成
・自動実行
・SQLプロファイルの作成/変更を自動実装可

データソース

ソース名 内容
トップアクティビティ 過去1時間で最高コストのSQL文
履歴SQL 過去24時間で最高コストのSQL文
SQLチューニングセット 全てのSQL文

SQLプロファイル
問い合わせ文固有の統計情報
問い合わせオプティマイザが問い合わせを実行する際にSQLプロファイルを利用する事で速度向上が見込める

SQLアクセスアドバイザ

・スキーマのチューニングアドバイスを提示
索引、マテリアライズドビューの作成等
・DML文も対象とする(≠SQLチューニングアドバイザ)
・ワークロードを指定して実行する
ワークロード
スキーマにアクセスするSQL文のセット
指定できるワークロードは以下
・現行および最近のSQLアクティビティ
・SQLリポジトリ
・ユーザー定義ワークロード(開発環境等)
データ移動 > アドバイザ・セントラル > SQLアドバイザ > SQLアクセス・アドバイザ
dba_adviser9

セグメントアドバイザ

・セグメントの断片化について改善アドバイスを提示
・セグメント増加に関する統計調査
実行すると表領域(セグメント)中の断片化された未使用領域が固められる。
→セグメントの圧縮

ソフトウェア管理

OracleMetaLink

パッチ ( = Oracleの不備、不具合に対する修正プログラム) を提供
(Oracleの有償サポート契約者のみ)

設定 > パッチ適用設定
dba_adviser11

クリティカルパッチ

ホーム > 一般 > すべてのプロパティ
dba_adviser12

DBA リカバリ

backup2

ステップ

ロールフォワード
REDOログファイルの内容を全て反映
・未コミットの命令も反映される
・UNDOデータも作成される
・一貫性バックアップの場合はコミット内容がデータファイルには反映されているので、
このステップだけでリカバリが完了する。

ロールバック
ロールバックした状態からUNDOデータを用いて未コミットの命令を戻す
→リカバリ完了

種類

リカバリ名 自動/手動 状態
インスタンスリカバリ
(クラッシュリカバリ:RAC環境)
自動実行(SMON)
(データベース異常停止時)
アーカイブREDOログファイル
を使用して
ロールフォワード/ロールバック
が自動で行われる
OPEN
メディアリカバリ 手動実行
(ディスク障害時等)
手動で、
・バックアップファイルをリストア
・ロールフォワード/ロールバック
を行う
MOUNT
フラッシュバック 手動実行
(ユーザー操作ミス時)
フラッシュバック」参照 OPEN

メディアリカバリオプション

オプション 内容 必要な
バックアップファイル
ON/OFF
ライン
ログ
モード
完全
リカバリ
バックアップ時点からのREDOログファイルの内容を全てリカバリ
(障害発生直前のCOMMIT状態まで)
データの損失無し
・制御ファイル
・データファイル
・アーカイブREDOログファイル
・REDOログファイル
・ON
・OFF
ARCHIVE
ログモード
Point-in-Time
リカバリ
(不完全リカバリ)

指定時刻より前のバックアップを利用して指定時刻までリカバリ
(指定時刻直前のCOMMIT状態まで)
指定時刻から後のデータは失われる
・OFF ARCHIVE
ログモード

リカバリ方法

リカバリ方法 内容
Oracle推奨リカバリ データリカバリアドバイザ」参照
ユーザー指示のリカバリ ユーザー指示のリカバリ」参照
フラッシュリカバリ フラッシュリカバリ」参照

データリカバリアドバイザ

=Oracle推奨リカバリ

【流れ】
DB:障害を検知

ADRへ障害情報格納

データリカバリアドバイザ実行

自動診断リポジトリ
ADR:Automatic Diagnostic Repository
障害情報を格納する為のDB外のディレクトリ構造

可用性 > バックアップ/リカバリ > 管理 > リカバリの実行
em_detareceveryadviser1

アドバイスが表示され、修復を実行できる
em_detareceveryadviser2

フラッシュリカバリ

バックアップ/リカバリ関連ファイルを自動管理する為の領域

種類

機能 内容
フラッシュバック問い合わせ 指定時刻における問い合わせ結果を取得する
フラッシュバックバージョン問い合わせ 指定期間内において、表の全行の履歴を取得する
フラッシュバックトランザクション問い合わせ 指定トランザクションによって実行された変更結果を取得する
フラッシュバック表 表を指定時点へ戻す
(1)フラッシュバック表関連の権限が必要
 「フラッシュバック表実行権限」参照
(2)対照の表の「行の移動」が有効
(3)UNDO表領域に変更前データがある
フラッシュバックドロップ 削除した表を戻す
・ゴミ箱(RECYCLEBIN)内のみ
・SYSTEM表領域内の表削除時はゴミ箱には入らない
フラッシュバックデータベース DBを指定時点まで戻す
(Point-in-Timeリカバリ)

設定

(1)NO ARCHIVELOGモード → ARCHIVELOGモード
(2)アーカイブREDOログの保存先をフラッシュリカバリ領域に
(3)フラッシュリカバリ領域の作成

可用性 > リカバリ設定
instance_recovery

(1)NO ARCHIVELOGモード → ARCHIVELOGモード
(2)アーカイブREDOログの保存先をフラッシュリカバリ領域に
アーカイブREDOログの保存先に「USE_DB_RECOVERY_FILE_DEST」を追加する
media_recovery

(3)フラッシュリカバリ領域の作成
flash_recovery

推奨サイズ
・データファイル完全バックアップ2つ分
・増分バックアップ分
・リカバリに必要なアーカイブREDOログファイル分

実行

フラッシュバック表
Oracle エンタプライズマネージャー使用方法③スキーマ/フラッシュバック表の実行」参照

ユーザー指示のリカバリ
可用性 > リカバリの実行 > ユーザー指示のリカバリ
flash_recovery2
「リカバリの有効範囲」を選択

論理リカバリ

impインポート

≠SQL*Plus
imp (ユーザ名)/(パスワード)
 インポートパス
 file=c:\test.dmp

 インポート元
 fromuser=(スキーマ名)

 インポート先
 touser=(スキーマ名)

 オブジェクト作成時のエラーを無視する
 ignore=y

datapumpインポート

≠SQL*Plus

データベース全体

impdp (ユーザ名)/(パスワード)

 指定ディレクトリからインポート
 directory=(ディレクトリ名)

 指定ファイルをインポート
 dumpfile=(ファイル名)

 DB全体をインポート

 full=y

 表領域

 tablespaces=(表領域名)

 スキーマ

 schemas=(スキーマ名)

 テーブル

 tables=(スキーマ名).(表名)

 データのみインポート
 content=DATA_ONLY

 上書き
 table_exsists_action=REPLACE

 異なるスキーマへ変更

 remap_schema=(エクスポートスキーマ名):(インポートスキーマ名)

 異なる表領域へ変更

 remap_tablespace=(エクスポート表領域名):(インポート表領域名)