OracleMove命令总结
Oracle Move命令总结 从8i开始,oracle开始提供Move的命令。我们通常使用这个命令,将一个table segment从一个tablespace移动到另一个tablespace。Move实际上是在block之间物理的copy数据,那么,我们可以通过这种方式来降低table的HWM。我们先通过一个实验
Oracle Move命令总结
从8i开始,oracle开始提供Move的命令。我们通常使用这个命令,将一个table segment从一个tablespace移动到另一个tablespace。Move实际上是在block之间物理的copy数据,那么,我们可以通过这种方式来降低table的HWM。我们先通过一个实验来看看move是如何移动数据的。
1.建表并插入数据:
SQL> create table sjh.test1(id int) tablespaceusers;
表已创建。
SQL> insert into sjh.test1 values(1);
已创建 1 行。
SQL> insert into sjh.test1 values(2);
已创建 1 行。
SQL> insert into sjh.test1 values(3);
已创建 1 行。
SQL> insert into sjh.test1 values(4);
已创建 1 行。
SQL> insert into sjh.test1 values(5);
已创建 1 行。
SQL> insert into sjh.test1 values(6);
已创建 1 行。
SQL> insert into sjh.test1 values(7);
已创建 1 行。
SQL> insert into sjh.test1 values(8);
已创建 1 行。
S QL> commit;
提交完成。
SQL> select * from sjh.test1;
已选择8行。
2.查看表的rowid信息和block id信息:
SQL> select rowid,id from sjh.test1;
已选择8行。
SQL> select EXTENT_ID,FILE_ID,RELATIVE_FNO,BLOCK_ID,BLOCKS
--8条记录都在一个块上(AAAABH)
这里简单介绍一下ROWID的知识:ROWID在磁盘上需要10个字节的存储空间并使用18个字符来显示它包含下列组件:
数据对象编号:每个数据对象如表或索引在创建时都分配有此编号,并且此编号在数据库中是唯一的;
相关文件编号:此编号对于一个表空间中的每个文件是唯一的;
块编号:表示包含此行的块在文件中的位置;
行编号:标识块头中行目录位置的位置;
在内部数据对象编号需要32 位,相关文件编号需要10 位,块编号需要22,位行编号需要16 位,加起来总共是80 位或10 个字节,ROWID使用以64 为基数的编码方案来显示该方案将六个位置用于数据对象,编号三个位置用于相关文件编号六个位置用于块编号三个位置用于行编号以64 为基数的编码方案使用字符A-Z a-z 0-9 + 和/共64 个字符,
如下例所示:AAAMlQAAE AAAABH AAA
3.做一些DML操作,再观察ROWID有没有发生变化:
SQL> delete from sjh.test1 where id=1;
已删除 1 行。
SQL> delete from sjh.test1 where id=3;
已删除 1 行。
SQL> delete from sjh.test1 where id=5;
已删除 1 行。
SQL> commit;
提交完成。
SQL> select rowid,id from sjh.test1;
--我们看到ROWID保持不变。
4.做MOVE操作,然后观察ROWID的情况:
SQL> alter table sjh.test1 move;
表已更改。
SQL> select rowid,id from sjh.test1;
--ROWID发生变化BLOCK_ID由原来的65变为73,BLOCK的编号由原来的AAAABH变为AAAABM
5.move对HWM的影响:
这里引用网友yjz0065的一个例子:
SQL> create table my_objects tablespace HWM
SQL> delete from my_objects where rownum
9999 rows deleted
SQL> select count(*) from my_objects;
COUNT(*)
----------
SQL> exec show_space(p_segname =>'MY_OBJECTS',p_owner => 'DLINGER',p_type => 'TABLE');
Total Blocks............................425
Total Bytes.............................3481600
Unused Blocks...........................3
Unused Bytes............................24576
Last Used Ext FileId....................11
Last Used Ext BlockId...................1294
Last Used Block.........................2
这里HWM=425- 3 + 1 = 423
然后对tableMY_OBJECTS进行move操作:
SQL> alter table MY_OBJECTS move;
表已更改。
SQL> exec show_space(p_segname =>'MY_OBJECTS',p_owner => 'DLINGER',p_type => 'TABLE');
Total Blocks............................290
Total Bytes.............................2375680
Unused Blocks...........................1
Unused Bytes............................8192
Last Used Ext FileId....................11
Last Used Ext BlockId...................1584
Last Used Block.........................4
我们可以看到,tableMY_OBJECTS的HWM从423移动到290,table的HWM降低了!(show_space是自定义的一个过程)。
Move的一些用法:
以下是altertable 中move子句的完整语法,我们介绍其中的几点:
MOVE [ONLINE]
[segment_attributes_clause]
[data_segment_compression]
[index_org_table_clause]
[ { LOB_storage_clause | varray_col_properties }
?0?2?0?2?0?2 [ { LOB_storage_clause | varray_col_properties } ]...
]
[parallel_clause]
a. 我们可以使用move将一个table从当前的tablespace上移动到另一个tablespace上,如:
alter table t move tablespace tablespace_name;
b. 我们还可以用move来改变table已有的block的存储参数,如:
alter table t move storage (initial 30k next 50k);
c.另外,move操作也可以用来解决table中的行迁移的问题。
使用move的一些注意事项:
a. table上的index需要rebuild:
在前面我们讨论过,move操作后,数据的rowid发生了改变,我们知道,index是通过rowid来fetch数据行的,所以,table上的index是必须要rebuild的。
SQL> create index i_my_objects on my_objects (object_id);
Index created
SQL> alter table my_objects move;
Table altered
SQL> select index_name,status from user_indexeswhere index_name='I_MY_OBJECTS';
从这里可以看到,当tableMY_OBJECTS进行move操作后,该table上的inedx的状态为UNUSABLE,这时,,我们可以使用alterindex I_MY_OBJECTS rebuild online的命令,对index I_MY_OBJECTS进行在线rebuild。
b. move时对table的锁定
当我们对tableMY_OBJECTS进行move操作时,查询v$locked_objects视图可以发现,tableMY_OBJECTS上加了exclusivelock:
SQL>select OBJECT_ID, SESSION_ID,ORACLE_USERNAME,LOCKED_MODE from v$locked_objects;
SQL> select object_id from user_objects whereobject_name = 'MY_OBJECTS';
OBJECT_ID
----------

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Perintah sudo membolehkan pengguna menjalankan arahan dalam mod keistimewaan tinggi tanpa bertukar kepada mod superuser. Artikel ini akan memperkenalkan cara untuk mensimulasikan fungsi yang serupa dengan arahan sudo dalam sistem Windows. Apakah Perintah Shudao? Sudo (singkatan untuk "superuser do") ialah alat baris perintah yang membenarkan pengguna sistem pengendalian berasaskan Unix seperti Linux dan MacOS untuk melaksanakan arahan dengan keistimewaan tinggi yang biasanya dipegang oleh pentadbir. Menjalankan arahan SUDO dalam Windows 11/10 Walau bagaimanapun, dengan pelancaran versi pratonton Windows 11 Insider terkini, pengguna Windows kini boleh mengalami ciri ini. Ciri baharu ini membolehkan pengguna

Artikel ini akan memperkenalkan pembaca kepada cara menggunakan gesaan arahan (CommandPrompt) untuk mencari alamat fizikal (alamat MAC) penyesuai rangkaian dalam sistem Win11. Alamat MAC ialah pengecam unik untuk kad antara muka rangkaian (NIC), yang memainkan peranan penting dalam komunikasi rangkaian. Melalui gesaan arahan, pengguna boleh dengan mudah mendapatkan maklumat alamat MAC semua penyesuai rangkaian pada komputer semasa, yang sangat membantu untuk menyelesaikan masalah rangkaian, mengkonfigurasi tetapan rangkaian dan tugas lain. Kaedah 1: Gunakan "Command Prompt" 1. Tekan kombinasi kekunci [Win+X], atau [klik kanan] klik [logo Windows] pada bar tugas, dan dalam item menu yang terbuka, pilih [Run]; . Jalankan tetingkap , masukkan perintah [cmd] dan kemudian

Dalam sistem Win11, anda boleh mendayakan atau melumpuhkan mod sesi dipertingkatkan Hyper-V melalui arahan. Artikel ini akan memperkenalkan cara menggunakan arahan untuk mengendalikan dan membantu pengguna mengurus dan mengawal fungsi Hyper-V dalam sistem dengan lebih baik. Hyper-V ialah teknologi virtualisasi yang disediakan oleh Microsoft Ia dibina ke dalam Windows Server dan Windows 10 dan 11 (kecuali Home Edition), membenarkan pengguna menjalankan sistem pengendalian maya dalam sistem Windows. Walaupun mesin maya diasingkan daripada sistem pengendalian hos, mereka masih boleh menggunakan sumber hos, seperti kad bunyi dan peranti storan, melalui tetapan. Salah satu tetapan utama adalah untuk mendayakan Mod Sesi Dipertingkat. Mod sesi dipertingkatkan ialah Hiper

Tetingkap cmd menggesa bahawa telnet bukan perintah dalaman atau luaran Masalah ini pasti menyusahkan anda beberapa langkah kecil. Tetapan operasi boleh menyelesaikan masalah tetingkap cmd yang mendorong telnet bukan arahan dalaman atau luaran Mari kita lihat penyelesaian kepada tetingkap cmd yang mendorong telnet bukan arahan dalaman atau luaran yang dibawa oleh editor hari ini. Tetingkap cmd menggesa bahawa telnet bukan perintah dalaman atau luaran Penyelesaian: 1. Buka panel kawalan komputer. 2. Cari atur cara dan fungsi. 3. Cari Hidupkan atau matikan ciri Windows di sebelah kiri. 4. Cari “telnet client

1. Gambaran Keseluruhan Perintah sar memaparkan laporan penggunaan sistem melalui data yang dikumpul daripada aktiviti sistem. Laporan ini terdiri daripada bahagian yang berbeza, setiap satu mengandungi jenis data dan masa data dikumpulkan. Mod lalai perintah sar memaparkan penggunaan CPU pada kenaikan masa yang berbeza untuk pelbagai sumber yang mengakses CPU (seperti pengguna, sistem, penjadual I/O, dsb.). Selain itu, ia memaparkan peratusan CPU terbiar untuk tempoh masa tertentu. Nilai purata untuk setiap titik data disenaraikan di bahagian bawah laporan. laporan sar mengumpul data setiap 10 minit secara lalai, tetapi anda boleh menggunakan pelbagai pilihan untuk menapis dan melaraskan laporan ini. Sama seperti arahan masa aktif, arahan sar juga boleh membantu anda memantau beban CPU. Melalui sar, anda boleh memahami berlakunya beban yang berlebihan

Apakah cara yang betul untuk memulakan semula perkhidmatan dalam Linux? Apabila menggunakan sistem Linux, kami sering menghadapi situasi di mana kami perlu memulakan semula perkhidmatan tertentu, tetapi kadangkala kami mungkin menghadapi beberapa masalah semasa memulakan semula perkhidmatan, seperti perkhidmatan tidak benar-benar berhenti atau bermula. Oleh itu, adalah sangat penting untuk menguasai cara yang betul untuk memulakan semula perkhidmatan. Di Linux, anda biasanya boleh menggunakan perintah systemctl untuk mengurus perkhidmatan sistem. Perintah systemctl adalah sebahagian daripada pengurus sistem systemd

LSOF (ListOpenFiles) ialah alat baris arahan yang digunakan terutamanya untuk memantau sumber sistem yang serupa dengan sistem pengendalian Linux/Unix. Melalui arahan LSOF, pengguna boleh mendapatkan maklumat terperinci tentang fail aktif dalam sistem dan proses yang mengakses fail ini. LSOF boleh membantu pengguna mengenal pasti proses yang sedang menduduki sumber fail, dengan itu mengurus sumber sistem dengan lebih baik dan menyelesaikan masalah yang mungkin berlaku. LSOF berkuasa dan fleksibel, dan boleh membantu pentadbir sistem mengesan masalah berkaitan fail dengan cepat, seperti kebocoran fail, deskriptor fail yang tidak ditutup, dsb. Melalui Perintah LSOF Alat baris arahan LSOF membenarkan pentadbir dan pembangun sistem untuk: Menentukan proses yang sedang menggunakan fail atau port tertentu, sekiranya berlaku konflik port

Linux ialah sistem pengendalian berkuasa yang menyediakan banyak mekanisme komunikasi antara proses yang cekap, seperti paip, isyarat, baris gilir mesej, memori kongsi, dll. Tetapi adakah cara yang lebih mudah, lebih fleksibel dan lebih cekap untuk berkomunikasi? Jawapannya ya, itulah eventfd. eventfd ialah panggilan sistem yang diperkenalkan dalam Linux versi 2.6 Ia boleh digunakan untuk melaksanakan pemberitahuan acara, iaitu, untuk menyampaikan acara melalui deskriptor fail. eventfd mengandungi pembilang integer tidak bertanda 64-bit yang diselenggara oleh kernel Proses ini boleh membaca/menukar nilai pembilang dengan membaca/menulis deskriptor fail ini untuk mencapai komunikasi antara proses. Apakah kelebihan eventfd? Ia mempunyai ciri-ciri berikut
