[20200423]12c刪除不需要的記錄.txt
[20200423]12c刪除不需要的記錄.txt
--//12CR2支援改動表僅僅包括需要的特定記錄,刪除不需要的記錄。語法如下:
--// alter table table_name move including rows where <query_where >.
1.環境:
SCOTT@book> @ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2.測試:
SCOTT@test01p> create table tx as select * from all_objects ;
Table created.
SCOTT@test01p> create unique index i_tx_object_id on tx(object_id);
Index created.
SCOTT@test01p> select count(*) from tx ;
COUNT(*)
----------
68135
SCOTT@test01p> select count(*) from tx where owner='SYS';
COUNT(*)
----------
47452
--//僅僅需要保留owner='SYS'記錄,理論刪除其它redo消耗很大,以前常規方法是透過ctas或者物化檢視方式建立新表替換舊錶。
--//現在可以執行如下:
SCOTT@test01p> alter table tx move online including rows where owner='SYS' UPDATE INDEXES;
Table altered.
SCOTT@test01p> select count(*) from tx ;
COUNT(*)
----------
47452
SCOTT@test01p> select object_name from tx where object_id=2;
OBJECT_NAME
--------------------
C_OBJ#
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 8tw1qfk3y5ru2, child number 0
-------------------------------------
select object_name from tx where object_id=2
Plan hash value: 3474389346
-----------------------------------------------------------------------------------------------
| Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time |
-----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 2 (100)| |
| 1 | TABLE ACCESS BY INDEX ROWID| TX | 1 | 41 | 2 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN | I_TX_OBJECT_ID | 1 | | 1 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1 / TX@SEL$1
2 - SEL$1 / TX@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("OBJECT_ID"=2)
--//索引依舊有效。
This only moves the rows matching the where clause. Provided you want to remove a large chunk of data, this can be much
faster than delete.
And it has an online clause. So unlike the CTAS methods, you can do this while the application is still running.
--//這種方式更加簡單,不知道如果在原表上有DML,會出現什麼情況,沒有測試。至少一些維護會簡單許多,我估計有點像
--//線上重定義使用物化檢視的方式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2687773/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20190130]刪除tab$記錄的恢復.txt
- [20190225]刪除tab$記錄的恢復5.txt
- [20190130]刪除tab$記錄的恢復2.txt
- [20190212]刪除tab$記錄的恢復3.txt
- [20180612]刪除bootstrap$記錄無法啟動.txtboot
- [20220909]bbed關於刪除記錄恢復的問題.txt
- 刪除重複id的記錄
- mysql刪除一條記錄MySql
- [20180707]刪除結尾帶.的檔案與目錄.txt
- SharePlex刪除不需要佇列佇列
- windows10更新記錄刪除_怎樣刪除win10更新歷史記錄WindowsWin10
- [20200423]防水牆與v$open_cursor.txt
- [20181207]12c bootstrap$段頭都會記錄在哪裡.txtboot
- MySQL:簡單記錄刪除binary log的介面MySql
- 為什麼刪除記錄表檔案不會減小?(記錄的插入與刪除在磁碟上的變化)
- 怎麼刪除電腦中開啟的檔案記錄?刪除電腦中開啟的檔案記錄方法教程
- win10怎麼刪除搜尋框記錄_win10系統刪除搜尋框記錄的步驟Win10
- [20230329]記錄除錯sql語句遇到的問題.txt除錯SQL
- jQuery動態新增和刪除表格記錄jQuery
- mysql支援跨表delete刪除多表記錄MySqldelete
- MariaDB刪除重複記錄效能測試
- [20180329]刪除帶斜線的索引.txt索引
- win10更新失敗記錄怎麼刪除_win10更新失敗記錄刪除操作方法Win10
- Oracle 12c 建立與刪除CDB、PDBsOracle
- [20201112]tmpwatch 刪除檔案.txt
- python雨滴譜刪除不需要的粒徑列值Python
- win10 開始選單照片記錄怎麼刪除 win10刪除開始選單記錄方法Win10
- sql刪除重複記錄只保留一條SQL
- [20180614]刪除bootstrap$記錄無法啟動2boot
- [20210803]刪除user$的恢復準備.txt
- [20210930]bbed恢復刪除的資料.txt
- [20210325]如何避免sequence意外刪除.txt
- [20180522]避免刪除共享印表機.txt
- [20180409]delete刪除緩慢分析.txtdelete
- 得到txt空白行的行數、將txt檔案的空行刪除和刪除csv檔案中指定的行
- 使用者對某條賬單記錄的刪除操作
- 記錄一次刪除檔案失敗的問題
- 單表的更新UPDATE和刪除記錄DELETE(二十六)delete