ブログ - Oracle 11g Express Edition on Red Hat 7.6 その6 オンラインバックアップ
Oracle 11g Express Edition on Red Hat 7.6 その6 オンラインバックアップ
- カテゴリ :
- ハウツー
- ブロガー :
- ujpblog 2019/4/10 22:31
Oracle 11g EXを稼働したまま,データのバックアップを取ってみる.
バックアップ対象データの確認.
オンラインバックアップを実行するには,アーカイブログモードで運用されている必要があるので,現在状態を確認する.
SQLPlusで接続.
アーカイブログモードで運用されているか確認する.
systemユーザだと権限が無かった.SYSDBAユーザで接続する.
アーカイブログモードを確認する.
No Archive Modeなので,アーカイブログモードになってない.
別の方法でも確認できる.
ここでも,NO ARCHIVEモードが確認できた.
アーカイブログモードに変更する
アーカイブログモードに変更してみる.
database must be mounted in this instance and not open in anyは,日本語では「データベースはこのインスタンスでマウントし,どのインスタンスでもオープンしないでください」とでるらしい.
データベースを停止したのちに,マウントした後に設定変更を実行し,データベースをオープンする必要がある.
これは,現在のままだとマルチユーザ接続ができるので,停止した後,シングルユーザモードで接続して,設定変更し,利用を再開するためにデータベースをオープンすることとなる.
まずは,Oracleをシャットダウン.
マウントしながら起動.
インスタンスが起動したので,データベースの設定を変更.
変更されたか確認.
データベースをオープンさせる.
もう1つの手段で,設定状態を確認する.
アーカイブログの出力先
オンラインバックアップ中は,アーカイブログに更新情報が記録されるわけだけれど,その状態を確認してみる.
アーカイブログのログスイッチを発生させて,ログファイルを確認してみる.
SQLPlusから,!(感嘆符)を使ってコマンドラインに移動してファイルを確認する.
ファイルの一覧を.
3回ログスイッチを実行したので,3つファイルがあることを確認.
テーブルを作成して,データベースに変更を加えてみる.
テーブルを作成したので,ログスイッチを実行してファイルを確認する.
新しくアーカイブログファイルが増えたことがわかる.
ファイル名とログのシーケンス番号を突き合わせてみる.
アーカイブログのファイル名がo1_mf_1_9002_gbfblm45_.arcとなっていて,Oldest online log sequenceが9002となっているので,値が一致している.
オンラインバックアップを行う
アーカイブログモードになったので,オンラインバックアップを実行する.オンラインバックアップは表領域のファイルをOSコマンドでコピーする.
オンラインバックアップモードに変更.
データベースデータをコピーする.
今回はとりあえずなので,その場でディレクトリを作成しcpコマンドでバックアップを行う.
バックアップが完了したので,バックアップモードを終了する.
制御ファイルのバックアップ
Oracleのの構成情報を持っている制御ファイル(コントロールファイル)をバックアップする.
まずは,コントロールファイルの場所を確認.
データベース形式になったのか...
バックアップを指定したディレクトリに行う.
traceファイルのバックアップを実施.
traceファイルの場所を確認.
それぞれファイルが作成されたか確認する.
まずはコントロールファイル.
まったく同じものが存在している.
次に,トレースファイル.
alert_XE.logファイルを確認.
トレースファイル名がわかったので,ファイルの中を確認.
トレースファイルがあれば,コントロールファイルを再生可能.
最後に,アーカイブログを作成しておいて,これをバックアップして退避しておくことで,バックアップからデータを戻すことができるようになる.
バックアップ対象データの確認.
-bash-4.2$ pwd🆑
/u01/app/oracle/oradata/XE🈁
-bash-4.2$ ls -la🆑
total 9753824
drwxr-xr-x 2 oracle dba 4096 Apr 1 14:51 .
drwxr-x--- 3 oracle dba 4096 Jan 21 17:28 ..
-rw-r----- 1 oracle dba 10493952 Apr 4 22:59 APP_idx_tbs.dbf
-rw-r----- 1 oracle dba 8602918912 Apr 4 22:59 APP_tbs.dbf
-rw-r----- 1 oracle dba 10240000 Apr 5 09:37 control.dbf
-rw-r----- 1 oracle dba 807411712 Apr 5 09:35 sysaux.dbf
-rw-r----- 1 oracle dba 387981312 Apr 5 09:30 system.dbf
-rw-r----- 1 oracle dba 11542528 Apr 4 22:57 temp.dbf
-rw-r----- 1 oracle dba 52436992 Apr 5 09:35 undotbs1.dbf
-rw-r----- 1 oracle dba 104865792 Apr 4 22:59 users.dbf
-bash-4.2$
SQLPlusで接続.
-bash-4.2$ sqlplus system/manager@xe🆑
SQL*Plus: Release 11.2.0.2.0 Production on Fri Apr 5 09:37:27 2019
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL>
SQL> archive log list🆑
ORA-01031: insufficient privileges🈁
SQL>
SQL> quit🆑
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
-bash-4.2$ sqlplus / as sysdba🆑
SQL*Plus: Release 11.2.0.2.0 Production on Fri Apr 5 09:39:57 2019
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL>
SQL> archive log list;🆑
Database log mode No Archive Mode🈁
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 8998
Current log sequence 8999
SQL>
別の方法でも確認できる.
SQL> select log_mode from v$database;🆑
LOG_MODE
------------
NOARCHIVELOG🈁
SQL>
アーカイブログモードに変更する
アーカイブログモードに変更してみる.
SQL> alter database archivelog;🆑
alter database archivelog
*
ERROR at line 1:
ORA-01126: database must be mounted in this instance and not open in any
instance🈁
SQL>
データベースを停止したのちに,マウントした後に設定変更を実行し,データベースをオープンする必要がある.
これは,現在のままだとマルチユーザ接続ができるので,停止した後,シングルユーザモードで接続して,設定変更し,利用を再開するためにデータベースをオープンすることとなる.
まずは,Oracleをシャットダウン.
SQL> shutdown immediate🆑
Database closed.🈁
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup mount🆑
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2233344 bytes
Variable Size 788532224 bytes
Database Buffers 272629760 bytes
Redo Buffers 5541888 bytes
Database mounted.🈁
SQL>
SQL> alter database archivelog;🆑
Database altered.
SQL>
SQL> archive log list;🆑
Database log mode Archive Mode🈁
Automatic archival Enabled🈁
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 8998
Next log sequence to archive 8999
Current log sequence 8999
SQL>
SQL> alter database open;🆑
Database altered.🈁
SQL>
SQL> select log_mode from v$database;🆑
LOG_MODE
------------
ARCHIVELOG🈁
SQL>
アーカイブログの出力先
オンラインバックアップ中は,アーカイブログに更新情報が記録されるわけだけれど,その状態を確認してみる.
SQL> show parameter log_archive_dest;🆑
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string
log_archive_dest_10 string
log_archive_dest_11 string
log_archive_dest_12 string
log_archive_dest_13 string
log_archive_dest_14 string
log_archive_dest_15 string
log_archive_dest_16 string
log_archive_dest_17 string
log_archive_dest_18 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_19 string
log_archive_dest_2 string
log_archive_dest_20 string
log_archive_dest_21 string
log_archive_dest_22 string
log_archive_dest_23 string
log_archive_dest_24 string
log_archive_dest_25 string
log_archive_dest_26 string
log_archive_dest_27 string
log_archive_dest_28 string
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_29 string
log_archive_dest_3 string
log_archive_dest_30 string
log_archive_dest_31 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_10 string enable
log_archive_dest_state_11 string enable
log_archive_dest_state_12 string enable
log_archive_dest_state_13 string enable
log_archive_dest_state_14 string enable
log_archive_dest_state_15 string enable
log_archive_dest_state_16 string enable
log_archive_dest_state_17 string enable
log_archive_dest_state_18 string enable
log_archive_dest_state_19 string enable
log_archive_dest_state_2 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_20 string enable
log_archive_dest_state_21 string enable
log_archive_dest_state_22 string enable
log_archive_dest_state_23 string enable
log_archive_dest_state_24 string enable
log_archive_dest_state_25 string enable
log_archive_dest_state_26 string enable
log_archive_dest_state_27 string enable
log_archive_dest_state_28 string enable
log_archive_dest_state_29 string enable
log_archive_dest_state_3 string enable
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_30 string enable
log_archive_dest_state_31 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
SQL>
SQL> alter system switch logfile;🆑
System altered.
SQL> alter system switch logfile;🆑
System altered.
SQL>alter system switch logfile;🆑
System altered.
SQL>
SQL> !🆑
bash-4.2$ cd /u01/app/oracle/fast_recovery_area/XE🆑
bash-4.2$
bash-4.2$ ls -laRh🆑
.:
total 16K
drwxr-x--- 4 oracle dba 4.0K Apr 5 09:58 .
drwxr-x--- 3 oracle dba 4.0K Jan 21 17:28 ..
drwxr-x--- 3 oracle dba 4.0K Apr 5 09:58 archivelog
drwxr-x--- 2 oracle dba 4.0K Jan 21 17:28 onlinelog
./archivelog:
total 12K
drwxr-x--- 3 oracle dba 4.0K Apr 5 09:58 .
drwxr-x--- 4 oracle dba 4.0K Apr 5 09:58 ..
drwxr-x--- 2 oracle dba 4.0K Apr 5 09:58 2019_04_05
./archivelog/2019_04_05:
total 13M
drwxr-x--- 2 oracle dba 4.0K Apr 5 09:58 .
drwxr-x--- 3 oracle dba 4.0K Apr 5 09:58 ..
-rw-r----- 1 oracle dba 13M Apr 5 09:58 o1_mf_1_8999_gbfb1bps_.arc
-rw-r----- 1 oracle dba 2.0K Apr 5 09:58 o1_mf_1_9000_gbfb1hwf_.arc
-rw-r----- 1 oracle dba 1.0K Apr 5 09:58 o1_mf_1_9001_gbfb1lw7_.arc
./onlinelog:
total 101M
drwxr-x--- 2 oracle dba 4.0K Jan 21 17:28 .
drwxr-x--- 4 oracle dba 4.0K Apr 5 09:58 ..
-rw-r----- 1 oracle dba 51M Apr 5 09:58 o1_mf_1_g4c0p796_.log
-rw-r----- 1 oracle dba 51M Apr 5 10:03 o1_mf_2_g4c0p7hq_.log
bash-4.2$
テーブルを作成して,データベースに変更を加えてみる.
bash-4.2$ sqlplus scott/tiger@xe🆑
SQL*Plus: Release 11.2.0.2.0 Production on Fri Apr 5 10:05:18 2019
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> create table testtable_deleteme (aa int);🆑
Table created.
SQL> desc testtable_deleteme;🆑
Name Null? Type
----------------------------------------- -------- ----------------------------
AA NUMBER(38)
SQL>
bash-4.2$ exit🆑
exit
SQL> alter system switch logfile;🆑
System altered.
SQL> !🆑
bash-4.2$ cd /u01/app/oracle/fast_recovery_area/XE🆑
bash-4.2$ ls -laRh🆑
.:
total 16K
drwxr-x--- 4 oracle dba 4.0K Apr 5 09:58 .
drwxr-x--- 3 oracle dba 4.0K Jan 21 17:28 ..
drwxr-x--- 3 oracle dba 4.0K Apr 5 09:58 archivelog
drwxr-x--- 2 oracle dba 4.0K Jan 21 17:28 onlinelog
./archivelog:
total 12K
drwxr-x--- 3 oracle dba 4.0K Apr 5 09:58 .
drwxr-x--- 4 oracle dba 4.0K Apr 5 09:58 ..
drwxr-x--- 2 oracle dba 4.0K Apr 5 10:07 2019_04_05
./archivelog/2019_04_05:
total 14M
drwxr-x--- 2 oracle dba 4.0K Apr 5 10:07 .
drwxr-x--- 3 oracle dba 4.0K Apr 5 09:58 ..
-rw-r----- 1 oracle dba 13M Apr 5 09:58 o1_mf_1_8999_gbfb1bps_.arc
-rw-r----- 1 oracle dba 2.0K Apr 5 09:58 o1_mf_1_9000_gbfb1hwf_.arc
-rw-r----- 1 oracle dba 1.0K Apr 5 09:58 o1_mf_1_9001_gbfb1lw7_.arc
-rw-r----- 1 oracle dba 144K Apr 5 10:07 o1_mf_1_9002_gbfblm45_.arc🈁
./onlinelog:
total 101M
drwxr-x--- 2 oracle dba 4.0K Jan 21 17:28 .
drwxr-x--- 4 oracle dba 4.0K Apr 5 09:58 ..
-rw-r----- 1 oracle dba 51M Apr 5 10:07 o1_mf_1_g4c0p796_.log
-rw-r----- 1 oracle dba 51M Apr 5 10:07 o1_mf_2_g4c0p7hq_.log
bash-4.2$
ファイル名とログのシーケンス番号を突き合わせてみる.
bash-4.2$ exit🆑
exit
SQL> archive log list;🆑
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 9002🈁
Next log sequence to archive 9003
Current log sequence 9003
SQL>
オンラインバックアップを行う
アーカイブログモードになったので,オンラインバックアップを実行する.オンラインバックアップは表領域のファイルをOSコマンドでコピーする.
オンラインバックアップモードに変更.
SQL> alter database begin backup;🆑
Database altered.
SQL>
SQL> !🆑
bash-4.2$ pwd🆑
/u01/app/oracle/oradata/XE🈁
bash-4.2$ ls -la🆑
total 9753824
drwxr-xr-x 2 oracle dba 4096 Apr 1 14:51 .
drwxr-x--- 3 oracle dba 4096 Jan 21 17:28 ..
-rw-r----- 1 oracle dba 10493952 Apr 5 10:19 APP_idx_tbs.dbf
-rw-r----- 1 oracle dba 8602918912 Apr 5 10:19 APP_tbs.dbf
-rw-r----- 1 oracle dba 10240000 Apr 5 10:20 control.dbf
-rw-r----- 1 oracle dba 807411712 Apr 5 10:19 sysaux.dbf
-rw-r----- 1 oracle dba 387981312 Apr 5 10:19 system.dbf
-rw-r----- 1 oracle dba 11542528 Apr 5 09:54 temp.dbf
-rw-r----- 1 oracle dba 52436992 Apr 5 10:19 undotbs1.dbf
-rw-r----- 1 oracle dba 104865792 Apr 5 10:19 users.dbf
bash-4.2$
bash-4.2$ mkdir backup🆑
bash-4.2$ cp *.dbf backup/.🈁
bash-4.2$
bash-4.2$ exit🆑
SQL> alter database end backup;🆑
Database altered.
SQL>
制御ファイルのバックアップ
Oracleのの構成情報を持っている制御ファイル(コントロールファイル)をバックアップする.
まずは,コントロールファイルの場所を確認.
SQL> col name for a40🆑
SQL> select * from v$controlfile;🆑
STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- ---------------------------------------- --- ---------- --------------
/u01/app/oracle/oradata/XE/control.dbf NO 16384 624
SQL>
バックアップを指定したディレクトリに行う.
SQL> alter database backup controlfile to '/u01/app/oracle/oradata/XE/backup/control.bak'🆑
2 ;🆑
Database altered.🈁
SQL>
SQL> alter database backup controlfile to trace;🆑
Database altered.🈁
SQL>
SQL> show parameter diagnostic_dest;🆑
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest string /u01/app/oracle
SQL>
まずはコントロールファイル.
bash-4.2$ ls -la /u01/app/oracle/oradata/XE/backup/control.bak🆑
-rw-r----- 1 oracle dba 10240000 Apr 5 10:33 /u01/app/oracle/oradata/XE/backup/control.bak
bash-4.2$ ls -la /u01/app/oracle/oradata/XE/backup/control.dbf🆑
-rw-r----- 1 oracle dba 10240000 Apr 5 10:23 /u01/app/oracle/oradata/XE/backup/control.dbf
bash-4.2$
次に,トレースファイル.
bash-4.2$ ls -lat /u01/app/oracle/diag/rdbms/xe/XE/trace/|head🆑
total 2291148
-rw-r----- 1 oracle dba 2075 Apr 5 10:45 XE_mmon_57519.trc
-rw-r----- 1 oracle dba 179 Apr 5 10:45 XE_mmon_57519.trm
-rw-r----- 1 oracle dba 9022 Apr 5 10:44 XE_dbrm_57503.trc
-rw-r----- 1 oracle dba 478 Apr 5 10:44 XE_dbrm_57503.trm
-rwxrwxr-x 1 oracle dba 3568695 Apr 5 10:34 alert_XE.log🈁
-rw-r----- 1 oracle dba 7093 Apr 5 10:34 XE_ora_57599.trc
-rw-r----- 1 oracle dba 101 Apr 5 10:34 XE_ora_57599.trm
-rw-r----- 1 oracle dba 956 Apr 5 10:07 XE_arc0_57657.trc
-rw-r----- 1 oracle dba 70 Apr 5 10:07 XE_arc0_57657.trm
bash-4.2$
bash-4.2$ tail -n 16 /u01/app/oracle/diag/rdbms/xe/XE/trace/alert_XE.log🆑
Fri Apr 05 10:19:59 2019
alter database begin backup
Completed: alter database begin backup
Fri Apr 05 10:32:50 2019
ALTER SYSTEM ARCHIVE LOG
Fri Apr 05 10:32:50 2019
Thread 1 advanced to log sequence 9004 (LGWR switch)
Current log# 2 seq# 9004 mem# 0: /u01/app/oracle/fast_recovery_area/XE/onlinelog/o1_mf_2_g4c0p7hq_.log
Archived Log entry 5 added for thread 1 sequence 9003 ID 0xab9db495 dest 1:
Fri Apr 05 10:33:51 2019
alter database backup controlfile to '/u01/app/oracle/oradata/XE/backup/control.bak'
Completed: alter database backup controlfile to '/u01/app/oracle/oradata/XE/backup/control.bak'
Fri Apr 05 10:34:13 2019
alter database backup controlfile to trace
Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/xe/XE/trace/XE_ora_57599.trc
Completed: alter database backup controlfile to trace
bash-4.2$
bash-4.2$ head -n 4 /u01/app/oracle/diag/rdbms/xe/XE/trace/XE_ora_57599.trc🆑
Trace file /u01/app/oracle/diag/rdbms/xe/XE/trace/XE_ora_57599.trc
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe
System name: Linux
bash-4.2$
最後に,アーカイブログを作成しておいて,これをバックアップして退避しておくことで,バックアップからデータを戻すことができるようになる.
SQL> alter system archive log current;
System altered.
SQL>