Oracle語句記錄

一、查看被鎖的表

select sess.sid, 
    sess.serial#, 
    lo.oracle_username, 
    lo.os_user_name, 
    ao.object_name, 
    lo.locked_mode 
    from v$locked_object lo, 
    dba_objects ao, 
    v$session sess 
where ao.object_id = lo.object_id and lo.session_id = sess.sid; 

二、解鎖表語句

alter system kill session '#SID#,#serial#';

三、被鎖的表生成批量解表語句

select DISTINCT 'alter system kill session ''' ||  sess.sid || ',' || sess.serial# || ''';' 
    from v$locked_object lo, 
    dba_objects ao, 
    v$session sess 
where ao.object_id = lo.object_id and lo.session_id = sess.sid;

四、查看用戶連接數

SELECT machine,terminal,osuser,program,process,logon_time,username,command,sql_hash_value FROM v$session 
v$session:

這個視圖主要提供的是一個數據庫connect的信息,
主要是client端的信息,比如以下字段:
machine 在哪臺機器上
terminal 使用什么終端
osuser 操作系統(tǒng)用戶是誰
program 通過什么客戶端程序,比如TOAD
process 操作系統(tǒng)分配給TOAD的進程號
ogon_time 在什么時間
username 以什么oracle的帳號登錄
command 執(zhí)行了什么類型的SQL命令
sql_hash_value SQL語句信息

五、檢驗數據庫是否存在此表

# TABLE_NAME(表名)
# OWNER(所屬用戶下)
SELECT COUNT(*) COUNT FROM ALL_TABLES WHERE 1=1 AND TABLE_NAME = UPPER('MS_TCJ_620546I01') AND OWNER = UPPER('JHYSC')

六、查詢當前月份

AND TO_CHAR(wt.DELEGATE_TIME, 'YYYY-MM')= TO_CHAR(SYSDATE, 'YYYY-MM')

七、Oracle 分頁

    /**
     * 將查詢sql轉換為分頁sql
     * @param sql {查詢sql}
     * @param offset {開始行數}
     * @param limit {截至行數}
     * @return {查詢中不可以有相同的字段名}
     */
    public static String limitSql(String sql,Integer offset,Integer limit) {
        if (isEmpty(sql)) return sql;
        String limitSql = "SELECT *  FROM ( SELECT row_.*, ROWNUM rownum_ FROM ( " +
                    sql +
                " ) row_ ) WHERE rownum_ > " + (offset!=null?offset:0) +
                " AND rownum_ <= " + (limit!=null?limit:10);
        return limitSql;
    }
    @Test
    public void test_029(){
        String sql = "SELECT * FROM AGJH.MS_TYLZP01";
        System.out.println(CPUtil.limitSql(sql, 0, 10));
    }

八、Oracle恢復表數據指定表指定時間

select * from MS_GRID_COLUMN  as of timestamp to_timestamp('20220926163700','YYYYMMDD HH24:MI:SS');
alter table MS_GRID_COLUMN enable row movement;--開啟
flashback table MS_GRID_COLUMN to timestamp to_timestamp('20220926163700','YYYYMMDD HH24:MI:SS');
ALTER TABLE MS_GRID_COLUMN DISABLE row movement ;--關閉

九、Oracle刪除表中重復的數據

SELECT * FROM XS_USER WHERE LOGIN_NAME IN(SELECT LOGIN_NAME FROM XS_USER GROUP BY LOGIN_NAME HAVING COUNT(LOGIN_NAME) > 1) AND ROWID NOT IN(SELECT MIN(ROWID) FROM XS_USER GROUP BY LOGIN_NAME HAVING COUNT(LOGIN_NAME)>1) FOR UPDATE  

十、Oracle刪除表中重復的數據

SELECT * FROM XS_USER WHERE LOGIN_NAME IN(SELECT LOGIN_NAME FROM XS_USER GROUP BY LOGIN_NAME HAVING COUNT(LOGIN_NAME) > 1) AND ROWID NOT IN(SELECT MIN(ROWID) FROM XS_USER GROUP BY LOGIN_NAME HAVING COUNT(LOGIN_NAME)>1) FOR UPDATE  
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容