【Oracle19c】RMANバックアップ実行をスケジュール設定する方法【CentOS7・cronで自動化】
Oracle19をアーカイブログモードで運用していて、
バックアップ取得および不要ファイル削除を自動化する方法を探している方へ。
OracleのRMANバックアップをスケジュール化して自動実行する方法を知りたい
Oracle19cデータベースをアーカイブログモードで運用していると、 アーカイブログファイルがどんどん増えていきます。 そのため、定期的にバックアップを取得して、古いアーカイブファイルを削除していかないと、 ディスク使用率が100%になってしまい、最悪の場合Oracleデータベースが起動できなくなってしまいます。
OracleのRMANバックアップ取得をスケジュール化して自動実行する方法を紹介します
本記事では、下記の内容を解説します。
- Oracleのバックアップ取得を定期的に実行しなければいけない理由
- RMANでデータベースのバックアップを実行するシェルの書き方
- RMANで不要ファイルを削除するシェルの書き方
- 作成したシェルをcronに登録して定期的・自動的にスケジュール実行する方法
- オラクルデータベースのおススメの勉強法の紹介
この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
- 【Oracle19c】RMANバックアップ実行をスケジュール設定する方法【CentOS7・cronで自動化】
- オラクルデータベースのおススメの勉強法の紹介
Oracleはバックアップ取得を定期的に実行する必要がある
Oracleデータベースをアーカイブログモードで運用しているときは、
RMANでのバックアップ取得を定期的に実行する必要があります。
理由は、定期的にバックアップを取得して古いアーカイブログファイルを削除していかないと、
いずれディスク使用率100%になってしまい、
「ORA-19809・ORA-19804・ORA-19815・ORA-16038」等のエラーでデータベースが起動できなくなってしまうからです。
実際にエラーが起きたときに対処した手順は、以前に以下の記事に書いています。
「ORA-19809・ORA-19804・ORA-19815・ORA-16038」エラーがおきたので、
古いアーカイブログファイルを削除して、さらにRMANバックアップを実行して不要ファイルを削除しました。
RMANでデータベースのバックアップを実行するシェルの書き方
RMANでデータベースのバックアップを実行するスクリプトと、
そのスクリプトを実行するシェルを用意しておきます。
シェルを作成しておくと、毎回、手動でコマンドを書かなくてよいからです。
実際に作成したシェルの内容は以下です。
バックアップを実行するスクリプト「database_backup.rman」
backup database plus archivelog delete all input;
そのスクリプトを実行するシェル「oracle_rman_backup.sh」
#/bin/bash #環境変数設定 export ORACLE_SID=ORCLCDB export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 export NLS_LANG=Japanese_Japan.AL32UTF8 export PATH=$PATH:$ORACLE_HOME/bin #開始日時の取得 datetime=$(date '+%Y%m%d_%H%M%S') #ログファイル名設定 LogDir=/home/oracle/log/rmanlog/ LogFile=backup_database_$datetime.log LogFilePath=$LogDir$LogFile echo $LogFilePath #RMANバックアップ実行 rman target / @/home/oracle/system/shl/database_backup.rman log=$LogFilePath #リターンコード returncd=$? echo $returncd exit $returncd
RMANで不要ファイルを削除するシェルの書き方
RMANで不要ファイルを削除するスクリプトと、
そのスクリプトを実行するシェルを用意しておきます。
シェルを作成しておくと、毎回、手動でコマンドを書かなくてよいからです。
実際に作成したシェルの内容は以下です。
不要ファイルを削除するスクリプト「delete_obsolete.rman」
delete obsolete;
exit
そのスクリプトを実行するシェル「oracle_rman_delete.sh」
#/bin/bash #環境変数設定 export ORACLE_SID=ORCLCDB export ORACLE_BASE=/opt/oracle export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1 export NLS_LANG=Japanese_Japan.AL32UTF8 export PATH=$PATH:$ORACLE_HOME/bin #開始日時の取得 datetime=$(date '+%Y%m%d_%H%M%S') #ログファイル名設定 LogDir=/home/oracle/log/rmanlog/ LogFile=delete_obsolete_$datetime.log LogFilePath=$LogDir$LogFile echo $LogFilePath #RMAN不要ファイル削除実行 rman target / @/home/oracle/system/shl/delete_obsolete.rman log=$LogFilePath #リターンコード returncd=$? echo $returncd exit $returncd
作成したシェルをcronに登録して定期的・自動的にスケジュール実行する方法
作成したシェルをcronに登録して定期的・自動的にスケジュール実行されるようにしておきます。
cronに登録しておくと、スケジュール化された日時に定期的に自動でシェルが実行できるからです。
実際に、cronにシェル実行をスケジュール登録する手順は以下です。
作成したスクリプトとシェルをCentOSサーバのoracleユーザのhomeディレクトリに配置
今回は、/home/oracle/system/shl
に配置しました。
noanacronのインストールおよびanacronの削除
CentOS7は、デフォルトでは「anacron」がインストールされていますが、
厳密な日時指定ができないので、今回は「noanacron」の方をインストールします。
yum install cronie-noanacron
[root@SV-PLUTO ~]# yum install cronie-noanacron 読み込んだプラグイン:langpacks, ulninfo ol7_UEKR5 | 2.5 kB 00:00:00 ol7_latest | 2.7 kB 00:00:00 (1/4): ol7_UEKR5/x86_64/updateinfo | 61 kB 00:00:00 (2/4): ol7_latest/x86_64/updateinfo | 2.7 MB 00:00:03 (3/4): ol7_latest/x86_64/primary_db | 28 MB 00:00:18 (4/4): ol7_UEKR5/x86_64/primary_db | 15 MB 00:00:21 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ cronie-noanacron.x86_64 0:1.4.11-23.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ======================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================================== インストール中: cronie-noanacron x86_64 1.4.11-23.el7 ol7_latest 14 k トランザクションの要約 ======================================================================================================================== インストール 1 パッケージ 総ダウンロード容量: 14 k インストール容量: 396 Is this ok [y/d/N]: y
Downloading packages: cronie-noanacron-1.4.11-23.el7.x86_64.rpm | 14 kB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : cronie-noanacron-1.4.11-23.el7.x86_64 1/1 検証中 : cronie-noanacron-1.4.11-23.el7.x86_64 1/1 インストール: cronie-noanacron.x86_64 0:1.4.11-23.el7 完了しました!
yum remove cronie-anacron
[root@SV-PLUTO ~]# yum remove cronie-anacron 読み込んだプラグイン:langpacks, ulninfo 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ cronie-anacron.x86_64 0:1.4.11-23.el7 を 削除 --> 依存性解決を終了しました。 依存性を解決しました ======================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================================== 削除中: cronie-anacron x86_64 1.4.11-23.el7 @anaconda/7.7 41 k トランザクションの要約 ======================================================================================================================== 削除 1 パッケージ インストール容量: 41 k 上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction 削除中 : cronie-anacron-1.4.11-23.el7.x86_64 1/1 検証中 : cronie-anacron-1.4.11-23.el7.x86_64 1/1 削除しました: cronie-anacron.x86_64 0:1.4.11-23.el7 完了しました!
crontabの編集
ユーザーはoracle
でサーバにログインして、crontabを編集します。(viと同じ要領で編集ができます)
(オプション-e
で編集、-l
で確認ができます)
crontab -e
crontab -l
[oracle@SV-PLUTO ~]$ crontab -l 0 2 * * 0 /home/oracle/system/shl/oracle_rman_backup.sh 0 4 * * 0 /home/oracle/system/shl/oracle_rman_delete.sh
今回は以下のように設定しました。
- 毎週(日曜=0)の午前2時00分に、バックアップのシェルを実行
- 毎週(日曜=0)の午前4時00分に、不要ファイル削除のシェルを実行
RMANログの確認
RMANのログ出力先に指定した、/home/oracle/log/rmanlog
に、確かにログが出力されていました。
Recovery Manager: Release 19.0.0.0.0 - Production on 日 3月 22 02:00:02 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. ターゲット・データベース: ORCLCDB (DBID=2800378676)に接続されました RMAN> backup database plus archivelog delete all input; 2> backupを20-03-22で開始しています (途中省略) Recovery Managerが完了しました。
Recovery Manager: Release 19.0.0.0.0 - Production on 日 3月 22 04:00:01 2020 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. ターゲット・データベース: ORCLCDB (DBID=2800378676)に接続されました RMAN> delete obsolete; (途中省略) Recovery Managerが完了しました。
cronスケジュール実行の結果確認
cronのログも確認します。
/var/log/cron-YYYYMMDD
Mar 22 02:00:01 SV-PLUTO CROND[2551]: (oracle) CMD (/home/oracle/system/shl/oracle_rman_backup.sh) Mar 22 04:00:01 SV-PLUTO CROND[8832]: (oracle) CMD (/home/oracle/system/shl/oracle_rman_delete.sh)
まとめ
OracleのRMANバックアップ取得と不要ファイル削除をするシェルを、
CentOS7のcronに登録することでスケジュール実行する設定ができました
- Oracleのバックアップ取得を定期的に実行しなければいけない
- RMANでデータベースのバックアップを実行するシェルを用意しておく
- RMANで不要ファイルを削除するシェルも用意しておく
- シェルをcronに登録しておけば定期的・自動的にスケジュール実行できる
オラクルデータベースのおススメの勉強法の紹介
私は、某SIerに勤務しながら、入社以来10年以上、オラクルデータベースを使用したシステムに関わる仕事をしています。
オラクルデータベースについて、仕事場以外でも勉強をしたい、おススメの勉強法を知りたい、と考えている方のために、
①おすすめの書籍と、②おすすめのオンライン学習サイト、
を紹介します。
働きながら勉強するための、おススメの書籍とオンラインで学習できるサイトの紹介です
オラクルデータベースの勉強ができるおススメ書籍
朝の通勤時や帰宅時の電車の中や、社外打合せへの移動中などに勉強するなら、やはり書籍が一番だと思います。
Oracleの基本 ~データベース入門から設計/運用の初歩まで
技術エキスパートとして認定されたOracle ACEの渡部亮太さんの書かれた本です。
https://twitter.com/wrcsus4twitter.com
本書では、Oracle初心者/新人エンジニアが押さえておくべき知識とスキルを、現場で活躍するOracleエンジニアたちが、わかりやすく丁寧に解説。
Oracleの使い方はもちろん、データベースの基礎知識から、データ操作のためのSQL、テーブル設計、データベース運用/管理の基礎までしっかり押さえ、実務で使える入門スキルを身につけられます。
Oracleを学びたいすべての人に最適な入門書です。
Oracleの基本 ~データベース入門から設計/運用の初歩まで |
プロとしてのOracleアーキテクチャ入門【第2版】
もう1冊、こちらもOracle ACEの渡部亮太さんの書かれた本です。
本書は、Oracle Databaseのアーキテクチャ(内部構成)について解説した入門書です。 本書の内容を理解することで「Oracleの動作の仕組み」を本質的に理解することができます。 これからOracleを使用する初心者の方から、実際にシステムの開発や運用管理を行っている DBエンジニアやシステムエンジニアの方を対象としています。
プロとしてのOracleアーキテクチャ入門【第2版】(12c、11g、10g 対応) 図解と実例解説で学ぶ、データベースの仕組み (Oracle現場主義) |
オラクルデータベースの勉強ができるオンライン学習サイト
iStudy
オラクルのeラーニングサイトといえば、「iStudy」です。
オラクル関連のいろいろなコースが用意されています。