Heim Datenbank Oracle Oracle-Ansichtssperre und Sitzungsausführungs-SQL (Zusammenfassungsfreigabe)

Oracle-Ansichtssperre und Sitzungsausführungs-SQL (Zusammenfassungsfreigabe)

Jul 01, 2022 pm 12:23 PM
oracle

Dieser Artikel bringt Ihnen relevantes Wissen über Oracle, das hauptsächlich Probleme im Zusammenhang mit der Überprüfung von Sperren und SQL bei der Sitzungsausführung behandelt. Ich hoffe, es wird für alle hilfreich sein.

Oracle-Ansichtssperre und Sitzungsausführungs-SQL (Zusammenfassungsfreigabe)

Empfohlenes Tutorial: „Oracle Video Tutorial

Datenbankumgebung für die Testdaten dieses Artikels: Oracle 11g

Warum heißt es, dass es sich bei der Sitzungsausführung um SQL handelt? Die Aufzeichnung einer bestimmten Sitzung kann nicht abgerufen werden. Ich habe auch viele Blog-Beiträge gelesen, die besagten, dass die SQL-Ausführungsaufzeichnung einer bestimmten Sitzung abgefragt werden kann, indem die sql_id mit der Ansicht v$active_session_history und v$ verknüpft wird sqlarea. Nach dem Üben wurde festgestellt, dass dies nicht möglich ist (durch die Tabelle dba_hist_active_sess_history versucht. Es funktioniert auch nicht), die sql_id einiger SQL wird überhaupt nicht in v$active_session_history aufgezeichnet. Ich habe versucht, den Parameter zu ändern : control_management_pack_access und festgestellt, dass ich keine Berechtigung hatte. Und ich habe es überprüft und festgestellt, dass der Parameterwert normal und die Parameterdatenbank geöffnet ist, siehe Blog-Beitrag: Oracle V$ACTIVE_SESSION_HISTORY query has no data – wazz_s – Blog Park

Der Ausführungsdatensatz von SQL kann über die v$sqlarea-Ansicht abgefragt werden, aber die Sitzungs-ID, die die SQL ausführt, kann nicht gefunden werden. Es wäre großartig, wenn es eine solche Sitzungs-ID gäbe. Ich kann herausfinden, wer die SQL ausgeführt hat .

Wenn ich die SQL abfragen möchte, die die Sperrung der Tabelle verursacht hat, lehren die meisten Blog-Beiträge im Internet dies, indem ich die Ansicht v $ session abfrage, ihn als Wert A aufzeichne und dann Verwenden Sie Wert A als Der Abfragebedingungswert des Adressfelds in der Ansicht v$sqlarea, und dann kann der entsprechende SQL-Datensatz abgefragt werden. Als Übungstest können Sie die SQL finden, die die Sperrtabelle findet, aber in den meisten Fällen können Sie sie nicht in einer normalen Produktionsumgebung erhalten. Warum? Bitte lesen Sie die Einführung unten.

Dieser Artikel verwendet einen explorativen Ansatz zum Studieren. Um die Genauigkeit der Daten sicherzustellen, habe ich drei Datenbanksitzungen geöffnet, die als Sitzung1, Sitzung2 und Sitzung3 aufgezeichnet wurden:

1 in Sitzung Sitzung1 Erstellen Sie eine neue Testtabelle und testen Sie Daten.

--新建测试表
create table zxy_table(zxy_id int,zxy_name varchar2(20));
--插入数据
insert into zxy_table(zxy_id,zxy_name) values(1,'zxy1');
insert into zxy_table(zxy_id,zxy_name) values(2,'zxy2');
insert into zxy_table(zxy_id,zxy_name) values(3,'zxy3');
insert into zxy_table(zxy_id,zxy_name) values(4,'zxy4');
commit;
Nach dem Login kopieren

2 Sehen Sie sich die Sitzungs-ID von Sitzung1 an Tabelle zxy_table über „select for update“ wie folgt:

 select userenv('sid') from dual;
Nach dem Login kopieren

4 Fragen Sie in Sitzung2 ab, ob die Sitzungs-ID 2189 ist:

Aktualisieren Sie dann in Sitzung2 die Zeile mit dem zxy_table-Wert zxy_name='zxy1' in Sitzung2 wie folgt :

 select * from zxy_table where zxy_name='zxy1' for update;
Nach dem Login kopieren

Dann schauen Sie, dass SQL blockiert wurde, wie unten gezeigt:

5 Dann kamen wir zu Sitzung 3, um die Sperrtabellensituation zu überprüfen

Überprüfen Sie zuerst die Tabelle v$locked_object

update zxy_table set zxy_name='zxy1_modify' where zxy_name='zxy1';
Nach dem Login kopieren

Sie Sie können sehen, was die Sperrtabelle verursacht hat. Die Sitzungs-ID ist 2546, also die vorherige Sitzung1, und die Objekt-ID ist 110154. Natürlich werden Sie in der Generierungsumgebung definitiv mehr als einen Datensatz sehen. Sie müssen ihn mehrmals ausführen. Nachdem Sie es n-mal ausgeführt haben, können Sie die Datensätze immer noch sehen und beweisen, dass es sich bei diesem Datensatz um den Datensatz der Sperrtabelle handelt. Fragen Sie die detaillierten Sperrtabelleninformationen über die Objekt-ID: 110154

dba4_objects-Tabelle ab. Fragen Sie die Ansicht ab v$session

select * from v$locked_object;
Nach dem Login kopieren

durch sessionid: 2546 erhalten prev_sq l_addr Der Wert ist: 000000012E045E28, und fragen Sie dann die Ansicht v$sqlarea

select object_name as 被锁的表名称,obj.* from dba_objects obj where object_id='110154';
Nach dem Login kopieren

über den erhaltenen Wert ab. Aus dem Bild oben können Sie sehen die Anweisung, die die Tabellensperre verursacht hat, aber viele Blog-Beiträge sind in diesem Schritt abgeschlossen, sodass die Abfrage wirklich lautet: Ist sie zuverlässig? Die Antwort ist unzuverlässig. Sie können nach Belieben zu Sitzung 1 zurückkehren und eine SQL wie folgt ausführen:

select 
       s.prev_sql_addr,
       module as 客户端工具名称,
       s.user# as 数据库账号名,
       s.osuser as 连接数据库客户端对应的window账号名称,
       s.machine as 连接数据库客户端对应的计算机名称,
       s.* 
from v$session s where sid='2546';
Nach dem Login kopieren

Dann können Sie sie in Sitzung3 ausführen

select * from v$sqlarea where address='000000012E045E28';
Nach dem Login kopieren

 再看看prev_sql_addr是不是变了,从000000012E045E28变为了00000001FB03CEC0,再通过00000001FB03CEC0查询视图v$sqlarea

select * from v$sqlarea where address='00000001FB03CEC0';
Nach dem Login kopieren

得到的sql_text是select * from zxy_table,你敢说这条sql导致了锁表吗?所有只能说是session1当前执行的sql,而且你很难保证session1执行完锁表的sql: select * from zxy_table where zxy_name='zxy1' for update且在提交前不再执行别的sql,这就是前文提出的问题的答案。

推荐教程:《Oracle视频教程

Das obige ist der detaillierte Inhalt vonOracle-Ansichtssperre und Sitzungsausführungs-SQL (Zusammenfassungsfreigabe). 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)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 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)

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.

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

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