====== バックアップとリストア ======
[[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;