- Oracle Cloud
- Oracle Database
Oracle CloudWorld 2024視察記
2024年9月ラスベガスで開催された「Oracle CloudWorld 2024」そのハイライトとアシストの注目ポイントをイベント全体の雰囲気とともにお伝えします。
|
この記事は、JPOUG Advent Calendar 2021
の18日目の記事です。
17日目はtomo さんの記事『よくあるオンプレOracleからRDSに移行したDBAの反省文
』でした。DB移行の難しさ、大変さが伝わる臨場感溢れる内容で、非常に参考になります。
事前の検討と検証、大事ですね!
サポートセンターには日々多くのお問い合わせをいただきますが、中でもトラブル対応時には原因追求や対処策を検討するためにログやコマンドの結果などの情報取得をお客様にお願いすることが多々あります。
残念ながら私自身は直接サポート対応をする機会がめっきり減っていますが、調査で依頼することの多い情報についてはテンプレートを作成し、いち早くご連絡を差し上げられるようにしていました。
今回は情報取得テンプレートの中から、トラブル対応の初動時に利用頻度の高かったものを紹介します。「あのログどこにあったっけ?」や、(機会がないことが理想ですが)皆様が運用されているOracle Databaseでトラブルが発生した際にご活用いただけると幸いです。
特にOSの指定がないものはLinuxベースで記載しています。自動診断リポジトリ(ADR)が導入された11gR1より前のバージョンではログの出力先が一部異なりますが、最近は非ADR環境のお問い合わせも少なくなってきましたので割愛します。
※免責事項※
・本記事に記載の内容は筆者個人のメモを抜粋/整形して公開しているものです。本内容について、サポートセンターへのご質問はお受けいたしかねますのでご了承ください。
・本内容は予告なく加筆/修正される可能性があります。
主にエラーに関するお問い合わせをいただいた際に依頼することの多い情報です。特にログ情報などは、問題発生前後も含めて警告やパラメータ変更などの出力有無をすることが多いため、抜粋せずに送っていただくとスムーズな対応が可能です。
<diagnostic_dest>/diag/rdbms/<db_unique_name>/<sid>/trace/alert_<sid>.log <diagnostic_dest>/diag/rdbms/<db_unique_name>/<sid>/trace/<sid>_<process_name>_<pid>.trc
<diagnostic_dest>/diag/rdbms/<db_unique_name>/<sid>/incident/incdir_<incident_number>/*
<diagnostic_dest>/diag/tnslsnr/<hostname>/<listener_name>/trace/listener.log
diagnostic_destの位置は「SQL> show parameter diagnostic_dest」で確認できます。
listener.logはクライアントから接続要求がある度に書き込まれるため非常に肥大化しやすいファイルでしたが、19c以降ではlistener.oraにLOG_FILE_NUM_<listener_name>、LOG_FILE_SIZE_<listener_name>の設定を追加することでローテーションできるようになりました。
エラーや仕様に関するご質問の際に依頼することの多い情報です。初期化パラメータ・ファイルはWindowsと他OSで出力先が異なります。※実際の対応では初期化パラメータの情報は「SQL> show parameter」でご提供いただくことがほとんどです。
・Linux $ORACLE_HOME/dbs/init<sid>.ora $ORACLE_HOME/dbs/spfile<sid>.ora ・Windows %ORACLE_HOME%\database\init<sid>.ora %ORACLE_HOME%\database\spfile<sid>.ora
$ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/tnsnames.ora $ORACLE_HOME/network/admin/sqlnet.ora
各ファイルを正常に読み込めているかの確認は、lsnrctlやtnspingコマンドで行います。
% lsnrctl status <listener_name> % lsnrctl services <listener_name> % tnsping <接続識別子>
Oracle DatabaseのインストールやDBCAでのデータベース作成、パッチの適用に失敗した際に依頼することの多い情報です。$oraInventory のパスは /etc/oraInst.loc 内のinventory_loc で定義されています。
・Linux $oraInventory/logs/installActionsYYYY-MM-DD_HH24-MI-SS%p.log $oraInventory/logs/oraInstallYYYY-MM-DD_HH24-MI-SS%p.log $ORACLE_HOME/install/make.log ・Windows C:\Program Files\Oracle\Inventory\logs\installActionsYYYY-MM-DD_HH24-MI-SS%p.log
$ORACLE_HOME/cfgtoollogs/dbca/trace.log_YYYY-MM-DD_HH24-MI-SS%p $ORACLE_HOME/cfgtoollogs/dbca/<DB_NAME>
$ORACLE_HOME/cfgtoollogs/opatch/opatchYYYY-MM-DD_HH24-MI-SS%p.log
% $ORACLE_HOME/OPatch/opatch lsinventory -detail >> opatch_lsinventory.log
% rpm -qa >> rpm.log
処理パフォーマンスの低下時に依頼することの多い情報です。インスタンス全体のパフォーマンス情報はSTATSPACK/AWRレポートから確認します。
1.perfstatユーザに接続し、spreport.sql を実行 SQL> conn perfstat/<pwd> SQL> @$ORACLE_HOME/rdbms/admin/spreport.sql 2.STATSPACKレポートに含む開始/終了Snap Idを指定 例)12月18日 16:00 - 17:00 のレポートを作成する場合 Listing all Completed Snapshots Snap Instance DB Name Snap Id Snap Started Level Comment ------------ ------------ --------- ------------------ ----- -------------------- v19ee V19EE 1 18 12月 2021 16:00 6 2 18 12月 2021 17:00 6 3 18 12月 2021 18:00 6 4 18 12月 2021 19:00 6 begin_snapに値を入力してください: 1 end_snapに値を入力してください: 2 3.レポートファイル名はそのままEnterを押下 指定したSnap IDを含むファイル名でカレントディレクトリに作成されます report_nameに値を入力してください: パフォーマンス問題が発生していた時間帯と、比較用に前後1時間分をご提供ください たとえば、以下例で17:00-18:00でパフォーマンス問題が発生していた場合、開始/終了Snap Idに 1-2、2-3、3-4を指定し、計3回spreport.sqlを実行します。
1.DBA権限のあるユーザで接続し、awrrpt.sqlを実行 SQL> conn /as sysdba SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.レポートの形式でtextを選択 report_typeに値を入力してください: text 3.スナップショットを一覧表示する日数を指定 例) 2日以内に取得されたスナップショト一覧を表示 num_daysに値を入力してください: 2 4.AWRレポートに含む開始/終了のSnap Idを指定 例)12月18日 16:00 - 17:00 のレポートを作成する場合 Listing the last 2 days of Completed Snapshots Instance DB Name Snap Id Snap Started Snap Level ------------ ------------ ---------- ------------------ ---------- v19ee V19EE 1 18 12月 2021 16:00 1 2 18 12月 2021 17:00 1 3 18 12月 2021 18:00 1 4 18 12月 2021 19:00 1 begin_snapに値を入力してください: 1 end_snapに値を入力してください: :2 5.レポートファイル名はそのままEnterを押下 指定したSnap IDを含むファイル名でカレントディレクトリに作成されます report_nameに値を入力してください: パフォーマンス問題が発生していた時間帯と、比較用に前後1時間分を取得します。 たとえば、17:00-18:00でパフォーマンス問題が発生していた場合、手順4.の開始/終了Snap Idに 1-2、2-3、3-4を指定し、計3回awrrpt.sqlを実行します。
SQL単位で実行計画の情報を見るためにはSTATSPACK/AWR SQLレポートを取得します。
※STATSPACKがレベル6以上で取得されている必要があります 1.perfstatユーザに接続し、sprepsqlt.sql を実行 SQL> conn perfstat/<pwd> SQL> @$ORACLE_HOME/rdbms/admin/sprepsql.sql 2.対象のSQLが実行されていた時間を含む開始/終了Snap Idを指定 例)12月18日 16:00 - 17:00 に実行されていたSQLを対象とする場合 Listing all Completed Snapshots Snap Instance DB Name Snap Id Snap Started Level Comment ------------ ------------ --------- ------------------ ----- -------------------- v19ee V19EE 1 18 12月 2021 16:00 6 2 18 12月 2021 17:00 6 3 18 12月 2021 18:00 6 4 18 12月 2021 19:00 6 begin_snapに値を入力してください: 1 end_snapに値を入力してください: :2 3.対象のSQLのHash Valueを指定 STATSPACKレポート内のOld Hash Valueから確認します。 hash_valueに値を入力してください: 4.レポートファイル名はそのままEnterを押下 指定したHash Valueを含むファイル名でカレントディレクトリに作成されます report_nameに値を入力してください:
1.DBA権限のあるユーザでログインし、awrsqrpt.sqlを実行 SQL> conn sys/as sysdba SQL> @$ORACLE_HOME/rdbms/admin/awrsqrpt.sql 2.レポートの形式でTEXT を指定 Enter value for report_type: text 3.スナップショットを一覧表示する日数を指定 ※「2」を指定すると現在から 2日以内に取得されたスナップショト一覧を表示 Enter value for num_days: 2 4.SQLレポートを出力する開始/終了のスナップIDを指定 begin_snapに値を入力してください: end_snapに値を入力してください: 5.レポート出力するSQL_IDを指定 AWRレポートやV$SQL、V$SESSIONなどから確認します Specify the SQL Id ~~~~~~~~~~~~~~~~~~ Enter value for sql_id: 6.レポートファイル名はそのままEnterを押下 report_nameに値を入力してください:
セッション単位の情報を見るためにはASHを利用します。CTAS(※CREATE TABLE AS SELECT)で別テーブルに抜き出し→EXPDPを送っていただく方法もありますが、確認範囲が広くない場合は「set markup csv on(12.2~利用可)」を使用しCSV形式で送付していただく方がお客様の手間が少ないため、こちらで依頼します。※必要があればSQL*Loader(Express Mode)でインポートします
1.以下を記載したash.sql ファイルを作成 system/set pages 10000 lines 4000 set trims on set markup csv on spool ash.log select * from dba_hist_active_sess_history where sample_time between to_timestamp('21-12-18 10:00:00','YY-MM-DD HH24:MI:SS') and to_timestamp('21-12-18 11:00:00','YY-MM-DD HH24:MI:SS'); spool off 2.スクリプトを実行 % sqlplus @ash.sql > /dev/null
STATSPACK/AWR/ASHレポートの取得方法については、My Oracle Supportにドキュメントがありますので、こちらも参照ください。※AWR/ASHの利用にはEnterprise Edition + Diagnostics Packのライセンスが必要です
Doc ID 1705202.1:STATSPACKでの統計情報の採取方法及びレポートの出力方法について(KROWN:18832)
Doc ID 1726691.1:STATSPACK を使用した実行計画の確認方法(KROWN:83426)
Doc ID 1752159.1:AWR レポートの作成手順と出力される項目について (11g)(KROWN:146855)
Doc ID 1753507.1:AWR の SQL レポート作成手順と出力される項目について (KROWN:149615)
Doc ID 1742219.1:Active Session History(ASH) 情報の取得方法(KROWN:127934)
データベース側のログにOSエラーが確認できる場合や、突然データベースが停止した/起動ができない、パフォーマンスダウンなどのトラブルの際に依頼することの多い情報です。
・Linux /var/log/messages ・Windows 1. 「コントロールパネル」→「管理ツール」から"イベント ビューア"を起動 2. 「Windows ログ」の"システム"と"Application"をそれぞれ右クリックからcsv形式で保存 ・AIX /bin/errpt -a > messages.out syslog(/etc/syslog.conf で出力先が定義されています)
CPU、メモリなどの使用率が高い場合などに依頼することの多い情報です。他のログ情報と突き合わせるために、取得時刻を含めることが重要です。
・Linux % top -b -n 1 >> top.log % ps -elf |awk '{print strftime("%y-%m-%d %H:%M:%S"), $0}' >> ps_elf.log % ps aux |awk '{print strftime("%y-%m-%d %H:%M:%S"), $0}' >> ps_aux.log % vmstat -t 10 6 >> vmstat.log % iostat -t 10 6 >> iostat.log ・Windows DOS> echo %date% %time% & tasklist DOS> typeperf -sc 6 -si 10 "\Process(_Total)\Virtual Bytes" >> typeperf_Virtual_Bytes.log DOS> typeperf -sc 6 -si 10 "\Memory\Committed Bytes" >> typeperf_Committed_Bytes.log DOS> typeperf -sc 6 -si 10 "\Processor(_Total)\%% Processor Time" >> typeperf_Processor_Time.log
パフォーマンス情報は正常時と比較をすることで調査により有用ですので、定期取得されていることが望ましい情報です。OSWatcherBB(ドキュメントID 1509957.1)などを利用されることをおすすめします。
<OSWbb解凍ディレクトリ>/archive/oswiostat/<hostname>_iostat_YY.MM.DD.HH24MI.dat <OSWbb解凍ディレクトリ>/archive/oswmeminfo/<hostname>_meminfo_YY.MM.DD.HH24MI.dat <OSWbb解凍ディレクトリ>/archive/oswmpstat/<hostname>_mpstat_YY.MM.DD.HH24MI.dat <OSWbb解凍ディレクトリ>/archive/oswnetstat/<hostname>_netstat_YY.MM.DD.HH24MI.dat <OSWbb解凍ディレクトリ>/archive/oswprvtnet/<hostname>_prvtnet_YY.MM.DD.HH24MI.dat <OSWbb解凍ディレクトリ>/archive/oswps/<hostname>_ps_YY.MM.DD.HH24MI.dat <OSWbb解凍ディレクトリ>/archive/oswslabinfo/<hostname>_slabinfo_YY.MM.DD.HH24MI.dat <OSWbb解凍ディレクトリ>/archive/oswtop/<hostname>_top_YY.MM.DD.HH24MI.dat <OSWbb解凍ディレクトリ>/archive/oswvmstat/<hostname>_vmstat_YY.MM.DD.HH24MI.dat
OSWatcherのログ・ファイルは1時間単位で分かれています。指定した日付のみログを取得する場合は、以下のようなコマンドを利用します。
% find /opt/oracle/oak/oswbb/archive -name '*21.12.18*' | xargs tar -cvf /tmp/osw_logs_1218.tar % find . -name '*12.18*' -print -exec zip /tmp/osw_logs_1218.zip {} \;
接続エラーやリソース不足など、設定に依存する問題が発生した際に依頼することの多い情報です。
・Linux % cat /etc/hosts ・Windows C:\windows\system32\drivers\etc\hosts
・Linux % cat /etc/sysctl.conf % cat /etc/inittab % cat /etc/ntp.conf % cat /etc/syslog.conf % cat /etc/rsyslog.conf % cat /etc/security/limits.conf
動作不良などの調査でシステムやリソースの状態を確認する際に依頼することの多いコマンドです。
・Linux % ifconfig -a ・Windows DOS> ipconfig /all ・共通 % netstat -a -n % netstat -sn % ping <ホスト名> % nslookup <ホスト名>
・Linux su - # df -ha # df -k # df -i # du -k /u01 | sort -nr | head -n 100 # ls -l <ファイルパス> ・Windows DOS> fsutil volume diskfree C: DOS> dir <ファイルパス>
・Linux % cat /etc/*release % cat /proc/cpuinfo % cat /proc/meminfo ・Windows DOS> systeminfo
・Linux % env >> env.log ・Windows DOS> set >> set.log
実際はテキストファイルに雑多にまとめていた中から調査に必要な箇所だけ切り出し、引数などを調整して利用していたため、ブログにするにあたって分類に思った以上に時間がかかった上に若干ごちゃっとしてしまいました。
有事の際に迅速に情報確認/収集ができるよう、本記事を参考に、皆様が管理されている環境に合わせてまとめていただけますと幸いです。また、今回は記載しませんでしたが21cからデフォルトとなる読み取り専用ORACLE_HOMEの構成では一部ファイルの位置が異なりますのでご注意ください。
本当はサポート対応で依頼することの多いSQL文も記載しようと思っていましたが、こちらも記載すると長尺の巻物が出来上がりそうだったので一旦はログとコマンドだけにしました。需要がありましたら書こうと思いますので、励ましのお便りお待ちしています。
明日は凌直孝さんです。よろしくお願いします。
2021年 18日目
Oracle Databaseのサポート対応で依頼することの多いファイルとコマンド
https://www.ashisuto.co.jp/db_blog/article/jpoug-oracledb-logfiles-command.html
2020年 17日目
Oracle Databaseバージョンアップ後の性能劣化で試したい暫定対処
https://www.ashisuto.co.jp/db_blog/article/jpoug-vup-temp-solution.html
2019年 24日目
【Oracle Database】DMLリダイレクションで一歩進んだ Active Data Guard の使い方(19c新機能)
https://www.ashisuto.co.jp/db_blog/article/20191224_ADG_REDIRECT_DML.html
2019年 20日目
【Oracle Database Cloud】"超"現実的に考える!Oracle CloudへのDB移行ガイド
https://www.ashisuto.co.jp/db_blog/article/20191220_cloud.html
2017年 14日目
Oracle Database 12cR2へのアップグレード後に発生するORA-01017
https://www.ashisuto.co.jp/db_blog/article/201712-ora-01017.html
2016年 9日目
【Oracle Database】2016年にサポートにお問い合わせをいただいたORAエラー TOP5
https://www.ashisuto.co.jp/db_blog/article/2016_oerr_rank.html
2015年 15日目
パフォーマンスダウンを「再現待ち」にしないための準備
https://www.ashisuto.co.jp/db_blog/article/20151215_oracle_pfmdwn.html
|
ビジネスインフラ技術本部 |
■本記事の内容について
本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
2024年9月ラスベガスで開催された「Oracle CloudWorld 2024」そのハイライトとアシストの注目ポイントをイベント全体の雰囲気とともにお伝えします。
OCIで提供されている生成AIサービスとGPUインスタンスを前回の記事「生成AIにGPUが適している理由」で紹介しました。本記事では、GPUインスタンスをデプロイして、インスタンス上でLLM(大規模言語モデル)の動作環境を構築する方法をご紹介します。
前回の記事でお伝えしたとおり、OCVSを構築するとVMwareの複数の機能が利用可能です。 それらの機能の中で、今回はHCXの概要や具体的な機能、OCVSでHCXを利用するメリットなどをお伝えします!