• ベストアンサー

DB容量の確認方法

Oracle初心者です。 DBの全容量や今利用している容量(データが蓄積された分)や 残ってる容量などを確認したいのですが、 どのような方法が適切なのでしょうか? ネットなどで見ても、今ひとつよく分からなかったので 質問させて頂きました。よろしくお願いします。

  • Oracle
  • 回答数1
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • mototaker
  • ベストアンサー率100% (7/7)
回答No.1

DBの容量は、意外と分かりやすいものです でも、Enterprise ManagerなどのGUIをつかよりも、 SQL を使ってコマンドで調べてみましょう ◆ お答えします まず、DBのデータは、ファイルに格納されています ASMのケースもありますが、まずは、通常のファイルシステムの 場合でお答えします DB容量は、 [______________________________________] まず、このように全部で格納でいるファイルを作ります。 そのファイルを、データファイル といいます。 そのデータファイルをまとめた入れ物が テーブルスペースといいます。日本語では、表領域です。 そして、その表領域に、テーブルを作成して、行を格納します [■■■■■■__________________________] このように格納されます。(イメージ図です) この時、2つの尺度があります。 1つ目は、 データファイルがまとまった表領域のサイズがどれくらいで、 その内、どれくらの割合を使われているか *これは、あとどれくらいで満杯になるかが分かります [■■■■■■__________________________] であれば、30%ぐらいでしょうか・・・ 2つ目は、 データファイルがまとまった表領域の中で 既に使用済みのテーブルの、空き具合は、どうなっているのか? *これは、どれくらい、無駄に使っているのかが分かります 実際の現場では、1つ目の確認だけをやれば まず大丈夫です ◆ では、実際にやってみましょう データファイルがまとまった表領域のサイズがどれくらいで、 その内、どれくらの割合を使われているかを求めるSQL文 select ddf.TABLESPACE_NAME, ddf.BYTES, ddf.BYTES-DFS.BYTES "BYTES_USED", round(((ddf.BYTES-dfs.BYTES)/ddf.BYTES)*100,2) "PERCENT_USED", dfs.BYTES "BYTES_FREE", round((1-((ddf.BYTES-dfs.BYTES)/ddf.BYTES))*100,2) "PERCENT_FREE" from (select TABLESPACE_NAME, sum(BYTES) bytes from dba_data_files where autoextensible='NO' group by TABLESPACE_NAME) ddf, (select TABLESPACE_NAME, sum(BYTES) bytes from dba_free_space group by TABLESPACE_NAME) dfs where ddf.TABLESPACE_NAME=dfs.TABLESPACE_NAME order by ((ddf.BYTES-dfs.BYTES)/ddf.BYTES) desc 実行結果 列の意味 TABLESPACE_NAME 表領域の名前 BYTES       表領域のサイズ BYTES_USED     表領域の使用済みサイズ PERCENT_USED    使用済みの割合 BYTES_FREE    まだ使えるサイズ WHERE句の意味 where autoextensible='NO' これは、データファイルの空きが0になったら、 自動拡張するかどうかです。これが、NOなので 今回は自動拡張しないものを、SELECTしています TABLESPACE_NAME BYTES BYTES_USED PERCENT_USED BYTES_FREE ------------------------------ ---------- ---------- ------------ ---------- PERCENT_FREE ------------ APPS_TS_SEED 3126853632 3061055488 97.9 65798144 2.1 APPS_TS_TX_DATA 5956042752 5764939776      96.79 191102976 3.21 SYSAUX 497745920 468385792 94.1 29360128 5.9 APPS_TS_TX_IDX 8112570368 7470710784 92.09 641859584 7.91 今回のサンプルでは、 どれも90%を超えているので、これから表領域のサイズを広げる必要がありますね・・・ 表領域を広げるには、   データファイル自体のサイズを広げる   新たに別のデータファイルを追加する などがあります。 Your DBA MOTO:TAKER

evaag777
質問者

お礼

ご丁寧なご説明、どうもありがとうございました。

関連するQ&A

  • Android DBデータ確認方法について

    こんばんわ。 Androidの勉強をしています。 現在、DBの使用法について勉強をしています。 サンプルをもとにプログラムを作ってDBへの保存は出来ました。 DDMSで確認済みです。 この作成したDBのデータ(中身)を確認したいのですが、どのようにしたらよいのでしょうか。 ネットを参考に「PupSQLite」を利用して確認しようと思いデスクトップへファイルの保存をしようとしたのですがエラーとなり保存ができず確認できませんでした。 他に確認する方法はありますでしょうか。 お手数ですが、アドバイスをお願いいたします。

    • ベストアンサー
    • Java
  • DBの容量について

    mysqlに大量のデータを毎日、取り込んでいるのですが、昨日から処理が遅くなり、今日はmysqlに入ることもできなくなりました。ODBCでテーブルをリンクして、データをある程度、削除したら入れるようになったのですが、1つのデータベースに対して、最大容量が決まっているのでしょうか? (PC自体の容量に空きはあります) もし、DBを作成する際に容量を指定できたり、広げたり、こうするとよい などの対処方法がありましたら、教えてください。

  • Postgresqlとoracleとのデータのやり取りでよい方法はありませんか?

    はじめまして、質問をさせていただきます。 2週間前からコストダウンのため、Windowsサーバであった 支店DBをLinux+Postgresqlに変更しています。 本社DB(Windows+oracle)とほかの支店DB(Linux+Postgresql) とのデータのやり取りをするのに何か良い方法はありませんか? 今のところ、JDBCを利用する方法を検討しています。 なにぶん初心者なので、ご迷惑をおかけしますがよろしくお願いします。 以上

  • MySQL/DBサーバって、MySQL/DBクライアントみたいなものりますか?

    Linux+Apache+MySQLでサイト構築を検討しています。 MySQL/DBって、ORACLE8で言うところの、 いわゆる「Net8クライアント」のようなものってあります? 実は、今まで、NT+MS-SQLServer7でサイト構築してたのですが、 Linuxで再構築することとなっちゃいました。 で、MS-SQLServer7だったら、クライアントPCから、 GUIを使って、データベースのデータを簡単に変更することができます。 しかし、LinuxではMS-SQLServerは使えないので、じゃぁ、ORACLEって手もありますね。 そこで、ORACLEだったら、Net8があるので、多分、 上記のような使い方もできると思うのですが、 ORACLEは、導入コストが高すぎるので、却下されてしまいました。 で、Linux+MySQLにしようかと・・・。 しかし、サーバ機にLinux+MySQL/DBを構築するのはいいのですが、 Windowsなどのクライアントから、ORACLEでいうNet8でODBCのような接続で、 Microsoft-Accessなどを使って、データベースのデータを編集させたいんです。 よろしくお願いします!

  • DB接続とネット環境

    OS:WinXPPro オラクル10G DB オラクルはあまり詳しくなく、勉強中の初心者です。 環境は1台のPCにOracle10G DB、クライアントをインストールして利用。 オラクル10GをインストールしてDBも作成しました。 その後、DBは利用できましたが、ネット環境が使えなくなりました。 IPアドレスの関係でネットが利用できない(CATV利用でIPアドレスが自動取得しか利用できない)と思われます。 TCP/IPの設定でIPアドレスを入力してオラクル環境を利用しています。 ネット環境もオラクル環境を利用するにはどうすれば良いでしょうか? よろしくお願いします。

  • DB(oracle)のフルバック容量について

    DBのフルバックアップ容量(Solaris)について質問です。要件としては、 次のとおりです。 ・毎日フルバックアップを採取する ・ディスク上に最新の7日分を保存する そこで、バックアップ領域として必要なディスク量を知りたいのですが、なにか 基準値のようなものはありますでしょうか。データ量によって変わってくると は思いますが、例えば100GBのデータをフルバックアップしたら約何GBに なるとかいったおおざっぱな数字でかまいません。教えてください。 よろしくお願いします。

  • ハードディスクの容量を確認したいのです。

    初心者ですので教えてください。 今使っているパソコンはウインドウXPです。 ハードディスクの容量の確認や、現在どのくらい(何%)が使用されているか、また、その空き容量を増やしたい場合はパソコンでどういう操作をしたらいいですか? 今使用済みの容量を減らしたい時は(保存しているデータを削除すれば解決しますか?)「ハードデスクの容量がいっぱいです」と表示が出たため、宜しくお願いいたします。

  • 別DBのデータをスマートに利用したい

    別DBのデータを扱う場合、Oracle同士であれば普通DatabaseLinkという使い道があるかと思いますが・・・別製品のDBの場合調べたところやはりDatabaseLinkのような機能はないようだということがわかりました。 元データがOracleにあるとして別DBのデータをキーで一致させたデータのうち特定条件に適合したものをOracle側に反映させるといったことを検討しています。 なにかいい方法はないでしょうか? よろしくお願いいたします。 (別DB・・・種類が多いのです。対象は、次の6種類です。 MySQL、PostgreSQL、SQLServer、DB2、HiRDB、Symfoware)

  • Oracle8 DBをCSV出力したい

    Oracle8 WorkGroup Serverをインストールしています。 DBをCSV出力したいのですが、初心者でも簡単にできる方法があれば教えてください。

  • リアルタイムに他のDBにデータを反映させる方法

    現在、リアルタイムに自DBから他DBへのデータを反映させる仕組みを Oracle10gSE(Oracle10gSEone)で探しております。 OS:RedhatLinux4 ES Oracle:Oracle10.2.0.1.0SE (Oracle10gEEなら、レプリケーション機能を使って実現できそう かなとは思いますがライセンスまた私のスキルが足りないため 無理です。) 今考えていますのは Oracleのマテリアライズド・ビューを使って一定の間隔 (10秒毎、1時間毎、1日毎)でリフレッシュする方法です。 ●自Oracle ->  他Oracle ただ、自Oracle内のテーブルは50テーブル近く存在し、 レコードの件数ももっとも多いテーブルで 200万近くに及びます。(しかもカラム数は200・・・) DBサーバへの負荷も考慮し、高速リフレッシュを使うところは 使いたいと思っておりますが、この自Oracleは 他のシステムのDBもバッチプログラム、マテビュー等々で 使っているため、なるべくシンプルにしたいです。 (更新頻度が多いため、MVログを安易に作成したくありません) 設計を見直す上でも、テーブルのデータを他のDBのテーブルへ リアルタイムに(近く)反映させる方法はありませんでしょうか。 Oracleに限らず、さまざまな意見を聞けると大変ありがたいです。 よろしくお願いいたします。