如果沒記錯的話,insert和delete操作應該會直接變更該視圖的信息。
創新互聯公司業務包括:成品網站、企業產品展示型網站建設、高端網站設計、電子商務型網站建設、外貿營銷網站建設(多語言)、商城建設、按需定制制作、網絡營銷推廣等。效率優先,品質保證,用心服務是我們的核心價值觀,我們將繼續以良好的信譽為基礎,秉承穩固與發展、求實與創新的精神,為客戶提供更全面、更優質的互聯網服務!
distinct_keys來自于IND$的DISTKEY字段,唯一鍵值的數量。
num_rows則是來自于IND$的ROWCNT字段,記錄的數量(行數)
比較一下唯一鍵的數量和表中的行數,就可以判斷索引的選擇性。選擇性越高,索引返回的數據就越少。索引的選擇性可以幫助基于代價的優化器來判斷執行途徑。
字典怎么使用,那得建立在你對字典的了解上。
比如你可以在 select*from user_source中查看所有的數據庫代碼,方便你查看某一張表是在哪里被插入數據,被哪里被應用。
dba_tab_cols中可以看出一個表有哪些字段,每個字段的類型,以及其他信息。
通過一些字典表查看表占用的空間,表空間大小,剩余空間,。。等等。
第一步,獲得當前scn
select dbms_flashback.get_system_change_number from dual;
第二步,根據第三步返回的scn不停地嘗試查詢直到所有記錄都存在為止。
select count(*) from t1 as of scn 10670000;--10670000為返回的scn
第三步,當第二步返回的值為所刪除的記錄數時執行
insert into t1 select * from t1 as of scn 10670000;
commite;
到此數據恢復完畢!
----------------------------------------------------------------------------------------------------
總結:
閃回查詢可恢復較近的數據。
SCN(系統改變號),它的英文全拼為:System Change Number ,它是數據庫中非常重要的一個數據結構。SCN 是 Oracle 內部的時鐘機制, Oracle 通過 SCN 來維護數據庫的一致性,并通過SCN 實施 Oracle 至關重要的恢復機制。
閃回查詢無法恢復到表結構改變之前,因為閃回查詢使用的當前的數據字典。
1、在oracle9i中閃回數據先要看是否設置了閃回功能,具體如何判斷可根據步驟一來查看。
2、在數據成功閃回后一定要先檢驗數據質量這個是很重要的一步。
3、Flaslhback是9i推出的新特性,但9i只提供閃回查詢;而10g提供了閃回查詢(Flashback Query)、閃回表(Flashback Table)以及閃回數據庫(Flashback Database)等更強大的功能。
可以直接查詢該表半天左右前的數據情況
select * from t1 as of timestamp sysdate-1/2;
比較兩集合不同找出不同數據
select * from t1 as of timestamp sysdate-1/2
minus select * from t1;
但是在某些情況下,建議使用as of scn的方式執行flashback query,比如需要對多個相互有主外鍵約束的表進行恢復時,如果使用as of timestamp的方式,可能會由于時間點不統一的緣故造成數據選擇或插入失敗,通過scn方式則能夠確保記錄的約束一致性
CREATE OR REPLACE FUNCTION f_search_dic_a(p_str VARCHAR2)
RETURN VARCHAR2
IS
l_result VARCHAR2(4000);
l_dic_a_str VARCHAR2(100);
l_code VARCHAR2(10);
l_length NUMBER;
l_start_position NUMBER := 1;
l_seperator_position NUMBER;
BEGIN
l_length := length(p_str);
LOOP
l_dic_a_str := NULL;
l_code := NULL;
l_seperator_position := INSTR(p_str, ',', l_start_position);
EXIT WHEN l_seperator_position = 0;
l_code := SUBSTR(p_str, l_start_position, l_seperator_position-l_start_position);
SELECT value
INTO l_dic_a_str
FROM dic_a
WHERE code = l_code;
l_result := l_result || l_dic_a_str;
l_start_position := l_seperator_position + 1; END LOOP;
l_code := SUBSTR(p_str, l_start_position, l_length-l_start_position+1);
SELECT value
INTO l_dic_a_str
FROM dic_a
WHERE code = l_code;
l_result := l_result || l_dic_a_str;
RETURN l_result;
END;
/
這是測試結果
SQL select f_search_dic_a('02,05,06,08,10,00') from dual;
F_SEARCH_DIC_A('02,05,06,08,10
--------------------------------------------------------------------------------
貳伍陸捌拾零
再給兩個測試
SQL select f_search_dic_a('02,05,零,零,06,08,10,00') from dual;
F_SEARCH_DIC_A('02,05,零,零,06
--------------------------------------------------------------------------------
貳伍〇〇陸捌拾零
SQL select f_search_dic_a('01,零,03,07,02,04,零,04,03,01') from dual;
F_SEARCH_DIC_A('01,零,03,07,02
--------------------------------------------------------------------------------
壹〇叁柒貳肆〇肆叁壹
-- 查詢某表的數據字典
SELECT A.TABLE_NAME AS 表名,A.COLUMN_NAME AS 字段名,
DECODE(A.CHAR_LENGTH,0,DECODE(A.DATA_SCALE,NULL,A.DATA_TYPE,A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')'),
A.DATA_TYPE||'('||A.CHAR_LENGTH||')') as 字段類型1,A.DATA_TYPE AS 字段類型,A.DATA_PRECISION AS 有效位,A.DATA_SCALE AS 精度值,
A.CHAR_LENGTH AS 字段長度,A.NULLABLE AS 能否為空
FROM sys.user_tab_columns A where A.table_name = 'TAM_ADDRESS'
-- 具有dba權限用戶導出數據字典
SELECT A.TABLE_NAME AS 表名,A.COLUMN_NAME AS 字段名,
DECODE(A.CHAR_LENGTH,0,DECODE(A.DATA_SCALE,NULL,A.DATA_TYPE,A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')'),
A.DATA_TYPE||'('||A.CHAR_LENGTH||')') as 字段類型,A.DATA_DEFAULT AS 默認值,
A.NULLABLE AS 能否為空,B.comments AS 備注
FROM sys.all_tab_columns A,sys.DBA_COL_COMMENTS B
WHERE A.owner=B.owner AND A.table_name=B.table_name AND A.COLUMN_NAME=B.COLUMN_NAME AND A.owner='guoqiang' AND
A.TABLE_NAME IN (
'TB_SUBJECT', 'TB_SUBJECT_BALANCE', 'TB_VOUCHER', 'TB_VOUCHER_DETAILS',
'TB_CUSTOMER', 'TB_VOUCHER_CLASSIFY_MODE', 'TB_VOUCHER_TYPE', 'TB_ASSET',
'TB_ASSET_CATALOG', 'TB_M_DM_ASSETS_LIABI_RPT', 'TB_M_DM_PROFIT_RPT',
'TB_M_DM_REVENUE_RPT', 'TB_M_DM_COST_RPT')ORDER BY A.TABLE_NAME
SELECT A.TABLE_NAME AS 表名,A.COLUMN_NAME AS 字段名,
DECODE(A.CHAR_LENGTH,0,DECODE(A.DATA_SCALE,NULL,A.DATA_TYPE,A.DATA_TYPE||'('||A.DATA_PRECISION||','||A.DATA_SCALE||')'),
A.DATA_TYPE||'('||A.CHAR_LENGTH||')') as 字段類型,A.DATA_DEFAULT AS 默認值,
A.NULLABLE AS 能否為空,B.comments AS 備注
FROM sys.user_tab_columns A,sys.user_col_comments B
WHERE A.table_name=B.table_name AND A.COLUMN_NAME=B.COLUMN_NAME AND
A.TABLE_NAME IN (
'TB_SUBJECT', 'TB_SUBJECT_BALANCE', 'TB_VOUCHER', 'TB_VOUCHER_DETAILS',
'TB_CUSTOMER', 'TB_VOUCHER_CLASSIFY_MODE', 'TB_VOUCHER_TYPE', 'TB_ASSET',