1. 程式人生 > >ORACLE SQLPLUS常用命令及查詢

ORACLE SQLPLUS常用命令及查詢

http://blog.csdn.net/gjgj3368/archive/2010/01/11/5174097.aspx
1.啟動停止TNS監聽
lsnrctl start
lsnrctl stop 2.啟動Oracle Services
net start OracleServiceOrcl
net stop OracleServiceOrcl SQL> show all --檢視所有68個系統變數值
SQL> show user --顯示當前連線使用者
SQL> show error   --顯示錯誤
SQL> set heading off --禁止輸出列標題,預設值為ON
SQL> set feedback off --禁止顯示最後一行的計數反饋資訊,預設值為"對6個或更多的記錄,回送ON"
SQL> set timing on --預設為OFF,設定查詢耗時,可用來估計SQL語句的執行時間,測試效能
SQL> set sqlprompt "SQL> " --設定預設提示符,預設值就是"SQL> "
SQL> set linesize 1000 --設定螢幕顯示行寬,預設100
SQL> set autocommit ON --設定是否自動提交,預設為OFF
SQL> set pause on --預設為OFF,設定暫停,會使螢幕顯示停止,等待按下ENTER鍵,再顯示下一頁
SQL> set arraysize 1 --預設為15
SQL> set long 1000 --預設為80 列出當前使用者下所有同義詞的定義,可用來測試同義詞的真實存在性
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; 下面按類別列出一些ORACLE使用者常用資料字典的查詢使用方法。
1、使用者
檢視當前使用者的預設表空間
SQL>select username,default_tablespace from user_users; 檢視當前使用者的角色
SQL>select * from user_role_privs; 檢視當前使用者的系統許可權和表級許可權
SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs; 2、表
檢視使用者下所有的表
SQL>select * from user_tables; 檢視名稱包含log字元的表
SQL>select object_name,object_id from user_objects
where instr(object_name,'LOG')>0; 檢視某表的建立時間
SQL>select object_name,created from user_objects where object_name=upper('&table_name'); 檢視某表的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&table_name'); 檢視放在ORACLE的記憶體區裡的表
SQL>select table_name,cache from user_tables where instr(cache,'Y')>0; 3、索引
檢視索引個數和類別
SQL>select index_name,index_type,table_name from user_indexes order by table_name; 檢視索引被索引的欄位
SQL>select * from user_ind_columns where index_name=upper('&index_name'); 檢視索引的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&index_name'); 4、序列號
檢視序列號,last_number是當前值
SQL>select * from user_sequences; 5、檢視
檢視檢視的名稱
SQL>select view_name from user_views; 檢視建立檢視的select語句
SQL>set view_name,text_length from user_views;
SQL>set long 2000; 說明:可以根據檢視的text_length值設定set long 的大小
SQL>select text from user_views where view_name=upper('&view_name'); 6、同義詞
檢視同義詞的名稱
SQL>select * from user_synonyms; 7、約束條件
檢視某表的約束條件
SQL>select constraint_name, constraint_type,search_condition, r_constraint_name
from user_constraints where table_name = upper('&table_name'); SQL>select c.constraint_name,c.constraint_type,cc.column_name
from user_constraints c,user_cons_columns cc
where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
and c.owner = cc.owner and c.constraint_name = cc.constraint_name
order by cc.position; 8、儲存函式和過程
檢視函式和過程的狀態
SQL>select object_name,status from user_objects where object_type='FUNCTION';
SQL>select object_name,status from user_objects where object_type='PROCEDURE'; 檢視函式和過程的原始碼
SQL>select text from all_source where owner=user and name=upper('&plsql_name'); 三、檢視資料庫的SQL
1、查看錶空間的名稱及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name; 2、查看錶空間物理檔案的名稱及大小
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name; 3、查看回滾段名稱及大小
select segment_name, tablespace_name, r.status,
(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
max_extents, v.curext CurExtent
From dba_rollback_segs r, v$rollstat v
Where r.segment_id = v.usn(+)
order by segment_name ; 4、檢視控制檔案
select name from v$controlfile; 5、檢視日誌檔案
select member from v$logfile; 6、查看錶空間的使用情況
select sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
group by tablespace_name; SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME; 7、檢視資料庫庫物件
select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status; 8、檢視資料庫的版本
Select version FROM Product_component_version
Where SUBSTR(PRODUCT,1,6)='Oracle'; 9、檢視資料庫的建立日期和歸檔方式
Select Created, Log_Mode, Log_Mode From V$Database; 1. 顯示當前連線。         SELECT *                                                                                                                                                
        FROM V$SESSION                                                                                                                                
        WHERE STATUS = 'INACTIVE'                                                                                                            
        AND USERNAME IS NOT NULL;                                                                                                         2. 強制關閉使用者的連線     a) SELECT USERNAME, SID, SERIAL#                                                                                                   
        FROM V$SESSION                                                                                                                                
        WHERE STATUS = 'INACTIVE'                                                                                                            
        AND USERNAME IS NOT NULL;                                                                                                        
                                                                                                                                                                         
    b) ALTER SYSTEM KILL SESSION 'SID, SERIAL#'; --SID 和 SERIAL#是在步驟a)中得到的結果。 3. 從返回的結果中選擇第m到n條記錄         SELECT *                                                                                                                                                  
        FROM (                                                                                                                                                     
                     SELECT A.*, ROWNUM RN                                                                                                      
                     FROM (                                                                                                                                        
                                   SELECT *                                                                                                                       
                                   FROM YOURTABLE --這裡請用你的SELECT語句代替                                           
                                  ) A                                                                                                                                    
                     WHERE ROWNUM <= n                                                                                                             
                     )                                                                                                                                                     
        WHERE RN >= m;                                                                                                                                     
   
4. 重新編譯包 (package) 和 包體 (package body)
    此命令可以用於檢視在SQLPLUS中建立的package的編譯錯誤。         a) 編譯 package
            ALTER PACKAGE YOUR_PACKAGE                                                                                                
            COMPILE SPECIFICATION;                                                                                                               
        b) 編譯 package body
            ALTER PACKAGE YOUR_PACKAGE                                                                                                
            COMPILE BODY;                                                                                                                                  
        c) 檢視錯誤
            SHOW ERR;                                                                                                                                             5. 解除鎖定的使用者     ALERT USER USERNAME UNLOCK;