アーカイブログモードかどうかの確認
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 指定することでコミットを確定できる。 |
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 <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;