検索
ホームページデータベースOracleOracle Study GuideのROWIDの詳細な説明

この記事では、Oracle に関する関連知識を提供します。主に rowid に関する関連問題を紹介します。Oracle データベース テーブル内のデータの各行には一意の識別子があります。または rowid と呼ばれ、通常は Oracle 内で使用されます。データにアクセスするための情報です。皆様のお役に立てれば幸いです。

Oracle Study GuideのROWIDの詳細な説明

推奨チュートリアル: 「Oracle 学習チュートリアル

1. rowid への情報の保存の概要

oracleデータベース テーブル内のデータの各行には一意の識別子 (ROWID) があり、通常は Oracle 内のデータにアクセスするために使用されます。 rowid は 10 バイトの記憶領域を必要とし、表示に 18 文字を使用します。この値は、Oracle データベース内の行の特定の物理的な場所を示します。 ROWID をクエリで使用すると、値がクエリ結果に含まれることを示すことができます。

ROWID の保存には 10 バイトまたは 80 バイナリ ビットが必要です。拡張 ROWID は、obj#32bit、rfile#10bit、block#22bit、row#16bit を含む合計 80 ビットの 10 バイトに格納されます。したがって、相対ファイル番号は 1023 を超えることはできません。つまり、表スペース内のデータ ファイルの数は 1023 を超えることはできません (ファイル番号 0 のファイルはありません)。データファイルには 2^22=4M ブロックしか含めることができません。 1 つのブロックには 1023 を超えるブロックを含めることができ、2^16=64K 行のデータになります。データベースには 2^32=4G を超えるオブジェクトを含めることはできません。
これらの 80 バイナリ ビットは次のとおりです:
1. データ オブジェクト番号。この行が属するデータベース オブジェクトの番号を示します。データベースの作成時に各データ オブジェクトには一意に番号が割り当てられ、この番号は一意です。データ オブジェクト番号は約 32 ビットを占めます。
2. 対応するファイル番号。行が配置されているファイルの番号を示します。表スペース内の各ファイル ラベルは一意です。ファイル番号は 10 桁です。
3. ブロック番号。行がリダイレクトされるファイルのブロックの位置を示します。ブロック番号には 22 桁が必要です。
4. 行番号。行ディレクトリ内の行の特定の位置を示します。行番号には 16 桁が必要です。
これは合計 80 ビットになります。

注: Oracle 8 バージョンより前では、ROWID は file# block# row# で構成され、6 バイトの領域を占有し、10 ビット file#、22 ビット block#、16 ビット row# で構成されていました。 Oracle8 以降のバージョンでは、スペースが 10 バイトに変更されます。

Oracle の物理拡張 ROWID は 18 ビットで、各ビットは A ~ Z、a ~ z、0 ~ 9、、、/ A を使用して 64 ビットでエンコードされます。合計 64 文字が表現されます。 Aは0を表し、Bは1を表し、...Zは25を表し、aは26を表し、...zは51を表し、0は52を表し、...、9は61を表し、62を表し、/は63を表します。

SELECT T.ROWID, T.* FROM DEPT T

ROWID の記憶領域が 10 バイト (32 ビットのオブジェクト番号、10 ビットの rfile#、22 ビットのブロック番号、および 16 ビットの行番号を含む) であることを確認します。ダンプ機能を使用する必要があります。

select rowid,dump(rowid,16) from DEPT

2. rowid の内容を確認して表示します

1. dbms_rowid パッケージの関数を使用して

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;

を表示します。結果は次のとおりです。

2. テーブルからのデータ情報のクエリ

1) クエリ オブジェクト番号: 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';

結果は次のとおりです:

#説明: DATA_OBJECT_ID と OBJECT_ID の違い

Object_id と data_object_id はどちらもオブジェクトの一意の識別子です。

object_id はオブジェクトの論理識別です

data_object_id はオブジェクトの物理識別です

実際の物理的な格納場所を持つテーブル、インデックス、および UNDO オブジェクトのみが data_object_id を持ちます。物理ストレージのないオブジェクトの場合、data_object_id は空です。例: (プロシージャ、関数、パッケージ、データ型、DB リンク、MV 定義、ビュー定義、一時テーブル、パーティション テーブル定義など)

ほとんどの場合、この 2 つは等しいです。ただし、オブジェクトに対して切り捨て、移動、再構築などの操作を実行すると、data_object_id は変更されますが、object_id は変更されません。

ターゲット DEPT で切り捨て操作を実行します。コード: TRUNCATE TABLE DEPT;

結果を再度クエリします:

truncate 操作を置き換えます。 データを表に再挿入し、オブジェクト番号を表す ROWID が AAUOO から AAAUOP に変更され、1 ずつ増加していることを確認します。

2) クエリ ファイル番号:

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';
HEADER_BLOCK: このテーブルの最初のデータ ブロック番号

BLOCKS: テーブルの最初のデータ ブロック番号このテーブルの最初のデータ ブロック データ ブロックの数

RELATIVE_FNO: 相対ファイル番号

結果は次のとおりです:

说明:

从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';

执行结果:

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

推荐教程:《Oracle教程

以上がOracle Study GuideのROWIDの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
MySQLとOracle:機能と機能の重要な違いMySQLとOracle:機能と機能の重要な違いApr 18, 2025 am 12:15 AM

MySQLとOracleには、パフォーマンス、スケーラビリティ、セキュリティに利点があります。 1)パフォーマンス:MySQLは読み取り操作と高い並行性に適しており、Oracleは複雑なクエリとビッグデータ処理に優れています。 2)スケーラビリティ:MySQLはマスタースレーブの複製とシャードを通じて拡張され、OracleはRACを使用して高可用性と負荷分散を提供します。 3)セキュリティ:MySQLはきめ細かい許可制御を提供しますが、Oracleにはより包括的なセキュリティ機能と自動化ツールがあります。

Oracle:データベース管理のパワーハウスOracle:データベース管理のパワーハウスApr 17, 2025 am 12:14 AM

Oracleは、高性能、信頼性、セキュリティのために、データベース管理の「パワーハウス」と呼ばれています。 1。Oracleは、複数のオペレーティングシステムをサポートするリレーショナルデータベース管理システムです。 2.スケーラビリティ、セキュリティ、高可用性を備えた強力なデータ管理プラットフォームを提供します。 3。Oracleの作業原則には、データストレージ、クエリ処理、トランザクション管理が含まれ、インデックス作成、パーティション化、キャッシュなどのパフォーマンス最適化テクノロジーをサポートします。 4.使用の例には、テーブルの作成、データの挿入、ストアドプロシージャの書き込みが含まれます。 5.パフォーマンス最適化戦略には、インデックス最適化、パーティションテーブル、キャッシュ管理、クエリ最適化が含まれます。

オラクルは何を提供しますか?製品とサービスが説明しましたオラクルは何を提供しますか?製品とサービスが説明しましたApr 16, 2025 am 12:03 AM

OracleOfferScolreansiveSiveSiveOfProductsandServicesIncludingDatabaseManagement、CloudComputing、Enterpriseoftware、AndhardWaresolutions.1)OracLedatabaseSupportswithipersiveManagementFeatures.2)Oraclecloudinfrastrutrutruture(oci)は

Oracleソフトウェア:データベースからクラウドまでOracleソフトウェア:データベースからクラウドまでApr 15, 2025 am 12:09 AM

データベースからクラウドコンピューティングへのOracleソフトウェアの開発履歴には、次のものが含まれます。1。1977年に発信され、当初はリレーショナルデータベース管理システム(RDBMS)に焦点を当て、すぐにエンタープライズレベルのアプリケーションの最初の選択肢になりました。 2。ミドルウェア、開発ツール、ERPシステムに拡張して、エンタープライズソリューションの完全なセットを形成します。 3。OracleデータベースはSQLをサポートし、小規模から大規模なエンタープライズシステムに適した高性能とスケーラビリティを提供します。 4.クラウドコンピューティングサービスの台頭により、Oracleの製品ラインがさらに拡大し、必要な企業のあらゆる側面を満たしています。

MySQL対Oracle:長所と短所MySQL対Oracle:長所と短所Apr 14, 2025 am 12:01 AM

MySQLおよびOracleの選択は、コスト、パフォーマンス、複雑さ、および機能的要件に基づいている必要があります。1。MySQLは、予算が限られているプロジェクトに適しており、インストールが簡単で、中小サイズのアプリケーションに適しています。 2。Oracleは大規模な企業に適しており、大規模なデータと高い並行リクエストの処理に優れたパフォーマンスを発揮しますが、構成はコストと複雑です。

Oracleの目的:ビジネスソリューションとデータ管理Oracleの目的:ビジネスソリューションとデータ管理Apr 13, 2025 am 12:02 AM

Oracleは、企業が製品とサービスを通じてデジタル変革とデータ管理を達成するのを支援します。 1)Oracleは、データベース管理システム、ERP、CRMシステムなどの包括的な製品ポートフォリオを提供し、企業がビジネスプロセスを自動化および最適化するのを支援します。 2)E-BusinessSuiteやFusionApplicationsなどのOracleのERPシステムは、エンドツーエンドのビジネスプロセスの自動化を実現し、効率を改善し、コストを削減しますが、実装とメンテナンスコストが高くなります。 3)OracLedatabaseは、高い並行性と高可用性データ処理を提供しますが、ライセンスコストが高くなります。 4)パフォーマンスの最適化とベストプラクティスには、インデックス作成と分割技術の合理的な使用、定期的なデータベースのメンテナンス、コーディング仕様のコンプライアンスが含まれます。

Oracle Libraryの故障を削除する方法Oracle Libraryの故障を削除する方法Apr 12, 2025 am 06:21 AM

Oracleがライブラリの構築に失敗した後、失敗したデータベースを削除する手順:SYSユーザー名を使用してターゲットインスタンスに接続します。ドロップデータベースを使用して、データベースを削除します。クエリv $データベースデータベースが削除されていることを確認します。

Oracle Loopでカーソルを作成する方法Oracle Loopでカーソルを作成する方法Apr 12, 2025 am 06:18 AM

Oracleでは、forループループは動的にカーソルを作成できます。手順は次のとおりです。1。カーソルタイプを定義します。 2。ループを作成します。 3.カーソルを動的に作成します。 4。カーソルを実行します。 5。カーソルを閉じます。例:カーソルをサイクルごとに作成して、上位10人の従業員の名前と給与を表示できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール