====== バックアップとリストア ====== [[database:oracledb|一つ上へ]] ===== 物理バックアップとリストア ===== アーカイブログモードかどうかの確認 select log_mode from v$database; ==== オフラインバックアップを行う ==== データベースを止める shutdown immediate データファイル、REDOログ、制御ファイルをコピーする。 $ 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/ データベースを再開する startup ==== オンラインバックアップを行う ==== バックアップすべきファイルの場所を表示する SELECT NAME FROM V$DATAFILE; SELECT NAME FROM V$CONTROLFILE; SELECT NAME FROM V$TEMPFILE; SELECT MEMBER FROM V$LOGFILE; オンラインバックアップモードに変更 alter database begin backup; データファイル、REDOログをコピーする。 制御ファイルについては以下のコマンドでバックアップする。 ALTER DATABASE BACKUP CONTROLFILE TO '/bk/control.ctl'; ALTER DATABASE BACKUP CONTROLFILE TO TRACE; オンラインバックアップモードを解除する。 alter database end backup; ==== リストア ==== データベースを停止する shutdown immediate データファイル、制御ファイル、REDOファイルをリストアする。 ただし、データの破損などの場合は制御ファイルとREDOログをリストアしない。前の状態までしか戻せなくなる。 DBをマウント状態まで起動、リカバリを実行してオープン状態まで起動する。 startup mount recover database; alter database open; ===== 論理バックアップとリストア ===== まずは移行対象ユーザーのオブジェクトを確認する select object_name, object_type from dba_objects where owner='user' order by object_name; あるいは対象のユーザーにスイッチして確認 conn user/pass select object_name, object_type from user_objects; ユーザーのデフォルト表領域を確認するには select tablespace_name from dba_segments where owner = 'schema_name' ===== リストア手順 ===== まず、オブジェクトなどを初期化するためにスキーマを削除する drop user 'user_name' cascade; ''cascade''オプションを付与すると、スキーマの削除と共に関連するオブジェクトを削除してくれる。 次に、スキーマを再作成する。その際、デフォルトの表領域を設定しておく。またはスキーマの作成後に割り当てる。 create user username identified by password default tablespace tbs_name; alter user username default tablespace tbs_name; imp userid=username/password@connect_string file=backup_file.dmp full=y ignore=y log=logfile.log ^オプション^説明^ |userid|ユーザーID/パスワード@サービス名を設定する。| |file|ダンプファイルのパスを指定| |full|フルインポートかどうか。y/n| |ignore|エラーがあっても処理を続行するかどうか。続行(y)/中止(n)| |log|ログファイルの出力先を指定| |commit|y/n 指定することでコミットを確定できる。| ==== SQLファイルを使う場合 ==== 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 DROP USER CASCADE; CREATE USER IDENTIFIED BY DEFAULT TABLESPACE ; GRANT UNLIMITED TABLESPACE TO ; GRANT DBA TO ; GRANT CONNECT TO ; GRANT RESOURCE TO ; QUIT;