【指令碼】快速獲得當前使用者下“暫忘”的資料庫物件資訊
對SQL*Plus情有獨鍾的朋友一定遇到過這樣的問題:突然忘記了表的全名(或者其他資料庫物件名),僅依稀記得它包含幾個字母,怎麼可以最快速知道具體的名字呢?
最快速的回答:使用資料字典檢視可以達到提示自己的目的。
例如使用如下的SQL語句遍可獲得當前使用者下所有包含“TMP”關鍵字的資料庫物件資訊。
select * from obj where object_name like '%TMP%';
完全正確,但是沒有達到我們“快速”的目的。我這裡給出一個非常簡單的指令碼(以obj為基礎進行了簡單的格式化),以便達到快速獲得提示資訊的目的。
1.指令碼內容如下,有興趣的朋友可以在這個基礎上進一步創新和豐富。
--------------------------------------------------
-- Script. Function: Query the obj info --
-- Script. Name: obj.sql --
-- Author: Secooler Hou --
-- Date: 2010.01.27 --
--------------------------------------------------
set verify off
set linesize 200
col "OBJECT NAME" for a30
col "SUBOBJECT NAME" for a10
col "OBJECT ID" for 9999999999
col "DATA OBJECT ID" for 9999999999
col "OBJECT TYPE" for a12
col "CREATED" for a19
col "LAST DDL TIME" for a19
col "Timestamp" for a19
col "Status" for a7
col "Temporary" for a1
col "Generated" for a1
col "Secondary" for a1
select OBJECT_NAME "OBJECT NAME",
SUBOBJECT_NAME "SUBOBJECT NAME",
OBJECT_ID "OBJECT ID",
DATA_OBJECT_ID "DATA OBJECT ID",
OBJECT_TYPE "OBJECT TYPE",
CREATED "CREATED",
LAST_DDL_TIME "LAST DDL TIME",
TIMESTAMP "Timestamp",
STATUS "Status",
TEMPORARY "Temporary",
GENERATED "Generated",
SECONDARY "Secondary"
from obj
where OBJECT_TYPE like UPPER ('%&OBJECT_TYPE%')
and OBJECT_NAME like UPPER ('%&OBJECT_NAME%')
order by OBJECT_NAME, OBJECT_TYPE
/
set linesize 131
set verify on
2.指令碼使用演示(為使輸出顯示整齊,這裡進行了省略處理)
使用obj.sql指令碼獲得當前使用者下包含“T”關鍵字的表資訊。
sec@ora10g> @obj
Enter value for object_type: t
Enter value for object_name: t
OBJECT NAME SUBOBJECT OBJECT ID DATA OBJECT ID OBJEC ...
----------------------- ---------- ----------- -------------- ----- ...
T 80184 80184 TABLE ...
T_CHILD 80357 80357 TABLE ...
T_PARENT 80355 80355 TABLE ...
因為指令碼中使用到了like和upper,所以在“object_type”提示處輸入“t”來表示“表”型別,當然,如果輸全“table”更佳,不易出現歧義。
sec@ora10g> @obj
Enter value for object_type: table
Enter value for object_name: t
OBJECT NAME SUBOBJECT OBJECT ID DATA OBJECT ID OBJEC ...
----------------------- ---------- ----------- -------------- ----- ...
T 80184 80184 TABLE ...
T_CHILD 80357 80357 TABLE ...
T_PARENT 80355 80355 TABLE ...
什麼都不輸入,兩次回車後將會列出當前使用者下所有資料庫物件資訊。
慢慢體會吧。指令碼供大家參考。
3.小結
在日常的資料庫維護和操作中,如果發現某一項操作反覆被用到,並且每次都感到繁瑣和耗時,那麼此時就需要靜下心來思考一個問題:有沒有什麼手段可以簡化我們的操作呢?
編寫順手的操作指令碼可以大大提高我們的維護效率,事半功倍,同時還可以改善我們的操作“心情”。
遠離繁瑣操作,讓我們用大好的時光去做更多有意義的事情吧!
Good luck.
secooler
10.01.27
-- The End --
最快速的回答:使用資料字典檢視可以達到提示自己的目的。
例如使用如下的SQL語句遍可獲得當前使用者下所有包含“TMP”關鍵字的資料庫物件資訊。
select * from obj where object_name like '%TMP%';
完全正確,但是沒有達到我們“快速”的目的。我這裡給出一個非常簡單的指令碼(以obj為基礎進行了簡單的格式化),以便達到快速獲得提示資訊的目的。
1.指令碼內容如下,有興趣的朋友可以在這個基礎上進一步創新和豐富。
--------------------------------------------------
-- Script. Function: Query the obj info --
-- Script. Name: obj.sql --
-- Author: Secooler Hou --
-- Date: 2010.01.27 --
--------------------------------------------------
set verify off
set linesize 200
col "OBJECT NAME" for a30
col "SUBOBJECT NAME" for a10
col "OBJECT ID" for 9999999999
col "DATA OBJECT ID" for 9999999999
col "OBJECT TYPE" for a12
col "CREATED" for a19
col "LAST DDL TIME" for a19
col "Timestamp" for a19
col "Status" for a7
col "Temporary" for a1
col "Generated" for a1
col "Secondary" for a1
select OBJECT_NAME "OBJECT NAME",
SUBOBJECT_NAME "SUBOBJECT NAME",
OBJECT_ID "OBJECT ID",
DATA_OBJECT_ID "DATA OBJECT ID",
OBJECT_TYPE "OBJECT TYPE",
CREATED "CREATED",
LAST_DDL_TIME "LAST DDL TIME",
TIMESTAMP "Timestamp",
STATUS "Status",
TEMPORARY "Temporary",
GENERATED "Generated",
SECONDARY "Secondary"
from obj
where OBJECT_TYPE like UPPER ('%&OBJECT_TYPE%')
and OBJECT_NAME like UPPER ('%&OBJECT_NAME%')
order by OBJECT_NAME, OBJECT_TYPE
/
set linesize 131
set verify on
2.指令碼使用演示(為使輸出顯示整齊,這裡進行了省略處理)
使用obj.sql指令碼獲得當前使用者下包含“T”關鍵字的表資訊。
sec@ora10g> @obj
Enter value for object_type: t
Enter value for object_name: t
OBJECT NAME SUBOBJECT OBJECT ID DATA OBJECT ID OBJEC ...
----------------------- ---------- ----------- -------------- ----- ...
T 80184 80184 TABLE ...
T_CHILD 80357 80357 TABLE ...
T_PARENT 80355 80355 TABLE ...
因為指令碼中使用到了like和upper,所以在“object_type”提示處輸入“t”來表示“表”型別,當然,如果輸全“table”更佳,不易出現歧義。
sec@ora10g> @obj
Enter value for object_type: table
Enter value for object_name: t
OBJECT NAME SUBOBJECT OBJECT ID DATA OBJECT ID OBJEC ...
----------------------- ---------- ----------- -------------- ----- ...
T 80184 80184 TABLE ...
T_CHILD 80357 80357 TABLE ...
T_PARENT 80355 80355 TABLE ...
什麼都不輸入,兩次回車後將會列出當前使用者下所有資料庫物件資訊。
慢慢體會吧。指令碼供大家參考。
3.小結
在日常的資料庫維護和操作中,如果發現某一項操作反覆被用到,並且每次都感到繁瑣和耗時,那麼此時就需要靜下心來思考一個問題:有沒有什麼手段可以簡化我們的操作呢?
編寫順手的操作指令碼可以大大提高我們的維護效率,事半功倍,同時還可以改善我們的操作“心情”。
遠離繁瑣操作,讓我們用大好的時光去做更多有意義的事情吧!
Good luck.
secooler
10.01.27
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-626192/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 刪除當前資料庫連線使用者資料庫
- Spring Security - 獲取當前登入使用者的詳細資訊Spring
- SAP Spartacus 如何獲得當前渲染頁面的 CMS 後設資料
- 【SCRIPT】Oracle資料庫基本資訊收集指令碼Oracle資料庫指令碼
- 如何快速定位當前資料庫消耗 CPU 最高的 sql 語句?資料庫SQL
- Oracle 檢查當前資料庫CPU和PSU補丁資訊Oracle資料庫
- 獲取當前修改的行記錄資料
- Linux 下檢視系統當前登入使用者資訊Linux
- Oracle database 19c中獲取當前資料庫版本的方法OracleDatabase資料庫
- 獲取所有域使用者的登陸歷史資訊指令碼指令碼
- Yii2 獲取當前請求的路由資訊路由
- 資料庫備份指令碼資料庫指令碼
- 由system.currentTimeMillis() 獲得當前的時間
- 獲得資料庫操作日誌的三種方式資料庫
- 呼叫中心資料入庫指令碼指令碼
- MySQL匯出資料庫指令碼MySql資料庫指令碼
- C4C和CRM裡獲取當前登入使用者分配的Organization Unit資訊
- MySQL資料庫備份的shell指令碼MySql資料庫指令碼
- 備忘錄:C#獲取微信小程式的雲資料庫中資料C#微信小程式資料庫
- Oracle獲取資料庫中的物件建立語句Oracle資料庫物件
- 本地oracle資料庫忘記使用者名稱密碼解決方案Oracle資料庫密碼
- JVM 如何獲取當前容器的資源限制?JVM
- ubuntu無法獲得鎖 ( 資源暫時不可用)Ubuntu
- 物件代理資料庫:大資料時代下的應需之作物件資料庫大資料
- 直播平臺原始碼,快速獲取當前狀態列高度原始碼
- mssql生成資料庫字典指令碼-MarkDownSQL資料庫指令碼
- Flyway版本化管理資料庫指令碼資料庫指令碼
- Liunx備份mysql資料庫的shell指令碼MySql資料庫指令碼
- 忘記oracle的sys密碼該如何重置;附如何修改oracle資料庫使用者密碼Oracle密碼資料庫
- vbs指令碼獲取Am註冊路徑資訊指令碼
- “無法刪除資料庫,因為該資料庫當前正在使用” – 解決方法資料庫
- 大資料時代,怎樣才能獲得真正有價值的資訊大資料
- 有輕功:用3行程式碼讓Python資料處理指令碼獲得4倍提速行程Python指令碼
- Spring 通過Spring容器獲得資料來源物件並改進Spring物件
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- 複製建立已有資料庫使用者、表空間、許可權的指令碼資料庫指令碼
- [系列] Go - 基於 GORM 獲取當前請求所執行的 SQL 資訊GoORMSQL
- mysql 4.1.7忘記資料庫密碼的處理辦法MySql資料庫密碼
- mssql sqlserver 使用sql指令碼 清空所有資料庫表資料的方法分享SQLServer指令碼資料庫