• ベストアンサー
  • 困ってます

10gのバックアップ方法とリストア方法 一括・個別

oracle10gで、データベースのバックアップを行いたいのです。 初めてで心配なのでお知恵を貸してください。 1 丸ごとバックアップ PostgreSQLでいう pg_dumpのようなもの。 2 テーブル毎(順序も含めて)にSQLで吐いたもの。   この場合、表やビュー、順序など全てをsqlplusで定義やデータを見ることが可能でしょうか?また、sql形式でファイル化する方法などもです。 要は、他のマシンにあるオラクルDBのデータを全て別のマシンに移したいのですが、一括方法と、表や順序など個別で細分化して移すファイルが巨大にならないようにできる方法など知りたいです。

共感・応援の気持ちを伝えよう!

  • Oracle
  • 回答数2
  • 閲覧数396
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

>1 丸ごとバックアップ PostgreSQLでいう pg_dumpのようなもの exp:データを独自形式でエクスポートする imp:expで抽出したデータをインポートする というツールが標準で付いています。 コマンドラインについては exp, imp とだけ入力して実行するとヘルプが出てきます。 例)exp system/xxxx full=y file=xxx.dmp log=xxx.log consistent=y とすると全データベースデータをエクスポートできます。 オプションで tablesやownerを調べると表毎、ユーザー毎にエクスポートできます。 >2 テーブル毎(順序も含めて)にSQLで吐いたもの create table 文などがほしいのですよね? ディクショナリを問い合わせれば可能ですが、ソースを表示するツールも多数存在しますので一度探してみると良いでしょう。 私は「SI Object Browser」を愛用しています。 30日間のトライアル版をダウンロードできるので使ってみてはどうでしょう。

共感・感謝の気持ちを伝えよう!

その他の回答 (1)

  • 回答No.1

1.データベースクローニングといった技術がありますが、   非常に高度な設定が必要なためあまりオススメできません。   Enterprise EditionであればOEMというバンドル製品を使えば   GUIベースで行うことができるかと思います。   それより一番簡単なのはデータベースを停止した状態で   UNIXの場合であれば/opt/oracle配下をガッツリコピーして   しまうことだと思います。(もちろんデータファイルもinit.ora   も/opt/oracle配下にあることが前提です) 2.OracleにはExport/Import機能というものがありますので   それを使えばテーブル単位でバックアップ/リストアが行えます。   ただし、Exportを行ってもバイナリファイルとして保存される   ので開いてもある程度しか内容が把握できません。   (もちろんテキストエディタで編集などはできません)   表や順序などの定義を見たいのであれば   sqlplusでOracleにログインしてdesc {table_name}とすれば   表定義は表示されます。順序やビューなどの場合は   ディクショナリと呼ばれる管理用ビューにアクセスする必要   があります。   

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 一部のレコードをバックアップ・リストアしたい。

    PostgreSQLでデータベースのバックアップは pg_dumpで良いのですが、特定テーブルの一部のレコードを抽出したデータをMySQLに移したいのですが、どのようにすれば良いのでしょうか? Postgresqlは Linuxで7.2.3 MySQLは WindowsXPで 5.0.11 です。

  • バックアップとリストアについて

    Mysqlのデータバックアップを mysqldump -u root -x --all-databases > dump.sql のように行っております。 私の場合、すべてのデータベースをバックアップしたいので、allにしてます。 リストアの際には mysql -u root -p < dump.sql としております。 しかし、データベースが復元されません。 allとしてバックアップを行ったのに、データベースが全く復元されません。 何か特別な方法があるのでしょうか?

    • ベストアンサー
    • MySQL
  • Postgresqlで8GB超えのバックアップ

    こんにちは。 Postgresqlでpg_dumpで8GBを超えるとバックアップに失敗してしまいます。 不要なデータを削除しても8GBを超えているようでバックアップに失敗してしまいます。 どうにかバックアップを取る手段はありますでしょうか? すいませんが、知っている方、ご教授お願いします。 環境は、Windwos2003Server、Powergres6(PostgreSQL8.X系)です。 宜しくお願いします。

  • Linux環境下(CentOS)でPostgreSQL8.1の自動バックアップを取りたいのですが、四苦八苦しています。

    Linux環境下(CentOS)でPostgreSQL8.1の自動バックアップを取りたいのですが、四苦八苦しています。 rootユーザにてcrontab -eで【10 0 * * * pg_dump -U postgres hogeraradb > /home/backupuser/backup.sql】と入力し保存しました。 しかし実際にバックアップが取れているのかなど確認の方法もわからず困っています。 思いつく範囲ではpg_dumpの設定も必要なのかも知れないのですが、どの画面で何を入力すればいいのかもわかりません。 何かアドバイスをよろしくお願いします。

  • PostgreSQLの差分バックアップに関して

    よろしくお願いいたします。 ■経緯 Linuxサーバ & PostgreSQL 8.4.9 において開発を行っております。 データベースを日時でバックアップをとる案件がございまして、 pg_dumpでは差分バックアップができないことが判りました。 ネット等でも検索したところ、 「 PostgreSQL 8.0 以降では、前回バックアップした内容からの差分バックアップ、 特定時間までの巻き戻しが可能です 」 との書き込みも見つけたのですが、具体的な方法を調べてみたのですが、 目的の情報に、いまだたどり着いておりません。 ■質問内容 当然、私どもの使用するデータの種別、内容、に寄るところではありますが PostgreSQLを差分バックアップを取る場合に、 一般的にどのようなバックアップツール?(WAL?pg_rman?)を使用して、 差分を抽出しているのか、参考に教えていただけますでしょうか。 また具体的なコマンドの使用方法等を解説しているページなどもありましたら よろしくお願いいたします。

  • バックアップとリストアについてのエラー

    最近、DBを勉強し始めた、初心者です。 現在、pg_dumpコマンドでデータをバックアップして、リストアしようと試みています。DBのデータ容量が小さいうちは、問題なくリストアできるのですが、DBのデータの容量が大きくなってくると、「No buffer space available」とエラー表示されます。 この問題を解決するには、どうしたらいいのでしょうか? 詳しい方がいましたら、教えて下さい。 よろしくお願いします。

  • pg_dumpallのバックアップとリストアについて

    現在当方、postgresql-8.2.11にてDBサーバを構築しております。 そろそろ、マシン自体も古くなってきたので載せ替えをしようと 試みているのですが、うまく行きません。。。 新しいマシンにはpostgresql-8.4.0をインストールしました。 旧サーバからpg_dumpallにて全データをダンプして新サーバへ リストアしたのですが、serverlogに下記のログが出てきて、 pgadmin3の様な接続ソフトから接続できません。 WARNING: nonstandard use of \\ in a string literal at character 70 HINT: Use the escape string syntax for backslashes, e.g., E'\\'. ERROR: column c.reltriggers does not exist at character 240 STATEMENT: SELECT c.oid, obj_description(c.oid), c.relhasoids as hasoids, n.nspname AS schemaname, c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, t.spcname AS "tablespace", c.relhasindex AS hasindexes, c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers, c.relacl, c.reltuples, ((select count(*) from pg_inherits where inhparent = c.oid) > 0) as inhtable FROM ((pg_class c LEFT JOIN pg_namespace n ON ((n.oid = c.relnamespace))) LEFT JOIN pg_tablespace t ON ((t.oid = c.reltablespace))) WHERE (c.relkind = 'r'::"char") リストア後は正常にデータベースもできていますし、テーブルの内容も 問題なくリストアされているようでした。 ダンプされたファイルも秀丸にて確認してみましたが問題ないようでした。 どなたか何か情報をお持ちであれば教えてください。 よろしくお願いいたします。

  • PostgreSQL バッチでバックアップ

    PostgreSQL 8.4に関する質問です。 サーバ:Linux、PostgreSQL 8.4 クライアント:Windows 7 Windowsマシンから、バッチファイルでサーバ上のPostgresのバックアップを取りたいのですが、 以下のコマンドをバッチファイルに記述して実行すると、 「パスワード:」というプロンプトが出て処理が止まってしまいます。 pg_dump.exe -h [DBサーバのIP] -U [ユーザ名] -F custom -b -v -f "C:\test.backup" "test" パスワードを入れればバックアップはできるのですが、 パスワードの入力まで完全自動化するにはどうすればいいでしょうか。 Linux上のPostgresはSSL接続のみ許可するようになっています。 Windowsのタスクで毎日バックアップする運用を想定しています。

  • Passwordを設定したPostgreSQLのバックアップなどができ

    Passwordを設定したPostgreSQLのバックアップなどができない。 PostgreSQLのバックアップを行おうとしているのですがバックアップSHELLを実行 するとパスワードを聞いてきます。 pg_dump -Udbuser -s DBANME > /DbBkup/dbbackup.out そこで実行ユーザのHOMEディレクトリに.pgpassを置き localhost:*:DBNAME:dbuser:dbpass と登録し、実行しところ、これでもパスワードを聞いてきます。 最終的にはcronで実行したいのですが、解決方法がわかりません。 お願いいたします。

  • トランザクションログからの復旧について。

    PostgreSQLのバックアップについて質問です。 24時間稼動しているPostgreSQLのバックアップを1日1度pg_dumpコマンドでとって、復旧時に使用しておりますが、完全に復元する方法がわかりません。 例えば1日の途中にデータが破損した場合、前日までのデータは pg_dumpで復旧できますが、その後のデータが破損する直前までを WALを使ってどのように復旧させるのでしょうか。 /usr/local/pgsql/data/pg_xlog/の直下に"000000070000006D"という名前のファイルはあるのですが、そのログを使ってRedoするやり方がわかりません。 更にトランザクションログのチェックポイントを1時間に1回と設定したりしてログ日付・時間の名称で保存の後次の日には新しい名称で ログをとりたいのですが、そのようなことはできるのでしょうか。