【診斷指令碼】【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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 收集日誌檔案同步診斷資訊指令碼(lfsdiag.sql) (文件 ID 1064487.1)指令碼SQL
- 表空間與資料檔案的offline和online操作
- 表空間和資料檔案的管理
- 關於丟失表空間資料檔案的處理方式
- 3576.02空間指令碼brain.script,02檔案, 02“XX_brain”資料夾, 01空間資料夾, 04TB檔案指令碼AI
- 新建的表空間(或資料檔案)丟失以及控制檔案丟失,有新建表空間(或資料檔案)前的控制文
- oracle 普通表空間資料檔案壞塊Oracle
- 表空間(資料檔案shrink)收縮示例
- PostgreSQL在不同的表空間移動資料檔案SQL
- MySQL 磁碟空間滿導致表空間相關資料檔案損壞故障處理MySql
- MySQL InnoDB系統表空間資料檔案配置MySql
- 2.5.4 為 SYSAUX 表空間指定資料檔案屬性UX
- 2.5.9 在資料庫建立期間支援大檔案表空間資料庫
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- 達夢資料庫系統表空間資料檔案遷移過程資料庫
- oracle dg庫資料檔案空間不足Oracle
- SQL Server資料庫怎麼找出一個表包含的頁資訊(Page)SQLServer資料庫
- 資料庫SQL語句中關於explain關鍵字的用法資料庫SQLAI
- PostgreSQL:表空間-->資料庫-->表SQL資料庫
- 複製建立已有資料庫使用者、表空間、許可權的指令碼資料庫指令碼
- mssql sqlserver 使用sql指令碼 清空所有資料庫表資料的方法分享SQLServer指令碼資料庫
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- Linux Shell檔案之間的包含關係Linux
- GBase8s 檢視資料庫表空間資訊資料庫
- Oracle 表空間增加檔案Oracle
- 使用SQL_TRACE進行資料庫診斷(轉)SQL資料庫
- 資料庫異常智慧分析與診斷資料庫
- 查詢表空間使用情況的指令碼指令碼
- [20221216]建立修改表統計資訊minmaxtab.sql指令碼.txtSQL指令碼
- [20221216]建立修改表統計資訊modtab.sql指令碼.txtSQL指令碼
- PostgreSQL-表空間、資料庫、使用者之間的關係(七)SQL資料庫
- 虛擬主機資料庫與空間關係資料庫
- [待整理]oracle10g刪除(釋放)資料檔案/表空間流程Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 表空間集自包含檢查
- 【TABLE】Oracle表資訊收集指令碼Oracle指令碼
- Oracle undo 表空間資料檔案丟失強制啟動資料庫(沒有未提交的事務)Oracle資料庫
- 使用shell指令碼替換csv檔案中的資料指令碼