ユーザ用ツール

サイト用ツール


database:oracledb9i:backup_restore

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
database:oracledb9i:backup_restore [2023/05/19 16:40] mikotodatabase:oracledb9i:backup_restore [2023/07/14 16:20] (現在) – [SQLファイルを使う場合] mikoto
行 1: 行 1:
 ====== バックアップとリストア ====== ====== バックアップとリストア ======
 [[database:oracledb|一つ上へ]] [[database:oracledb|一つ上へ]]
 +
 +===== 物理バックアップとリストア =====
  
 アーカイブログモードかどうかの確認 アーカイブログモードかどうかの確認
行 7: 行 9:
 </code> </code>
  
 +==== オフラインバックアップを行う ====
 +データベースを止める
 +<code sql>
 +shutdown immediate
 +</code>
 +データファイル、REDOログ、制御ファイルをコピーする。
 +<code>
 +$ cp /app/oracle/oradata/ORCLnn/system01.dbf /bk/
 +$ cp /app/oracle/oradata/ORCLnn/undotbs01.dbf /bk/
 +$ cp /app/oracle/oradata/ORCLnn/sysaux01.dbf /bk/
 +$ cp /app/oracle/oradata/ORCLnn/users01.dbf /bk/
 +$ cp /app/oracle/oradata/ORCLnn/control.ctl /bk/
 +$ cp /app/oracle/oradata/ORCLnn/redo01.log /bk/
 +$ cp /app/oracle/oradata/ORCLnn/redo02.log /bk/
 +$ cp /app/oracle/oradata/ORCLnn/redo03.log /bk/
 +</code>
 +
 +データベースを再開する
 +<code sql>
 +startup
 +</code>
 +
 +==== オンラインバックアップを行う ====
 バックアップすべきファイルの場所を表示する バックアップすべきファイルの場所を表示する
 <code sql> <code sql>
行 14: 行 39:
 SELECT MEMBER FROM V$LOGFILE; SELECT MEMBER FROM V$LOGFILE;
 </code> </code>
 +
 +オンラインバックアップモードに変更
 +<code sql>
 +alter database begin backup;
 +</code>
 +データファイル、REDOログをコピーする。
 +
 +制御ファイルについては以下のコマンドでバックアップする。
 +<code sql>
 +ALTER DATABASE BACKUP CONTROLFILE TO '/bk/control.ctl';
 +ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
 +</code>
 +
 +オンラインバックアップモードを解除する。
 +<code sql>
 +alter database end backup;
 +</code>
 +
 +==== リストア ====
 +データベースを停止する
 +<code sql>
 +shutdown immediate
 +</code>
 +
 +データファイル、制御ファイル、REDOファイルをリストアする。
 +ただし、データの破損などの場合は制御ファイルとREDOログをリストアしない。前の状態までしか戻せなくなる。
 +
 +DBをマウント状態まで起動、リカバリを実行してオープン状態まで起動する。
 +<code sql>
 +startup mount
 +recover database;
 +alter database open;
 +</code>
 +
 +===== 論理バックアップとリストア =====
 +
 +まずは移行対象ユーザーのオブジェクトを確認する
 +<code sql>
 +select object_name, object_type
 +from dba_objects
 +where owner='user'
 +order by object_name;
 +</code>
 +あるいは対象のユーザーにスイッチして確認
 +<code sql>
 +conn user/pass
 +select object_name, object_type
 +from user_objects;
 +</code>
 +
 +ユーザーのデフォルト表領域を確認するには
 +<code>
 +select tablespace_name from dba_segments where owner = 'schema_name'
 +</code>
 +
 +===== リストア手順 =====
 +まず、オブジェクトなどを初期化するためにスキーマを削除する
 +<code sql>
 +drop user 'user_name' cascade;
 +</code>
 +''cascade''オプションを付与すると、スキーマの削除と共に関連するオブジェクトを削除してくれる。
 +次に、スキーマを再作成する。その際、デフォルトの表領域を設定しておく。またはスキーマの作成後に割り当てる。
 +<code sql>
 +create user username identified by password default tablespace tbs_name;
 +</code>
 +<code sql>
 +alter user username default tablespace tbs_name;
 +</code>
 +<code>
 +imp userid=username/password@connect_string file=backup_file.dmp full=y ignore=y log=logfile.log
 +</code>
 +
 +^オプション^説明^
 +|userid|ユーザーID/パスワード@サービス名を設定する。|
 +|file|ダンプファイルのパスを指定|
 +|full|フルインポートかどうか。y/n|
 +|ignore|エラーがあっても処理を続行するかどうか。続行(y)/中止(n)|
 +|log|ログファイルの出力先を指定|
 +|commit|y/n 指定することでコミットを確定できる。|
 +
 +==== SQLファイルを使う場合 ====
 +<code>
 +sqlplus "sys/change_on_install as sysdba" @/path/to/sqlfile
 +imp userid='system/manage as sysdba' fromuser='FROMUSER' touser='TOUSER' commit=y file=/path/to/dmp log=/path/to/log
 +</code>
 +
 +<file | drop_and_create.sql>
 +DROP USER <user_name> CASCADE;
 +CREATE USER <user_name> IDENTIFIED BY <password> DEFAULT TABLESPACE <tbsp_name>;
 +GRANT UNLIMITED TABLESPACE TO <user_name>;
 +GRANT DBA TO <user_name>;
 +GRANT CONNECT TO <user_name>;
 +GRANT RESOURCE TO <user_name>;
 +QUIT;
 +</file>
 +
database/oracledb9i/backup_restore.1684482032.txt.gz · 最終更新: 2023/05/19 16:40 by mikoto