ユーザ用ツール

サイト用ツール


database:oracledb9i:backup_restore

バックアップとリストア

物理バックアップとリストア

アーカイブログモードかどうかの確認

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ログファイルの出力先を指定
commity/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_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;
database/oracledb9i/backup_restore.txt · 最終更新: 2023/07/14 16:20 by mikoto