Oracle 應用技巧

觸發器:
  select?trigger_name,trigger_type,table_owner,table_name,status?from?user_triggers;
快照:
  select?owner,name,master,table_name,last_refresh,next?from?user_snapshots?order?by?owner,next;
同義詞:
  select?*?from?syn;
序列:
  select?*?from?seq;
數據庫鏈路:
  select?*?from?user_db_links;
約束限制:
  select?TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS?from?user_constraints;
本用戶讀取其他用戶對象的權限:
  select?*?from?user_tab_privs;
本用戶所擁有的系統權限:
  select?*?from?user_sys_privs;
用戶:
  select?*?from?all_users?order?by?user_id;
表空間剩餘自由空間情況:
  select?tablespace_name,sum(bytes)?總字節數,max(bytes),count(*)?from?dba_free_space?group?by?tablespace_name;
數據字典:
  select?table_name?from?dict?order?by?table_name;
鎖及資源信息:
  select?*?from?v$lock;不包括DDL鎖
數據庫字符集:
  select?name,value$?from?props$?where?name='NLS_CHARACTERSET';
inin.ora參數:
  select?name,value?from?v$parameter?order?by?name;
SQL共享池:
  select?sql_text?from?v$sqlarea;
數據庫:
  select?*?from?v$database
控制文件:
  select?*?from?V$controlfile;
重做日誌文件信息:
  select?*?from?V$logfile;
來自控制文件中的日誌文件信息:
  select?*?from?V$log;
來自控制文件中的數據文件信息:
  select?*?from?V$datafile;
NLS參數當前值:
  select?*?from?V$nls_parameters;
ORACLE版本信息:
  select?*?from?v$version;
描述後臺進程:
  select?*?from?v$bgprocess;
查看版本信息:
  select?*?from?product_component_version;

7.如何在PL/SQL中讀寫文件??


軟件環境:?
1、服務器端:Windows?NT4.0+ORACLE?8.0.4
2、ORACLE安裝路徑爲:C:/ORANT?
實現方法:?

PL/SQL?3.3以上的版本中,UTL_FILE包允許用戶通過PL/SQL讀寫操作系統文件。如下:?
declare
file_handle?UTL_FILE.FILE_TYPE;
begin
file_handle?:=?UTL_FILE.FOPEN('/tmp',?'文件名',?'w');
UTL_FILE.PUTF(file_handle,?'寫入的信息/n');
UTL_FILE.FCLOSE(file_handle);
exception
WHEN?utl_file.invalid_path?THEN
raise_application_error(-20000,?'ERROR:?Invalid?path?for?file?or?path?not?in?INIT.ORA.');
end;?

PutF()過程用來以指定格式把文本寫入一個文件

Put_Line()過程把一個指定的字符串寫入文件並在文件中開始新的一行

8.怎樣計算表中的記錄數??


系統環境:?
1、操作系統:Windows?2000
2、數據庫: Oracle?8i?R2?(8.1.6)?for?NT?企業版
3、安裝路徑:C:/ORACLE

實現方法:?

查看當前用戶下有什麼對象(表、視圖、同義詞、快照)
SQL>?select?*?from?tab;

查看錶結構
SQL>?desc?表名

查看錶中記錄數
SQL>?select?count(*)?from?表名;

SQL>?select?count(rowid)?from?表名;


9.怎樣查看錶的結構??


系統環境:?
1、操作系統:Windows?2000
2、數據庫: Oracle?8i?R2?(8.1.6)?for?NT?企業版
3、安裝路徑:C:/ORACLE

實現方法:?

查看當前用戶下有什麼對象(表、視圖、同義詞、快照)
SQL>?select?*?from?tab;

查看錶結構
SQL>?describe?表名

簡寫以上命令
SQL>?desc?表名


10.如何用SQL生成SQL批處理文件??


軟件環境:?
1、Windows?NT4.0+ORACLE?8.0.4
2、ORACLE安裝路徑爲:C:/ORANT

問題提出:?
1、用戶需要對數據庫用戶下的每一張表都執行一個相同的SQL操作,這時,一遍、一遍的鍵入SQL語句是很麻煩的

實現方法:?
SQL>?set?heading?off?--禁止輸出列標題
SQL>?set?feedback?off?--禁止顯示最後一行的計數反饋信息

列出當前用戶下所有同義詞的定義,可用來測試同義詞的真實存在性
select?'desc?'||tname?from?tab?where?tabtype='SYNONYM';

查詢當前用戶下所有表的記錄數
select?'select?'''||tname||''',count(*)?from?'||tname||';'?from?tab?where?tabtype='TABLE';

把所有符合條件的表的select權限授予爲public
select?'grant?select?on?'||table_name||'?to?public;'?from?user_tables?where?《條件》;

刪除用戶下各種對象
select?'drop?'||tabtype||'?'||tname?from?tab;

刪除符合條件用戶
select?'drop?user?'||username||'?cascade;'?from?all_users?where?user_id>25;

快速編譯所有視圖?
----當在把數據庫倒入到新的服務器上後(數據庫重建),需要將視圖重新編譯一遍,
----因爲該表空間視圖到其它表空間的表的連接會出現問題,可以利用PL/SQL的語言特性,快速編譯。?

SQL>?SPOOL?ON.SQL
SQL>?SELECT'ALTER?VIEW?'||TNAME||'?COMPILE;'?FROM?TAB;
SQL>?SPOOL?OFF
然後執行ON.SQL即可。
SQL>[email protected]
當然,授權和創建同義詞也可以快速進行,如:
SQL>?SELECT?'GRANT?SELECT?ON?'||TNAME||'?TO?用戶名;'?FROM?TAB;
SQL>?SELECT?'CREATE?SYNONYM?'||TNAME||'?FOR?用戶名.'||TNAME||';'?FROM?TAB;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章