Oracle百萬級資料的查詢與操作

時間 2022-05-24 09:05:06

1樓:匿名使用者

我來說下:

oracle的資料分割槽

主要是1.當表和索引變得非常大時,分割槽可以是資料分為更小、更容易管理的部分。2、如果具有多個cpu的系統中存在乙個大型表,則對該錶進行分割槽可以通過並行操作獲得更好的效能。

適用於包含大資料量的表轉到分割槽表中的乙個分割槽的操作。是大量資料轉到分割槽表中的乙個分割槽的操作,這樣就不會涉及split操作,只需要修改資料字典,效率自然會很高。

關於資料冗餘

資料冗餘技術是使用一組或多組附加驅動器儲存資料的副本,這就叫資料冗餘技術。比如映象就是一種資料冗餘技術。

一般式採取資料複製來解決問題。這個資料冗餘至於怎麼設定,這個我也只停留在理論上。實話實說啊。

知道就這些。希望對你有幫助。 我覺得你的問題。

一天幾百萬條的資料。採用分割槽更有效過。而且相當明顯。

2樓:茗茶堂

採用分割槽技術會優化很多,分割槽方法這個看你查詢的條件,一般是根據日期進行分割槽,像你這種表安裝天或者周、旬、月來建分割槽好些,因為你查詢一般是查某幾天的某些符合條件的記錄,而且,索引也可以建立分割槽索引。

3樓:祚胤

分割槽就是以第乙個字元分段存放資料。資料冗餘就是用char型別代替varchar、varchar2型別,再索引就快了。

如何查詢oracle資料庫的操作記錄?

4樓:彭城程式詩人

用sys使用者以dba身份登入。

然後,檢視檢視:v_$sql,如下參考:

select *

from v_$sql t

where t.service = 'orcl'

and t.parsing_schema_name = 'bhoa'

and t.sql_text like 'update %'

order by t.last_active_time可直接查出當前update的那條sql語句。從語句中可看出對什麼表進行了什麼操作。

5樓:折柳成萌

方法1:使用logminer工具

優點:可以完全挖掘日誌內容,找出所有執行過的sql語句缺點:1. 如果沒有啟用歸檔日誌,則只能對聯機日誌進行挖掘2. 需要掌握logminer的用法

訪法2:檢視hist檢視

優點:簡單,只要使用普通的select語句查詢缺點:oracle保留約1周的歷史,所以要查太早的就不可能了-- 找出哪個資料庫使用者用什麼程式在最近三天執行過delete或truncate table的操作

舉例如下:

select c.username,

a.program,

b.sql_text,

b.command_type,

a.sample_time

from dba_hist_active_sess_history a

join dba_hist_sqltext bon a.sql_id = b.sql_idjoin dba_users c

on a.user_id = c.user_idwhere a.sample_time between sysdate - 3 and sysdate

and b.command_type in (7, 85)order by a.sample_time desc;

6樓:匿名使用者

首先,向你介紹乙個動態檢視:v$sql

該檢視展示最近一段時間所有執行過的sql語句:

select * from v$sql

即可。如果報錯找不到v$sql,一般是許可權問題,換sysdba就肯定能查到。

但要注意的是「隱式sql」,很多sql語句是呼叫執行的,(比如,儲存過程中對dbms包的呼叫,再如執行create 語句所觸發的對系統表空間、資料字典的修改等等。),這些語句同樣會展現在v$sql中。

還有其它與sql歷史記錄相關的v$檢視,詳情可以參考oracle官方文件《oracle® reference》,直接給你個10.2的文件鏈結,夠方便了吧:

7樓:眾態生態治理****

select count(stuid) from stuinfo;

count 函式;

一般是主鍵:stuid;學生編號

stuinfo: 學生資訊表

j**a操作oracle如何處理很大很大的查詢結果集

8樓:逝水無情

用oracle分頁吧!然後用乙個count做統計總數,查詢結果一般都是在記憶體中,要是在硬碟上的話要寫上去,用完了還要擦除,基本不可能這樣做

9樓:小白瓜大俠

設定個查詢起始條數和結束條數吧。

select * from (select t.*,rownum from table t where rownum < end) where rownum > start

其中start和end是其查詢條數的起始值。

10樓:wh獵人

查詢的時候不能這樣查,sql應該這樣寫:

long idx=0,once=1000;

while(idx<10000000)

11樓:小鋤頭

你每次都要全部查處資料嗎?能不能分頁查詢?

如何查詢oracle操作記錄的sql

12樓:

select * from v$sqlarea t where t.parsing_schema_name in ('使用者名稱') order by t.last_active_time desc

使用者名稱需要大寫

select * from v$sqlarea t order by t.last_active_time desc

注意 :執行此語句等等一些相關的語句 必須具有dba 的許可權 雖然這條語句很普通 但是需要的時候很管用 能夠及時查出乙個人執行sql語句情況

-------oracle 檢視已經執行過的sql 這些是存在共享池中的 --------->

select * from v$sqlarea t order by t.last_active_time desc

-----------檢視oracle會話----------------------------》

select * from v$session t order by t.last_active_time desc

-------------檢視oracle的許可權角色------------------------------>

select * from dba_role_privs; 授予使用者和其他角色的角色

select * from dba_sys_privs; 授予使用者和其他角色的系統許可權

select * from dba_tab_privs; 資料庫中物件的所有授權

select * from user_role_privs; 檢視當前使用者的角色

如何檢視oracle資料表的操作歷史

13樓:匿名使用者

可通過查詢系統檢視v$sql來查詢歷史操作。

查詢語句:

select * from v$sql;

查詢結果:

其中紅框內的部分,就是操作記錄。

14樓:南凌公

操作歷史,你是指誰操作了dml吧

可以簡單通過all_tab_modifications看dml的變化數量

具體是誰操作的只能通過分析log了

使用logminner工具

oracle 如何查詢資料庫使用者對資料庫的操作記錄 20

15樓:迷

sql>select * from v$sql (#檢視最近所作的操作)

sql>select * fromv $sqlarea(#檢視最近所作的操作)

oracle資料庫查詢資料並按要求顯示,sql高手請幫幫忙!問題解決加分

樓主這個是典型的行轉列知識點 有兩個方法 不用排序的 group by 就隱含了排序功能 如果樓主記不住decode函式 可以用case when 寫法和sql server一樣 祝樓主學習進步 希望採納 方法一 select name,sum decode course,語文 score,0 語文...

oracle的極大資料量的分頁查詢問題

相同條件在第一次查詢出結果立即再次進行查詢時 你第二次查詢你查出來的結果集是去全表遍歷查的 結果集是沒有就是一推資料 上面沒有索引沒有任何東西,建議能先處理邏輯關係減少資料量 orderby 這些能不用就不用 like也會讓index失效 用between可以代替 你這樣做分頁是全部查詢後分頁嗎?為...

如何查詢oracle資料庫中所有表的所有欄位哪個

這個不可能使用簡單一個查詢語句來實現這個功能。因為你的這個需要基本都是比一定邏輯的查詢,實現起來有相當的難度。因為首先要確定有多少張表,每張表中有多少個欄位,然後才能實現某個欄位中的某條記錄包含你所需要的這個特定的值。這僅僅是一個簡單的思路,供參考。 佴寄風 寫一個儲存過程 將show tables...