ホームページ >php教程 >PHP开发 >Oracle テーブルスペースのクエリと操作方法

Oracle テーブルスペースのクエリと操作方法

高洛峰
高洛峰オリジナル
2017-01-06 13:28:341502ブラウズ

1つ。クエリ
1. oracle テーブルスペースの使用状況をクエリ
select b.file_id ファイルID、
b.tablespace_name テーブルスペース、
b.file_name 物理ファイル名、
b.bytes 総バイト数、
(b.bytes-sum (nvl(a.bytes,0))) Used,
sum(nvl(a.bytes,0)) Remaining, sum(nvl(a.bytes,0))/(b.bytes)*100 残りの割合
からdba_free_space a,dba_data_files b
a.file_id=b.file_id
b.tablespace_name,b.file_name,b.file_id,b.bytes でグループ化
b.tablespace_name で並べ替え
2. Oracle システム ユーザーのデフォルトのテーブル スペースをクエリします。および一時テーブルスペース
selectdefault_tablespace,temporary_tablespace from dba_users
3. 単一テーブルの使用状況をクエリする
selectsegment_name,bytes from dba_segments ここで、segment_name = 'RE_STDEVT_FACT_DAY' および owner = USER
RE_STDEVT_FACT_DAY はクエリするテーブルの名前です
4. すべてのユーザー テーブルの上位 30 件の使用量をクエリします。
select * from (selectsegment_name,bytes from dba_segments where owner = USER order by bytes desc ) where rownum 5. 現在のユーザーのデフォルトの使用量をクエリします。テーブルスペース状況
select tablespacename,sum(totalContent),sum(usecontent),sum(sparecontent),avg(sparepercent)
from
(
SELECT b.file_id as id,b.tablespace_name as tablespacename,b.bytes as totalContent, (b .bytes-sum(nvl(a.bytes,0))) as usecontent,sum(nvl(a.bytes,0)) as sparecontent,sum(nvl(a.bytes,0))/(b.bytes )* 100 as sparepercent
FROM dba_free_space a,dba_data_files b
WHERE a.file_id=b.file_id および b.tablespace_name = (username = user の dba_users からdefault_tablespace を選択)
b.tablespace_name,b.file_name,b.file_id でグループ化,b .bytes
)
GROUP BY tablespacename
6. ユーザーテーブルスペースのテーブルをクエリします
select * from user_tables
================== ===== ============================================ ===== =====
1. テーブルスペースの作成
CREATE TABLESPACE テスト
DATAFILE 'c:/oracle/oradata/db/test01.dbf' SIZE 50M
UNIFORM SIZE 1M #指定された領域サイズは 128k です。指定されていない場合、領域のデフォルトのサイズは 64k
または
CREATE TABLESPACE test
DATAFILE 'c:/oracle/oradata/db/test01.dbf' SIZE 50M
MINIMUM EXTENT 50K EXTENT MANAGEMENT LOCAL
DEFAULT STORAGE (Initial 50K NEXT) 50K MAXEXTENTS 100 PC TINCREASE 0);
dba_tablespaces から新しく作成されたテーブルスペースの情報を表示できます
2. UNDO テーブルスペースを作成します
CREATE UNDO TABLESPACE test_undo
DATAFILE 'c:/oracle/oradata/db/test_undo.dbf'サイズ 50M
UNDO テーブルスペースの EXTENT はローカル管理で構成されており、作成時に SQL ステートメントで使用できるのは DATAFILE 句と EXTENT MANAGEMENT 句のみです。
ORACLE では、データベースにいつでも 1 つの復元テーブルスペースのみを割り当てることができます。つまり、1 つのインスタンス内に複数の復元テーブルスペースが存在できますが、アクティブにできるのは 1 つだけです。 ALTER SYSTEM コマンドを使用して、復元された表スペースに切り替えることができます。
SQL> ALTER SYSTEM SET UNDO_TABLESPACE = test_undo;
3. 一時表スペースを作成します
CREATE TEMPORARY TABLESPACE test_temp
TEMPFILE '/oracle/oradata/db/test_temp.dbf'
システムの現在のデフォルトの一時表スペースを表示します
select * from dba_properties where property_name like 'DEFAULT%'
システムのデフォルトの一時テーブルスペースを変更する
データベースのデフォルトの一時テーブルスペースを変更する
4. テーブルスペースをオフラインにする
ALTER TABLESPACE test
誤って削除された場合
ALTER TABLESPACE ゲーム テスト FOR RECOVER
2. テーブル スペースをオンラインにします
ALTER DATABASE DATAFILE 3 をオフラインにします。データ ファイルをオンラインにします
ALTER DATABASE DATAFILE 3 ONLINE; 5. テーブル スペースを読み取り専用にします
ALTER TABLESPACE テストを READ ONLY にします
5. テーブルを削除します。 space
DROP TABLESPACE test INCL ING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
DROP TABLESPACE テーブルスペース名 [INCL ING CONTENTS [AND DATAFILES] [CASCADE CONSTRAINTS]]
1. INCL ING CONTENTS 句はセグメント
2 を削除するために使用されます。データファイルを削除するために使用されます
3. CASCADE CONSTRAINTS 句は、すべての参照整合性制約を削除するために使用されます

6. 拡張テーブルスペース
最初にテーブルスペースの名前とそれが属するファイルを確認します
tablespace_name、file_id、file_name、を選択します
round(bytes/(1024 *1024),0) total_space
dba_data_files から
tablespace_name で並べ替える
1. データ ファイルを追加します
ALTER TABLESPACE テスト
ADD DATAFILE '/oracle/oradata/db/test02.dbf' SIZE 1000M
2. データ ファイル サイズを手動で増加します
ALTER DATABASE DATAFILE 'c:/oracle/oradata/db/test01 .dbf'
RESIZE 100M;
3. データ ファイルを自動的に拡張するように設定します
ALTER DATABASE DATAFILE 'c:/oracle/oradata/db/test01.dbf'
AUTOEXTEND ON NEXT 100M
MAXSIZE 200M; dba_tablespace から設定します v$datafile でテーブルスペース情報を確認し、v$datafile で対応するデータファイル情報を確認します
========================= ======= ========================================== =======
テーブルスペース scgl を作成
データファイル 'E:ORACLEPROD T10.1.0ORADATAORCLscgl2.dbf'
サイズ 50m
自動拡張
次の 50m 最大サイズ 20480m
エクステント管理ローカル
テーブルスペース test_data を作成
ロギング
データファイル 'E :ORACLEPROD T10.1.0ORADATAORCLuser_data. dbf'
サイズ 50m
次の 50m 最大サイズ 20480m
エクステント管理ローカル;
デフォルトのテーブルスペース scgl
一時テーブルスペース scgl_temp;
一時ファイル 'E:ORACLEPROD T10.1 .0ORADATAORCLuser_temp.dbf'
一時表領域 scgl_temp を作成します
tempfile 'E:ORACLEPROD T10.1.0ORADATAORCLscgl_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
エクステント管理ローカル
grant connect,リソース、dba から scgl へ。 oracle create table Space sys user in cmd DBA としてログインします:
CMD に sqlplus /nolog と入力します
次に
conn / as sysdba
//一時表領域を作成します
一時表領域 user_temp を作成します
tempfile 'D:oracleoradataOracle9iuser_temp.dbf'
サイズ 50m
autoextend on
next 50m maxsize 20480m
エクステント管理 local;
//データテーブルスペースを作成
create tablespace test_data
logging
datafile 'D:oracleoradataOracle9iuser_data.dbf'
size 50m
autoextend on
next 50m 最大サイズ 20480m
ローカルのエクステント管理;
// ユーザーを作成し、テーブルスペースを指定します
create user username はパスワードで識別されます
default tablespace user_data
temporary tablespace user_temp;
テーブルスペースの使用状況をクエリします
SELECT UPPER(F.TABLESPACE_NAME) "テーブルスペース名",
D.TOT_GROOTTE_MB "Tableスペース サイズ (M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "使用済みスペース (M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99' ) || '%' "使用率",
F.TOTAL_BYTES "空き領域 (M)",
F.MAX_BYTES "最大ブロック (M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024) * 1024)、2) TOTAL_BYTES、
ROUND(MAX(BYTES) / (1024 * 1024)、2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F、
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD) .BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1
テーブルスペースの空き領域を問い合わせる
select tablespace_name,
count(*) as extends,
round(sum(bytes) / 1024 / 1024, 2) as MB,
sum(blocks) as block
from dba_free_space
group by tablespace_name
-- 合計容量をクエリします。テーブルスペースの数
select tablespace_name, sum(bytes) / 1024 / 1024 as MB
dba_data_files から
tablespace_name でグループ化
テーブルスペースの使用量をクエリ
total.tablespace_name,
round(total.MB, 2) as Total_MB,
round (total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB / total.MB) * 100, 2) '%' as Used_Pct
from (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_free_space
group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
group by tablespace_name) total
where free.tablespace_name = total.tablespace_name;
-- ----------------------------------------------- --- --------------------------------------------------- --- -----------------------
1. テーブルスペースの作成: テーブルスペース テスト データファイル '/u01/test.dbf' サイズ 10M 均一サイズ 128K を作成します
#デフォルトで領域サイズは128k、ブロックサイズは8Kを指定します
#ビッグファイルテーブルスペース create bigfile tablespace big_tbs datafile '/u01/big_tbs.dbf ' size 100G
2.建非标標準表showparameter db alter system set db_2k_cache_size=10M create tablespace test datafile '/u01/test.dbf' size 10M blocksize 2K unique size 128k
#常见错误
SQL>システムセット db_2k_cache_size=2M を変更します。 alter system set db_2k_cache_size=2M 行 1 でエラーが発生しました: ORA-02097: 指定された値が無効であるためパラメータを変更できません ORA-00384: キャッシュを拡張するにはメモリが不足しています
#解决
SQL>システムセット sga_max_size=400M スコープ=spfile を変更します。 SQL>即時にシャットダウンします。 SQL>起動SQL>システムセット db_2k_cache_size=10M を変更します。システムが変更されました。 
3.查看区大小与块大#区大小 conn y / 123 create table t(inumber) tablespace test; t 値 (10) に挿入し、user_segments からバイト/1024 を選択します (segment_name=upper('t');)。 
#块大小 パラメータブロックを表示(默认64K)
#非標準表空のブロックサイズ SQL> v$dbfile から * を選択; SQL> v$datafile から名前、ブロックサイズ、ステータスを選択します。 SQL> file#=14 の v$datafile から block_size を選択します。 
4. コンテンツとデータファイルを含むテーブルスペースのテストを削除します
5. テーブルスペース:#查データ据文 select * from v$dbfile; #すべての表空間 select * from v$tablespace; 
#表空のデータファイル select file_name,tablespace_name from dba_data_files; 
6.UNDO 表空の構築 UNDO 表領域 UNDOTBS01 データファイル '/u01/undoTBS01.dbf' サイズ 5M を作成します。 
#新しく構築されたundoテーブル空間への切り替え alter system set undo_tablespace=undotbs01; 
7. 構築時にテーブルスペースを作成します 一時テーブルスペース temp_data 一時ファイル '/u01/temp.db' サイズ 5M; bigfile 一時テーブルスペース bigtem 一時ファイル '/u01/bigtemp.db' サイズ 5M を作成します。 
8.変更表空间状態
(0.)查看状態
#表空间状態态 select tablespace_name,block_size,status from dba_tablespaces; 
#データ文件状態 v$datafile から名前、ブロックサイズ、ステータスを選択します。 
(1.)表空间脱机alter tablespace test offline
#如果意外删除了データ文件 alter tablespace test offline for Recovery
(2.)表空间脱机alter tablespace test online
(3.)data据置文件脱机select * v$dbfile から;データベース データファイル 3 をオフラインで変更します
(4.)データファイル 3 を回復します。データベース データファイル 3 をオンラインで変更します。 
(5.)テーブルスペーステストを変更する読み取り専用です
(6.)テーブルスペーステストを変更する読み取り書き込みのみを使用します。 
9. 表空間の展#最初先見表空間の名前と付属ファイルおよび空を選択 select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; #三种展方法
1.alter tablespace test add datafile '/u01/test02.dbf' size 10M(自動加一datafile)
2.alter datafile '/u01/test.dbf'size 20M; 
3.データベース データファイル '/u01/test.dbf' を変更し、次の 10M 最大サイズ 1G で自動拡張します。 
#設定後確認表空情報
select a.tablespace_name,a.bytes total,b.bytes used,c.bytes free,(b.bytes*100)/a.bytes "% used",(c.bytes *100)/a.bytes "% free" from sys.sm$ts_avail a,sys.sm$ts_used b,sys.sm$ts_free c ここで、a.tablespace_name=b.tablespace_name および a.tablespace_name=c.tablespace_name; 
10. 表空間に移動するデータ文ファイル
#先決定表空間のデータ文ファイル
SQL>select tablespace_name,file_name from dba_data_files where file_name='/u01/test.dbf'; 
#open状態态
SQL>テーブルスペースの変更テストをオフラインで実行します。 SQL>ホスト移動 /u01/test.dbf /u01/oracle/test.dbf; SQL>alter tablespace test データファイルの名前を '/u01/test.dbf' から '/u01/oracle/test.dbf' に変更します。 SQL>テーブルスペースの変更テストをオフラインで実行します。 
#マウント状態态 SQL>即時シャットダウン; SQL>startup mount SQL>host move /u01/test.dbf /u01/oracle/test.dbf; SQL>データベースを変更して、ファイル '/u01/test.dbf' を '/u01/oracle/test.dbf' に名前変更します。 
11. 表空とデータファイルの一般的なデータベース辞書とアニメーションのパフォーマンス図 v$dbfile v$datafile dba_segments user_segments dba_data_files v$tablespace dba_tablespaces user_tablespaces
--表空の使用状況
SELECT UPPER(F.TABLESPACE_NAME) "表空名前",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "既使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最大块(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024) 、2) TOTAL_BYTES、
ROUND(MAX(BYTES) / (1024 * 1024)、2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
注文BY 1
--表空の空き領域
select tablespace_name,
count(*) as extends,
round(sum(bytes) / 1024 / 1024, 2) as MB,
sum(blocks) as block
from dba_free_space
tablespace_name ごとにグループ化します。 
--表空間の完全容量
tablespace_name、sum(bytes) / 1024 / 1024 を MB として選択
dba_data_files から
tablespace_name でグループ化します。 
--表空使用率
total.tablespace_name、
round(total.MB, 2) as Total_MB、
round(total.MB - free.MB, 2) as Used_MB、
round((1 - free. MB / 合計.MB) * 100、2) || Used_Pct としての「%」
from (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_free_space
tablespace_name でグループ化) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
tablespace_name でグループ化) total
where free.tablespace_name = total.tablespace_name; 
//给用户授予权制限
grant connect,resource to username; 
//以后以以该用户、创建、创建创建的任何数据库对象都user_temp ; 
删除用户コマンド
drop user user_name cascade; 

構築表空间
CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' サイズ 500M
均一サイズ 128k; #指定区尺寸は128k,如不指定,区尺寸默认は64k

删除表空间
DROP TABLESPACE data01 INCL ING CONTENTS AND DATAFILES; 
一、構築表空间
CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE 128k; #指定区尺寸は128k、如不指定、区尺寸默认は64k
二、建立UNDO表空间
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M
#注意:在OPEN状態の下の特定の時刻では、1 つの UNDO テーブル空間のみを使用できます。新しく作成されたテーブル空間を使用する場合は、そのテーブル空間に切り替える必要があります:
ALTER SYSTEM SET undo_tablespace=UNDOTBS02; 
三、建立時表空间
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M
四、表空间状態変更
1.表空间脱机する
ALTER TABLESPACE ゲームをオフラインにする。 
結果は予期せぬデータ文ファイルの削除、回復のためにテーブルスペースゲームをオフラインに変更する必要があります。 
2.表空间机を使用する
TABLESPACE ゲームをオンラインで変更します。 
3.データファイルを脱机する
ALTER DATABASE DATAFILE 3 をオフラインで実行します。 
4.データベース文件联机を使用する
データベースDATAFILE 3をオンラインで変更します。 
5.表空间只读
ALTER TABLESPACE ゲームを読み取り専用にします。 
6.表空可读写
ALTER TABLESPACE ゲーム 読み取り/書き込み; 
五、删除表空间
DROP TABLESPACE data01 INCLING CONTENTS AND DATAFILES; 

六、扩展表空間
最初に表空間の名前と関連ファイルを見る
tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
dba_data_files から
tablespace_name で並べる; 
1.データファイルを追加
テーブルスペースゲームを変更
データファイルを追加 '/oracle/oradata/db/GAME02.dbf' サイズ 1000M; 
2.手動增追加データ文文尺寸
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
RESIZE 4000M; 
3.設定データベース文件自動扩展
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf
次の 100M で自動拡張
MAXSIZE 10000M; 

設定後に表空情報を見る
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES used, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% used",(C. BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME および A.TABLESPACE_NAME=C。 TABLESPACE

さらに多くのOracle表空間の操作方法関連文章请关注PHP中文网!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。