Inhaltsverzeichnis
1. Übersicht über die in der Rowid gespeicherten Informationen
2. Überprüfen und zeigen Sie den Rowid-Inhalt an
Heim Datenbank Oracle Ausführliche Erklärung von rowid im Oracle Study Guide

Ausführliche Erklärung von rowid im Oracle Study Guide

Mar 15, 2022 pm 06:03 PM
oracle

Dieser Artikel bringt Ihnen relevantes Wissen über Oracle, das hauptsächlich verwandte Probleme mit der Row-ID einführt. Jede Datenzeile in der Oracle-Datenbanktabelle hat eine eindeutige Kennung oder Row-ID, die in Oracle normalerweise intern verwendet wird, um auf Daten zuzugreifen wird für alle hilfreich sein.

Ausführliche Erklärung von rowid im Oracle Study Guide

Empfohlenes Tutorial: „Oracle Learning Tutorial

1. Übersicht über die in der Rowid gespeicherten Informationen

Jede Datenzeile in der Tabelle der Oracle-Datenbank hat in Oracle eine eindeutige Kennung oder Rowid Wird normalerweise intern für den Zugriff auf Daten verwendet. rowid benötigt 10 Byte Speicherplatz und verwendet 18 Zeichen zur Anzeige. Dieser Wert gibt den spezifischen physischen Speicherort der Zeile in der Oracle-Datenbank an. Rowid kann in einer Abfrage verwendet werden, um anzugeben, dass der Wert in den Abfrageergebnissen enthalten ist.

      Das Speichern der Rowid erfordert 10 Bytes oder 80 Binärbits. Eine erweiterte Zeilen-ID wird in 10 Bytes mit insgesamt 80 Bits gespeichert, einschließlich obj#32bit, rfile#10bit, block#22bit und row#16bit. Daher darf die relative Dateinummer 1023 nicht überschreiten, d. h. die Anzahl der Datendateien in einem Tabellenbereich darf 1023 nicht überschreiten (es gibt keine Datei mit der Dateinummer 0. Eine Datendatei kann nur 2 ^ 22 = 4 MB Blöcke haben In einem Block können mehr als 1023 Blöcke mit 2^16=64K Datenzeilen enthalten sein. Eine Datenbank darf nicht mehr als 2^32=4G-Objekte enthalten.
Diese 80 Binärbits sind:
1. Datenobjektnummer, die die Nummer des Datenbankobjekts angibt, zu dem diese Zeile gehört. Jedem Datenobjekt wird beim Erstellen der Datenbank eindeutig eine Nummer zugewiesen, und diese Nummer ist eindeutig. Die Datenobjektnummer belegt ca. 32 Bit.
2. Entsprechende Dateinummer, die die Nummer der Datei angibt, in der sich die Zeile befindet. Jede Dateibezeichnung im Tabellenbereich ist eindeutig. Das Aktenzeichen ist 10-stellig.
3. Blocknummer, die den Speicherort des Blocks der Datei angibt, in den die Zeile umgeleitet wird. Die Blocknummer erfordert 22 Ziffern.
4. Zeilennummer, die die spezifische Position der Zeile im Zeilenverzeichnis angibt. Die Zeilennummer erfordert 16 Ziffern.
Das ergibt insgesamt 80 Ziffern.

Hinweis: Vor Oracle Version 8 bestand die Zeilen-ID aus Datei#, Block#, Zeilennummer, die 6 Byte Speicherplatz belegte, 10 Bit Datei#, 22 Bit Block# und 16 Bit Zeilen#. Oracle8 und spätere Versionen ändern den Speicherplatz auf 10 Byte.

Oracles physische erweiterte ROWID hat 18 Bit, jedes Bit ist in 64 Bit codiert und wird durch A~Z, a~z, 0~9, +, /, insgesamt 64 Zeichen, dargestellt. A steht für 0, B steht für 1, ... Z steht für 25, a steht für 26, ... z steht für 51, 0 steht für 52, ..., 9 steht für 61, + steht für 62, / steht für 63.

SELECT T.ROWID, T.* FROM DEPT T
Nach dem Login kopieren

Um zu überprüfen, ob der Speicherplatz der Zeilen-ID 10 Byte beträgt, einschließlich 32-Bit-Objektnummer, 10-Bit-Dateinummer, 22-Bit-Blocknummer und 16-Bit-Zeilennummer. Wir müssen die Dump-Funktion verwenden.

select rowid,dump(rowid,16) from DEPT
Nach dem Login kopieren

2. Überprüfen und zeigen Sie den Rowid-Inhalt an

1. Verwenden Sie die Funktion im dbms_rowid-Paket, um

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;
Nach dem Login kopieren

Die Ergebnisse sind wie folgt:

2. Fragen Sie Dateninformationen aus der Tabelle ab

1) Abfrageobjektnummer: 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';
Nach dem Login kopieren

Die Ergebnisse sind wie folgt:

Erklärung: Der Unterschied zwischen DATA_OBJECT_ID und OBJECT_ID

object_id und data_object_id sind beide eindeutige Bezeichner von Objekten.

object_id ist die logische Identifikation des Objekts

data_object_id ist die physische Identifikation des Objekts

Nur Objekte mit tatsächlichen physischen Speicherorten wie Tabellen, Indizes und Undo haben data_object_id. Bei Objekten ohne physischen Speicher ist data_object_id leer. Zum Beispiel: (Prozedur, Funktion, Paket, Datentyp, DB-Link, MV-Definition, Ansichtsdefinition, temporäre Tabelle, Partitionstabellendefinition usw.)

In den meisten Fällen sind die beiden gleich. Nachdem jedoch das Objekt abgeschnitten, verschoben, neu erstellt und andere Vorgänge ausgeführt wurden, ändert sich die data_object_id, die object_id jedoch nicht.

Führen Sie den Abschneidevorgang für die Ziel-DEPT aus, Code: TRUNCATE TABLE DEPT;

Fragen Sie die Ergebnisse erneut ab:

Fügen Sie die Daten vor dem Abschneiden erneut in die Tabelle ein und überprüfen Sie, ob der Teil der Zeilen-ID die Objektnummer darstellt hat sich von AAAUOO zu AAAUOP geändert und um 1 erhöht.

2) Abfragedateinummer:

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';
Nach dem Login kopieren

HEADER_BLOCK: Die erste Datenblocknummer dieser Tabelle

BLOCKS: Die Anzahl der Datenblöcke dieser Tabelle

RELATIVE_FNO: Relative Dateinummer

Die Ergebnisse sind wie folgt :

说明:

从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';
Nach dem Login kopieren

执行结果:

因为创建用户时没用指定默认表空间,建表时也没用指定表空间,所以此处使用的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');
Nach dem Login kopieren

推荐教程:《Oracle教程

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung von rowid im Oracle Study Guide. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Funktion zur Berechnung der Anzahl der Tage zwischen zwei Daten in Oracle Funktion zur Berechnung der Anzahl der Tage zwischen zwei Daten in Oracle May 08, 2024 pm 07:45 PM

Die Funktion in Oracle zum Berechnen der Anzahl der Tage zwischen zwei Daten ist DATEDIFF(). Die spezifische Verwendung ist wie folgt: Geben Sie die Zeitintervalleinheit an: Intervall (z. B. Tag, Monat, Jahr) Geben Sie zwei Datumswerte an: Datum1 und Datum2DATEDIFF(Intervall, Datum1, Datum2) Gibt die Differenz in Tagen zurück

Wie lange werden Oracle-Datenbankprotokolle aufbewahrt? Wie lange werden Oracle-Datenbankprotokolle aufbewahrt? May 10, 2024 am 03:27 AM

Der Aufbewahrungszeitraum von Oracle-Datenbankprotokollen hängt vom Protokolltyp und der Konfiguration ab, einschließlich: Redo-Protokolle: Wird durch die maximale Größe bestimmt, die mit dem Parameter „LOG_ARCHIVE_DEST“ konfiguriert wird. Archivierte Redo-Protokolle: Bestimmt durch die maximale Größe, die durch den Parameter „DB_RECOVERY_FILE_DEST_SIZE“ konfiguriert wird. Online-Redo-Logs: nicht archiviert, gehen beim Neustart der Datenbank verloren und der Aufbewahrungszeitraum stimmt mit der Instanzlaufzeit überein. Audit-Protokoll: Wird durch den Parameter „AUDIT_TRAIL“ konfiguriert und standardmäßig 30 Tage lang aufbewahrt.

Die Reihenfolge der Schritte zum Starten der Oracle-Datenbank ist Die Reihenfolge der Schritte zum Starten der Oracle-Datenbank ist May 10, 2024 am 01:48 AM

Die Startsequenz der Oracle-Datenbank ist: 1. Überprüfen Sie die Voraussetzungen. 3. Starten Sie die Datenbankinstanz. 6. Überprüfen Sie den Datenbankstatus . Aktivieren Sie den Dienst (falls erforderlich). 8. Testen Sie die Verbindung.

So verwenden Sie das Intervall in Oracle So verwenden Sie das Intervall in Oracle May 08, 2024 pm 07:54 PM

Der Datentyp INTERVAL wird in Oracle zur Darstellung von Zeitintervallen verwendet. Die Syntax lautet INTERVAL <Präzision> <Einheit>. Sie können Additions-, Subtraktions-, Multiplikations- und Divisionsoperationen verwenden, um INTERVAL zu betreiben, was für Szenarien wie das Speichern von Zeitdaten geeignet ist Berechnung von Datumsdifferenzen.

Wie viel Speicher benötigt Oracle? Wie viel Speicher benötigt Oracle? May 10, 2024 am 04:12 AM

Die von Oracle benötigte Speichermenge hängt von der Datenbankgröße, dem Aktivitätsniveau und dem erforderlichen Leistungsniveau ab: zum Speichern von Datenpuffern, Indexpuffern, zum Ausführen von SQL-Anweisungen und zum Verwalten des Datenwörterbuch-Cache. Die genaue Menge hängt von der Datenbankgröße, dem Aktivitätsgrad und dem erforderlichen Leistungsniveau ab. Zu den Best Practices gehören das Festlegen der geeigneten SGA-Größe, die Dimensionierung von SGA-Komponenten, die Verwendung von AMM und die Überwachung der Speichernutzung.

So sehen Sie die Häufigkeit des Vorkommens eines bestimmten Zeichens in Oracle So sehen Sie die Häufigkeit des Vorkommens eines bestimmten Zeichens in Oracle May 09, 2024 pm 09:33 PM

Um die Anzahl der Vorkommen eines Zeichens in Oracle zu ermitteln, führen Sie die folgenden Schritte aus: Ermitteln Sie die Gesamtlänge einer Zeichenfolge. Ermitteln Sie die Länge der Teilzeichenfolge, in der ein Zeichen vorkommt. Zählen Sie die Anzahl der Vorkommen eines Zeichens, indem Sie die Länge der Teilzeichenfolge subtrahieren von der Gesamtlänge.

So ersetzen Sie eine Zeichenfolge in Oracle So ersetzen Sie eine Zeichenfolge in Oracle May 08, 2024 pm 07:24 PM

Die Methode zum Ersetzen von Zeichenfolgen in Oracle besteht in der Verwendung der REPLACE-Funktion. Die Syntax dieser Funktion lautet: REPLACE(string, search_string, replacement_string). Verwendungsschritte: 1. Identifizieren Sie die zu ersetzende Teilzeichenfolge. 2. Bestimmen Sie die neue Zeichenfolge, um die Teilzeichenfolge zu ersetzen. 3. Verwenden Sie zum Ersetzen die REPLACE-Funktion. Zur erweiterten Verwendung gehören: Mehrfachersetzungen, Berücksichtigung der Groß-/Kleinschreibung, Ersetzung von Sonderzeichen usw.

Anforderungen an die Hardwarekonfiguration des Oracle-Datenbankservers Anforderungen an die Hardwarekonfiguration des Oracle-Datenbankservers May 10, 2024 am 04:00 AM

Anforderungen an die Hardwarekonfiguration des Oracle-Datenbankservers: Prozessor: Multi-Core, mit einer Hauptfrequenz von mindestens 2,5 GHz. Für große Datenbanken werden 32 Kerne oder mehr empfohlen. Speicher: Mindestens 8 GB für kleine Datenbanken, 16–64 GB für mittelgroße Datenbanken, bis zu 512 GB oder mehr für große Datenbanken oder hohe Arbeitslasten. Speicher: SSD- oder NVMe-Festplatten, RAID-Arrays für Redundanz und Leistung. Netzwerk: Hochgeschwindigkeitsnetzwerk (10 GbE oder höher), dedizierte Netzwerkkarte, Netzwerk mit geringer Latenz. Sonstiges: Stabile Stromversorgung, redundante Komponenten, kompatibles Betriebssystem und Software, Wärmeableitung und Kühlsystem.

See all articles