Table des matières
1. Aperçu des informations enregistrées dans rowid
2. Vérifiez et affichez le contenu du rowid
Maison base de données Oracle Explication détaillée de Rowid dans Oracle Study Guide

Explication détaillée de Rowid dans Oracle Study Guide

Mar 15, 2022 pm 06:03 PM
oracle

Cet article vous apporte des connaissances pertinentes sur Oracle, qui présente principalement des problèmes liés au rowid. Chaque ligne de données dans la table de la base de données Oracle a un identifiant unique, ou rowid, dans Oracle qui l'utilise généralement en interne pour accéder aux données. sera utile à tout le monde.

Explication détaillée de Rowid dans Oracle Study Guide

Tutoriel recommandé : "Oracle Learning Tutorial"

1. Aperçu des informations enregistrées dans rowid

Chaque ligne de données dans la table de la base de données Oracle a un identifiant unique, ou rowid, dans Oracle. généralement utilisé en interne pour accéder aux données. rowid nécessite 10 octets d'espace de stockage et utilise 18 caractères pour s'afficher. Cette valeur indique l'emplacement physique spécifique de la ligne dans la base de données Oracle. Vous pouvez utiliser rowid dans une requête pour indiquer que la valeur est incluse dans les résultats de la requête.

      La sauvegarde du rowid nécessite 10 octets ou 80 bits binaires. Un rowid étendu est stocké sur 10 octets, avec un total de 80 bits, dont obj#32bit, rfile#10bit, block#22bit et row#16bit. Par conséquent, le numéro de fichier relatif ne peut pas dépasser 1 023, c'est-à-dire que le nombre de fichiers de données dans un espace table ne peut pas dépasser 1 023 (il n'y a pas de fichier avec le numéro de fichier 0. Un fichier de données ne peut avoir que 2 ^ 22 = 4 Mo de blocs, et aucun). plus de 1 023 blocs peuvent être inclus dans un bloc 2 ^ 16 = 64 000 lignes de données. Il ne peut pas y avoir plus de 2^32=4G objets dans une base de données.
Ces 80 bits binaires sont :
1. Numéro d'objet de données, indiquant le numéro de l'objet de base de données auquel appartient cette ligne. Chaque objet de données se voit attribuer un numéro de manière unique lors de la création de la base de données, et ce numéro est unique. Le numéro de l'objet de données occupe environ 32 bits.
2. Numéro de fichier correspondant, indiquant le numéro du fichier où se trouve la ligne. Chaque étiquette de fichier dans l'espace table est unique. Le numéro de dossier occupe 10 chiffres.
3. Numéro de bloc, indiquant l'emplacement du bloc du fichier où la ligne est redirigée. Le numéro de bloc nécessite 22 chiffres.
4. Numéro de ligne, indiquant la position spécifique de la ligne dans le répertoire des lignes. Le numéro de ligne nécessite 16 chiffres.
Cela fait 80 chiffres.

Remarque : avant la version 8 d'Oracle, le rowid se composait d'un fichier # bloc # ligne #, occupant 6 octets d'espace, d'un fichier # 10 bits, d'un bloc # 22 bits et d'un numéro de ligne 16 bits. Oracle8 et les versions ultérieures modifient l'espace à 10 octets.

Le ROWID physique étendu d'Oracle a 18 bits, chaque bit est codé en 64 bits et est représenté par A~Z, a~z, 0~9, +, /, un total de 64 caractères. A représente 0, B représente 1, ... Z représente 25, a représente 26, ... z représente 51, 0 représente 52, ..., 9 représente 61, + représente 62, / représente 63.

SELECT T.ROWID, T.* FROM DEPT T
Copier après la connexion

Pour vérifier que l'espace de stockage de rowid est de 10 octets, y compris le numéro d'objet 32 ​​bits, le numéro rfile 10 bits, le numéro de bloc 22 bits et le numéro de ligne 16 bits. Nous devons utiliser la fonction dump.

select rowid,dump(rowid,16) from DEPT
Copier après la connexion

2. Vérifiez et affichez le contenu du rowid

1. Utilisez la fonction du package dbms_rowid pour afficher

SELECT ROWID,
       DBMS_ROWID.ROWID_OBJECT(ROWID) AS OBJECT,
       DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) AS FILENUM,
       DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) AS BLOCK,
       DBMS_ROWID.ROWID_ROW_NUMBER(ROWID) AS ROWN
  FROM DEPT;
Copier après la connexion

Les résultats sont les suivants :

2. Numéro d'objet de requête : DATA_OBJECT_ID

SELECT OBJECT_NAME, OBJECT_TYPE, SUBOBJECT_NAME, OBJECT_ID, DATA_OBJECT_ID
  FROM DBA_OBJECTS T
 WHERE T.OBJECT_NAME ='DEPT'
 AND T.OWNER = 'CHF';
Copier après la connexion

Les résultats sont les suivants :

Explication : La différence entre DATA_OBJECT_ID et OBJECT_ID

object_id et data_object_id sont tous deux des identifiants uniques d'objets.

object_id est l'identification logique de l'objet

data_object_id est l'identification physique de l'objet

Seuls les objets avec des emplacements de stockage physiques réels tels que des tables, des index et undo ont data_object_id. Pour les objets sans stockage physique, data_object_id est vide. Par exemple : (procédure, fonction, package, type de données, lien de base de données, définition mv, définition de vue, table temporaire, définition de table de partition, etc.)

Dans la plupart des cas, les deux sont égaux. Cependant, une fois les opérations de troncature, de déplacement, de reconstruction et autres effectuées sur l'objet, le data_object_id changera, mais le object_id ne changera pas.

Exécutez l'opération de troncature sur le DEPT cible, code : TRUNCATE TABLE DEPT ;

Interrogez à nouveau les résultats :

Réinsérez les données avant de tronquer dans la table, vérifiez que la partie du rowid représentant le numéro de l'objet est passé de AAAUOO à AAAUOP, augmenté de 1.

2) Numéro de fichier de requête :

SELECT T.SEGMENT_NAME, T.HEADER_BLOCK, T.BLOCKS, T.EXTENTS, T.RELATIVE_FNO
  FROM DBA_SEGMENTS T
 WHERE T.SEGMENT_NAME = 'DEPT'
   AND T.OWNER = 'CHF';
Copier après la connexion

HEADER_BLOCK : Le numéro du premier bloc de données de cette table

BLOCKS : Le nombre de blocs de données de cette table

RELATIVE_FNO : Numéro de fichier relatif

Les résultats sont les suivants :

说明:

从Oracle8开始,Oracle开始使用“相对文件号”,使原来一个数据库最多只能有1023个文件,扩展为一个表空间最多可以有1023个文件,每个库最多可以有65534个文件

验证文件号

SELECT T.TABLE_NAME,
       T.TABLESPACE_NAME,
       G.FILE_NAME,
       G.FILE_ID,
       G.RELATIVE_FNO
  FROM DBA_TABLES T
 INNER JOIN DBA_DATA_FILES G
    ON G.TABLESPACE_NAME = T.TABLESPACE_NAME
 WHERE T.TABLE_NAME = 'DEPT'
 AND T.OWNER = 'CHF';
Copier après la connexion

执行结果:

因为创建用户时没用指定默认表空间,建表时也没用指定表空间,所以此处使用的USERS表空间(大家不必在意这些细节...),可以看到文件号和相对文件号都是 4 ,这是因为我的数据库中每个表空间只有一个数据文件,如果一个表空间有多个数据文件,这两个值有可能不一样。

知识扩展:

我们可以使用跟踪文件查看数据文件信息,命令:alter session set events 'immediate trace name FILE_HDRS level 10';

执行完此代码后,将在数据库服务器生成一个跟踪文件,查看文件路径代码:

select
  u_dump.value || '/' ||
  db_name.value || '_ora_' ||
  v$process.spid ||
  nvl2(v$process.traceid, '_' || v$process.traceid, null )
  || '.trc' "Trace File"
from
v$parameter u_dump
cross join v$parameter db_name
cross join v$process
join v$session
on v$process.addr = v$session.paddr
where
  u_dump.name = 'user_dump_dest' and
  db_name.name = 'db_name' and
  v$session.audsid=sys_context('userenv','sessionid');
Copier après la connexion

推荐教程:《Oracle教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Fonction pour calculer le nombre de jours entre deux dates dans Oracle Fonction pour calculer le nombre de jours entre deux dates dans Oracle May 08, 2024 pm 07:45 PM

La fonction dans Oracle pour calculer le nombre de jours entre deux dates est DATEDIFF(). L'utilisation spécifique est la suivante : Spécifiez l'unité d'intervalle de temps : intervalle (tel que jour, mois, année) Spécifiez deux valeurs de date : date1 et date2DATEDIFF(interval, date1, date2) Renvoie la différence en jours

Combien de temps les journaux de la base de données Oracle seront-ils conservés ? Combien de temps les journaux de la base de données Oracle seront-ils conservés ? May 10, 2024 am 03:27 AM

La durée de conservation des journaux de la base de données Oracle dépend du type de journal et de la configuration, notamment : Redo logs : déterminé par la taille maximale configurée avec le paramètre "LOG_ARCHIVE_DEST". Redo logs archivés : Déterminé par la taille maximale configurée par le paramètre "DB_RECOVERY_FILE_DEST_SIZE". Redo logs en ligne : non archivés, perdus au redémarrage de la base de données et la durée de conservation est cohérente avec la durée d'exécution de l'instance. Journal d'audit : Configuré par le paramètre "AUDIT_TRAIL", conservé 30 jours par défaut.

L'ordre des étapes de démarrage de la base de données Oracle est L'ordre des étapes de démarrage de la base de données Oracle est May 10, 2024 am 01:48 AM

La séquence de démarrage de la base de données Oracle est la suivante : 1. Vérifiez les conditions préalables ; 2. Démarrez l'écouteur ; 3. Démarrez l'instance de base de données ; 4. Attendez que la base de données s'ouvre ; 6. Vérifiez l'état de la base de données ; . Activez le service (si nécessaire) ; 8. Testez la connexion.

Comment utiliser l'intervalle dans Oracle Comment utiliser l'intervalle dans Oracle May 08, 2024 pm 07:54 PM

Le type de données INTERVAL dans Oracle est utilisé pour représenter les intervalles de temps. La syntaxe est INTERVAL <precision> <unit> Vous pouvez utiliser des opérations d'addition, de soustraction, de multiplication et de division pour utiliser INTERVAL, ce qui convient aux scénarios tels que le stockage de données temporelles et. calculer les différences de dates.

De quelle quantité de mémoire Oracle a-t-il besoin ? De quelle quantité de mémoire Oracle a-t-il besoin ? May 10, 2024 am 04:12 AM

La quantité de mémoire requise par Oracle dépend de la taille de la base de données, du niveau d'activité et du niveau de performances requis : pour le stockage des tampons de données, des tampons d'index, l'exécution d'instructions SQL et la gestion du cache du dictionnaire de données. Le montant exact dépend de la taille de la base de données, du niveau d'activité et du niveau de performances requis. Les meilleures pratiques incluent la définition de la taille SGA appropriée, le dimensionnement des composants SGA, l'utilisation d'AMM et la surveillance de l'utilisation de la mémoire.

Comment voir le nombre d'occurrences d'un certain caractère dans Oracle Comment voir le nombre d'occurrences d'un certain caractère dans Oracle May 09, 2024 pm 09:33 PM

Pour trouver le nombre d'occurrences d'un caractère dans Oracle, effectuez les étapes suivantes : Obtenez la longueur totale d'une chaîne ; Obtenez la longueur de la sous-chaîne dans laquelle un caractère apparaît. Comptez le nombre d'occurrences d'un caractère en soustrayant la longueur de la sous-chaîne ; de la longueur totale.

Comment remplacer une chaîne dans Oracle Comment remplacer une chaîne dans Oracle May 08, 2024 pm 07:24 PM

La méthode de remplacement de chaînes dans Oracle consiste à utiliser la fonction REPLACE La syntaxe de cette fonction est : REPLACE(string, search_string, replace_string). Étapes d'utilisation : 1. Identifiez la sous-chaîne à remplacer ; 2. Déterminez la nouvelle chaîne pour remplacer la sous-chaîne ; 3. Utilisez la fonction REPLACE pour remplacer. L'utilisation avancée inclut : les remplacements multiples, le respect de la casse, le remplacement des caractères spéciaux, etc.

Exigences de configuration matérielle du serveur de base de données Oracle Exigences de configuration matérielle du serveur de base de données Oracle May 10, 2024 am 04:00 AM

Exigences de configuration matérielle du serveur de base de données Oracle : Processeur : multicœur, avec une fréquence principale d'au moins 2,5 GHz Pour les grandes bases de données, 32 cœurs ou plus sont recommandés. Mémoire : au moins 8 Go pour les petites bases de données, 16 à 64 Go pour les tailles moyennes, jusqu'à 512 Go ou plus pour les grandes bases de données ou les charges de travail lourdes. Stockage : disques SSD ou NVMe, matrices RAID pour la redondance et les performances. Réseau : réseau haut débit (10GbE ou supérieur), carte réseau dédiée, réseau à faible latence. Autres : alimentation stable, composants redondants, système d'exploitation et logiciels compatibles, dissipation thermique et système de refroidissement.

See all articles