そのため、職場で問題を分析してみると、Oracleで一部のデータファイルを生成したときに、そのデータファイルがファイルシステムでスペースを確保せず、データファイルがあるファイルシステムに移動しましたが、驚くべきことに、sapdata
ファイルls -ltr
はデータファイルを生成するときに指定した重みで表示されますが、aはdu -gs
0.00となっているため、比較のために次の2つのコマンドを実行しました。
ㅏ)
find ./sapdata* -name "temp*" -type f -exec du -gs {} \;
2)
find ./sapdata* -name "temp*" -type f -exec ls -ltr {} \; | awk '{printf ("%.2f\t%s\n", $5/1024/1024/1024,$9)}'
このコマンドはLinuxではなくUnixなので、このように動作することに注意してください。-printf
orは使用できません-h
。使用する必要-g
があり、取得するには1024で分割する必要がありますls
。
最後の結果の出力は最初の結果の出力と同じですが、2番目の結果はの情報を使用しますls -ltr
。
実際にはすべてが大丈夫です。違いを確認し、この問題を解決しようとしていますが、2つの方法でさらに一歩進んでいきたいと思います。
- 両方の結果を混在させ、どのファイルが連続して異なるかを教えてください。
- 2つの結果を混ぜ合わせてモニタリングスクリプトを作成するのに役立つ比較「状態」を取得します。
このコマンドで得られる出力の例は次のとおりです。
A)私に:
15.63 ./sapdata19/temp_1/temp.data1
25.31 ./sapdata20/temp_2/temp.data2
B)私に:
15.63 ./sapdata19/temp_1/temp.data1
0.00 ./sapdata20/temp_2/temp.data2
だから解決策1では、私は次のようなものが欲しい
DU DIFF LS
-------------------------------------------------------- ---------- --------------------------------------------------------
15.63 ./sapdata19/temp_1/temp.data1 OK 15.63 ./sapdata19/temp_1/temp.data1
25.31 ./sapdata20/temp_2/temp.data2 FAILED 0.00 ./sapdata20/temp_2/temp.data2
あるいは、そのように可能であることがわかりますが、ヘッダーは必要ありません。
ソリューション2の場合は、次のようなものが必要です。
Health=50%
Number of Failed=1
Total Number of Datafiles=2
List of Failed=
./sapdata20/temp_2/temp.data2
おそらくBASHスクリプトを使用してあまり問題なく実行できる最後の解決策かもしれませんが、最初の解決策は一行で書きたいので、どうすればいいのかわかりません。私はそこに、おそらくおそらくそこにいると思いますxargs
が、私はわかりません。diff
awk
@roaimaに返信:
du
いいえ、これはとの違いに関する質問ではありませんls
。違いがあることを知っていますが、一般的に違いは意味がありません。これで、Oracleの一時ファイルには意味がある可能性があります。私はDBAではないので、Oracleがどのように機能するのかよくわかりませんがbrtools
。要点は、100G sapdata FS
/oracle/SID/sapdata1
(SAPインスタンス用のoracle)があると仮定することです。 25Gのデータファイルを2つ追加すると、50Gが使用され、50Gが使用sapdata1
可能にsapdata
なり、それぞれ20Gの一時ファイルが2つ追加されます。したがって、sapdata1には90Gの使用スペースがありますが、見つけることができる各ファイルの合計で表される50Gの使用スペースがあり、一時ファイルが使用されていない場合、残りdu
のファイルサイズは1024K(空)ファイルサイズになります。 「こんにちは。50Gの空き領域があります。メインテーブルスペースに2つの25Gデータファイルを追加できます」と言ってdf -Ph
これを追加します。ここで問題はOracleです。実際に表スペースにスペースがないことを理解してもよろしいですか?一時ファイルの重みがDFに表示されないため、FSですか?私が見るには、その人は知りませんし、2つの追加データファイルを追加するようにします。このとき、FSには使用可能な0Gデータファイルが4つあり、FSスペースを占有しない20G一時ファイルが2つあります。 aの検索結果を追加すると、
du
lsの検索結果を追加すると合計100Gになります。 、総量は100Gになり、100G FSでは140Gになります。これは、Oracleデータベースが実際にこれらの一時ファイルを使用しようとしたときに実行できず、失敗したり、一時ファイルのサイズを残りのスペースに合わせて自動的に調整することを意味します。わかりませんが、制御しないと失敗し、本番環境で失敗することはお勧めできません。
Oracleはこれらの一時ファイルをすばやく作成するためにスペースを割り当てずに作成しますが、私の考えでは、これは単純な混乱ではなくいくつかの問題を引き起こす可能性があります。私の英語力が最高でない場合は申し訳ありません。
@Paul_pedant 申し訳ありません。これがLinuxではなくUnixであることを指摘するのを忘れました。 unix findはまだ存在しません
-print
。とにかくfindを-printf
使ってこれを短くすることができますが、-print
私はそれを使いたいですawk
。ハハ。