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
----------

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

La commande sudo permet aux utilisateurs d'exécuter des commandes en mode privilèges élevés sans passer en mode superutilisateur. Cet article explique comment simuler des fonctions similaires aux commandes sudo dans les systèmes Windows. Qu'est-ce que la commande Shudao ? Sudo (abréviation de « superuser do ») est un outil de ligne de commande qui permet aux utilisateurs de systèmes d'exploitation Unix tels que Linux et MacOS d'exécuter des commandes avec des privilèges élevés généralement détenus par les administrateurs. Exécution de commandes SUDO sous Windows 11/10 Cependant, avec le lancement de la dernière version préliminaire de Windows 11 Insider, les utilisateurs de Windows peuvent désormais profiter de cette fonctionnalité. Cette nouvelle fonctionnalité permet aux utilisateurs de

Cet article expliquera aux lecteurs comment utiliser l'invite de commande (CommandPrompt) pour trouver l'adresse physique (adresse MAC) de la carte réseau dans le système Win11. Une adresse MAC est un identifiant unique pour une carte d'interface réseau (NIC), qui joue un rôle important dans les communications réseau. Grâce à l'invite de commande, les utilisateurs peuvent facilement obtenir les informations d'adresse MAC de toutes les cartes réseau de l'ordinateur actuel, ce qui est très utile pour le dépannage du réseau, la configuration des paramètres réseau et d'autres tâches. Méthode 1 : utilisez « Invite de commandes » 1. Appuyez sur la combinaison de touches [Win+X], ou [cliquez avec le bouton droit], cliquez sur le [logo Windows] dans la barre des tâches, et dans l'élément de menu qui s'ouvre, sélectionnez [Exécuter] ; . Exécutez la fenêtre, entrez la commande [cmd], puis.

Dans le système Win11, vous pouvez activer ou désactiver le mode de session amélioré Hyper-V via des commandes. Cet article expliquera comment utiliser les commandes pour fonctionner et aidera les utilisateurs à mieux gérer et contrôler les fonctions Hyper-V dans le système. Hyper-V est une technologie de virtualisation fournie par Microsoft. Elle est intégrée à Windows Server et Windows 10 et 11 (sauf Home Edition), permettant aux utilisateurs d'exécuter des systèmes d'exploitation virtuels sur les systèmes Windows. Bien que les machines virtuelles soient isolées du système d'exploitation hôte, elles peuvent toujours utiliser les ressources de l'hôte, telles que les cartes son et les périphériques de stockage, via les paramètres. L'un des paramètres clés consiste à activer le mode de session améliorée. Le mode de session amélioré est Hyper

La fenêtre cmd indique que telnet n'est pas une commande interne ou externe. Ce problème n'apparaît pas car il n'y a aucun problème avec le fonctionnement de l'utilisateur. Les utilisateurs n'ont pas besoin de trop s'inquiéter. quelques petites étapes. Les paramètres de fonctionnement peuvent résoudre le problème de la fenêtre cmd indiquant que telnet n'est pas une commande interne ou externe. Jetons un coup d'œil à la solution à la fenêtre cmd invitant que telnet n'est pas une commande interne ou externe apportée par le. éditeur aujourd'hui. La fenêtre cmd indique que telnet n'est pas une commande interne ou externe. Solution : 1. Ouvrez le panneau de configuration de l'ordinateur. 2. Recherchez des programmes et des fonctions. 3. Recherchez Activer ou désactiver des fonctionnalités Windows sur la gauche. 4. Recherchez « client telnet

1. Présentation La commande sar affiche les rapports d'utilisation du système grâce aux données collectées à partir des activités du système. Ces rapports sont composés de différentes sections, chacune contenant le type de données et la date à laquelle les données ont été collectées. Le mode par défaut de la commande sar affiche l'utilisation du processeur à différents incréments de temps pour diverses ressources accédant au processeur (telles que les utilisateurs, les systèmes, les planificateurs d'E/S, etc.). De plus, il affiche le pourcentage de CPU inactif pour une période de temps donnée. La valeur moyenne de chaque point de données est répertoriée au bas du rapport. sar rapporte des données collectées toutes les 10 minutes par défaut, mais vous pouvez utiliser diverses options pour filtrer et ajuster ces rapports. Semblable à la commande uptime, la commande sar peut également vous aider à surveiller la charge du processeur. Grâce à sar, vous pouvez comprendre l'apparition d'une charge excessive

Quelle est la bonne façon de redémarrer un service sous Linux ? Lors de l'utilisation d'un système Linux, nous rencontrons souvent des situations dans lesquelles nous devons redémarrer un certain service, mais nous pouvons parfois rencontrer des problèmes lors du redémarrage du service, comme le fait que le service ne s'arrête ou ne démarre pas réellement. Par conséquent, il est très important de maîtriser la bonne manière de redémarrer les services. Sous Linux, vous pouvez généralement utiliser la commande systemctl pour gérer les services système. La commande systemctl fait partie du gestionnaire système systemd

LSOF (ListOpenFiles) est un outil de ligne de commande principalement utilisé pour surveiller les ressources système similaires aux systèmes d'exploitation Linux/Unix. Grâce à la commande LSOF, les utilisateurs peuvent obtenir des informations détaillées sur les fichiers actifs dans le système et les processus qui accèdent à ces fichiers. LSOF peut aider les utilisateurs à identifier les processus occupant actuellement les ressources de fichiers, gérant ainsi mieux les ressources système et résolvant les problèmes possibles. LSOF est puissant et flexible et peut aider les administrateurs système à localiser rapidement les problèmes liés aux fichiers, tels que les fuites de fichiers, les descripteurs de fichiers non fermés, etc. Via la commande LSOF L'outil de ligne de commande LSOF permet aux administrateurs système et aux développeurs de : Déterminer quels processus utilisent actuellement un fichier ou un port spécifique, en cas de conflit de port.

Résumé de la fonction system() sous Linux Dans le système Linux, la fonction system() est une fonction très couramment utilisée, qui permet d'exécuter des commandes en ligne de commande. Cet article présentera la fonction system() en détail et fournira quelques exemples de code spécifiques. 1. Utilisation de base de la fonction system(). La déclaration de la fonction system() est la suivante : intsystem(constchar*command) où le paramètre de commande est un caractère.
