【診斷指令碼】【SQL】得到包含關鍵字的表空間與資料檔案資訊
1.在日常維護中,沒有得心應手的“診斷指令碼”是低效的,枯燥的。在這個小文兒裡給大家拋個磚。請看下面是我日常維護中相對得心應手的一個檢視包含某關鍵字的表空間及資料檔案的“診斷指令碼”(此指令碼也是在逐步更新到現在這個樣子的,以後還將繼續最佳化)。這個指令碼中有一些格式化輸出和變數定義的小技巧,留給有心人發掘。
ora10g@testdb /home/oracle/sql$ cat tbs.sql
--------------------------------------------------
-- Script. Function: Query the tablespace info --
-- Script. Name: tbs.sql --
-- Author: Secooler Hou --
-- Date: 2007.9.6 --
--------------------------------------------------
SET verify off
DEFINE tablespace_name=&tablespace_name
COL tablespace_name format a30
COL total_Mbytes format 99999999.99
COL used_Mbytes format 99999999.99
COL free_Mbytes format 99999999.99
COL pct_free format 99999999.99
COL file_name for a66
SELECT file_name, BYTES / 1024 / 1024 mb, tablespace_name
FROM dba_data_files
WHERE UPPER (tablespace_name) LIKE UPPER ('%&tablespace_name%')
ORDER BY tablespace_name, file_name;
COL file_name clear
SELECT a.tablespace_name, a.total_mbytes,
a.total_mbytes - NVL (b.free_mbytes, 0) used_mbytes,
NVL (b.free_mbytes, 0) free_mbytes,
TRUNC (NVL (b.free_mbytes, 0) / a.total_mbytes * 100, 2) pct_free
FROM (SELECT tablespace_name, SUM (BYTES) / 1024 / 1024 total_mbytes
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM (BYTES) / 1024 / 1024 free_mbytes
FROM dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name(+)
AND UPPER (a.tablespace_name) LIKE UPPER ('%&tablespace_name%')
ORDER BY free_mbytes DESC
/
UNDEFINE tablespace_name
SET verify on
2.指令碼演示:以包含sec關鍵字為例,顯示所有表空間和資料檔案的資訊
sys@ora10g> @tbs
Enter value for tablespace_name: sec
FILE_NAME MB TABLESPACE_NAME
----------------------------------------- ---- -----------------
/oracle/oradata/ora10g/tbs_sec_01.dbf TBS_SEC
/oracle/oradata/ora10g/tbs_sec_02.dbf 10 TBS_SEC
/oracle/oradata/ora10g/tbs_sec_d01.dbf 20 TBS_SEC_D
/oracle/oradata/ora10g/tbs_sec_i01.dbf 20 TBS_SEC_I
/oracle/oradata/ora10g/tbs_user_sec01.dbf 10 TBS_USER_SEC
TABLESPACE_NAME TOTAL_MBYTES USED_MBYTES FREE_MBYTES PCT_FREE
---------------- ------------ ------------ ------------ ------------
TBS_SEC_I 20.00 .06 19.94 99.68
TBS_SEC_D 20.00 1.50 18.50 92.50
TBS_SEC 10.00 .06 9.94 99.37
TBS_USER_SEC 10.00 .06 9.94 99.37
OK,輸出的資訊包含所有包含關鍵字“sec”的表空間,以及他們對應的資料檔案。在這個指令碼的協助下,可以快速的定位資料檔案的位置,對給具體的表空間新增資料檔案給出了提示。
歡迎大家交流。
-- The End --
ora10g@testdb /home/oracle/sql$ cat tbs.sql
--------------------------------------------------
-- Script. Function: Query the tablespace info --
-- Script. Name: tbs.sql --
-- Author: Secooler Hou --
-- Date: 2007.9.6 --
--------------------------------------------------
SET verify off
DEFINE tablespace_name=&tablespace_name
COL tablespace_name format a30
COL total_Mbytes format 99999999.99
COL used_Mbytes format 99999999.99
COL free_Mbytes format 99999999.99
COL pct_free format 99999999.99
COL file_name for a66
SELECT file_name, BYTES / 1024 / 1024 mb, tablespace_name
FROM dba_data_files
WHERE UPPER (tablespace_name) LIKE UPPER ('%&tablespace_name%')
ORDER BY tablespace_name, file_name;
COL file_name clear
SELECT a.tablespace_name, a.total_mbytes,
a.total_mbytes - NVL (b.free_mbytes, 0) used_mbytes,
NVL (b.free_mbytes, 0) free_mbytes,
TRUNC (NVL (b.free_mbytes, 0) / a.total_mbytes * 100, 2) pct_free
FROM (SELECT tablespace_name, SUM (BYTES) / 1024 / 1024 total_mbytes
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM (BYTES) / 1024 / 1024 free_mbytes
FROM dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name(+)
AND UPPER (a.tablespace_name) LIKE UPPER ('%&tablespace_name%')
ORDER BY free_mbytes DESC
/
UNDEFINE tablespace_name
SET verify on
2.指令碼演示:以包含sec關鍵字為例,顯示所有表空間和資料檔案的資訊
sys@ora10g> @tbs
Enter value for tablespace_name: sec
FILE_NAME MB TABLESPACE_NAME
----------------------------------------- ---- -----------------
/oracle/oradata/ora10g/tbs_sec_01.dbf TBS_SEC
/oracle/oradata/ora10g/tbs_sec_02.dbf 10 TBS_SEC
/oracle/oradata/ora10g/tbs_sec_d01.dbf 20 TBS_SEC_D
/oracle/oradata/ora10g/tbs_sec_i01.dbf 20 TBS_SEC_I
/oracle/oradata/ora10g/tbs_user_sec01.dbf 10 TBS_USER_SEC
TABLESPACE_NAME TOTAL_MBYTES USED_MBYTES FREE_MBYTES PCT_FREE
---------------- ------------ ------------ ------------ ------------
TBS_SEC_I 20.00 .06 19.94 99.68
TBS_SEC_D 20.00 1.50 18.50 92.50
TBS_SEC 10.00 .06 9.94 99.37
TBS_USER_SEC 10.00 .06 9.94 99.37
OK,輸出的資訊包含所有包含關鍵字“sec”的表空間,以及他們對應的資料檔案。在這個指令碼的協助下,可以快速的定位資料檔案的位置,對給具體的表空間新增資料檔案給出了提示。
歡迎大家交流。
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-611701/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 刪除表空間和表空間包含的檔案
- 有關表空間查詢的sql指令碼SQL指令碼
- Oracle 表空間與資料檔案Oracle
- 檢查表空間、資料檔案、OS空間使用情況的指令碼指令碼
- 收集日誌檔案同步診斷資訊指令碼(lfsdiag.sql) (文件 ID 1064487.1)指令碼SQL
- 水煮orale22——查詢表空間使用資訊以及表空間中的每個資料檔案資訊
- 移動資料檔案、系統表空間檔案、臨時表空間檔案
- Python指令碼實現查詢指定目錄下包含指定關鍵字的檔案Python指令碼
- 表空間和資料檔案的管理
- 資料檔案,表空間的移動
- 表空間新增資料檔案的疑惑
- 表空間和資料檔案管理
- oracle 資料檔案表空間管理Oracle
- MySQL innodb共享表空間新增表空間資料檔案方法MySql
- 【SQL】長事務診斷指令碼SQL指令碼
- 表空間中有資料也可以壓縮表空間(資料檔案)大小
- 表空間&資料檔案和控制檔案(zt)
- [20160329]表空間與資料檔案.txt
- 透過shell指令碼得到資料字典的資訊指令碼
- 通過shell指令碼得到資料字典的資訊指令碼
- 關於丟失表空間資料檔案的處理方式
- oracle 回收表空間的資料檔案大小Oracle
- 錯誤新增表空間的資料檔案
- 得到表的記錄數和佔用的儲存空間指令碼指令碼
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- 表空間離線與資料檔案離線的區別
- oracle 表空間 資料檔案 筆記Oracle筆記
- 表空間資料檔案故障處理
- 線上遷移表空間資料檔案
- Oracle 表空間資料檔案遷移Oracle
- 【轉】查詢表空間中的資料檔案利用率的sqlSQL
- 檢查儲存結構-控制、REDO日誌、表空間使用情況、資料檔案等資訊指令碼--HTML指令碼HTML
- 表空間檢測異常的問題診斷
- 收集資料庫升級/遷移診斷資訊的指令碼 (dbupgdiag.sql) (文件 ID 1577288.1)資料庫指令碼SQL
- Oracle資料庫表空間的資料檔案大小上限。Oracle資料庫
- 新建的表空間(或資料檔案)丟失以及控制檔案丟失,有新建表空間(或資料檔案)前的控制文
- oracle誤刪除表空間的資料檔案Oracle
- 用指令碼一次性得到ORACLE資料庫相關配置資訊並儲存為檔案指令碼Oracle資料庫