ORACLE 一句話問答(二)

huangdazhu發表於2014-10-13
承接上一次的一句話問答,ORACLE有些東西確實比較零散瑣碎但平時有用到,在一句話系列權當記錄,陸續更新吧。

36、如何查詢資料庫中有哪些儲存過程?
SELECT * FROM dba_objects WHERE object_type='PROCEDURE' and owner='STERN'';

37、如何得到建立儲存過程(函式、包)的指令碼?
SELECT text FROM user_source WHERE name='PROCEDURE_NAME' and type='PROCEDURE(FUNCTION/PACKAGE)';

38、如何知道儲存過程中使用了哪些表?
select referenced_type,referenced_owner,referenced_name from dba_dependencies
where name='PROCEDURE_NAME' and owner='USER' and upper(referenced_type)='TABLE';

39、顯示儲存過程的編譯錯誤?
show error

40、如何移動表champion從表空間kb8到表空間kb24?
ALTER TABLE champion MOVE TABLESPACE kb24;
ALTER INDEX champion _idx REBUILD  TABLESPACE kb24;

41、查詢某一使用者下所有表的記錄數
select table_name,num_rows from dba_tables where owner='STERN';

42、何時使用基於函式的索引?
當sql語句的條件經常使用某個表示式或者某個函式時,使用者可以建立基於函式的索引
CREATE INDEX AI_idx ON AI(upper(PG));

43、解決匯出時候不匯出空表問題:
show parameter deferred_segment_creation;
alter system set deferred_segment_creation=false;

44、檢視資料庫的版本
Select version FROM Product_component_version Where SUBSTR(PRODUCT,1,6)='Oracle';

45、檢視資料庫資訊及歸檔模式:
select dbid,name,log_mode,current_scn,CREATED from v$database;

46、如何備份sqlplus的環境變數值?
store set 
47、查詢資料庫處於何種狀態?
select open_mode from v$database;
select status from v$instance;
48、ORA-00205:error in identifying control file,check alert log for more info
控制檔案受損,重新命名並替換受損的控制檔案。

49、查詢使用者fisher的表空間限額
select tablespace_name,username,max_bytes from dba_ts_quotas where username='FISHER';

50、如何確定資料庫啟動時使用SPFILE還是PFILE?
show parameter spfile;

51、檢視預設臨時表空間和查詢臨時表空間?
select property_name,property_value from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';
select distinct tablespace_name from dba_temp_files;

52、如何檢視回滾表空間?
show parameter undo_tablespace
select tablespace_name from dba_tablespaces where contents='UNDO';

53、查出一個使用者所擁有的角色
select granted_role from dba_role_privs where grantee='DAVID';

54、檢視一個表或者索引所佔用的空間
SELECT owner, segment_name,  SUM(bytes)/1024/1024
     FROM dba_segments
    WHERE owner= 'STERN' And segment_name='SHARK'
   GROUP BY owner,segment_name;

55、驗證是否使用本地管理以及ASSM
select tablespace_name,extent_management,segment_space_management from dba_tablespaces;

56、查詢有哪些資料庫例項在執行
select inst_name from v$active_instances;

57、alter index index_name rebuild和Alter index  index_name coalesce?
表在頻繁的增刪改後,就會造成index對應的block不完整,和系統碎片的情況是一致的,造成空間浪費,加大index的I/O,影響效能。
rebuilding indexes有重建整個索引數的功能,可以在不刪除原始索引的情況下改變索引的儲存引數,重新構建一個高效的索引,但重構時會鎖表。而coalescing indexes對於有些索引中存在大量空間浪費的情況下,整理索引碎片合併索引中同一級的leaf block,效率高,不鎖表。

58、如何使用直接載入大批次資料?
直接載入最常見的是和NOLOGGING一起使用,可以有效的減少REDO的生成量;
如果直接載入的表上有索引,oracle不會像載入資料的方式來處理索引的資料,但因需要維護索引,同樣會產生很多的REDO;
當使用直接載入時,通常是針對一些資料量非常大的表。如果這些表存在索引,將會帶來很大的效能影響,這時可以考慮先將索引DISABLE掉,然後載入資料,之後再重新建立索引。

59、alter table move與alter table shrink space?
alter table move 或shrink space可以收縮段,用來消除部分行遷移,消除空間碎片。
alter table move操作後,資料的rowid發生了改變table上的index需要rebuild,而且執行過程中佔用很多表空間:alter table shrink space執行後不會導致索引失效,但調整HWM位置,釋放空閒資料塊,在業務特別繁忙的系統上可酌情使用。

60、purge和flashback?
當執行drop語句意外刪除了表時,表仍然存在於該表空間中,並且被放置在一個oracle稱為“回收站”的邏輯容器中,可以使用flashback進行恢復;
使用DROP TABLE PURGE則是永久刪除該表,相當於window系統中使用shift+detelte進行檔案刪除。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28869493/viewspace-1296841/,如需轉載,請註明出處,否則將追究法律責任。

相關文章