Oracle体系结构
Oracle服务器由Oracle实例与Oracle数据库组成Oracle实例(instance),通过ORACLE_SID来引导(Oracle标识)单实例情况下:Oracle数据库名与Oracle实例名相同且具
Oracle 服务器由Oracle实例与Oracle数据库组成
Oracle实例(instance),通过ORACLE_SID来引导(Oracle标识)
单实例情况下:Oracle数据库名与Oracle实例名相同且具有唯一性
举例:
三国中,关羽使用青龙偃月刀,吕布使用方天画戟,这就是唯一性身份标识(连游戏里都有攻击力加成甚至其他特殊效果,别不承认,哈哈),那么青龙偃月刀和方天画戟分别是两个独立的库,美国空间,他们的ORACLE_SID就分别是关羽和吕布。
另一种情况下,关羽与吕布的坐骑都是赤兔马(貂蝉不算哈,额,貂蝉,有木有),此时赤兔做为唯一库名,但是同时被关羽和吕布两个SID实例调用,因此赤兔马属于RAC(实时应用集群,具有LB+HA双层功效)
单实例情况下,instance(sid)名与数据库是一致的(查询出的库名与表名默认都是大写形式,这是正常的)
RAC集群的第一个节点
RAC集群的第二个节点(可以明显看到,虽然实例名不同,但是库名是一样的,因此,RAC是一个多实例单库的集群数据库模式)
Oracle数据库结构包括内存结构、进程结构、存储结构
Oracle实例等于SGA + 后台进程
Oracle内存结构
上面的图就说明了Oracle的内存结构,其中最重要的两个区域就是SGA与PGA
系统全局区(SGA):由所有服务器进程和后台进程共享
程序全局区(PGA):专用于每一个服务器进程或后台进程。每一个进程使用一个PGA
SGA 是包含实例的数据和控制信息的内存区。
SGA 包含以下数据结构:
数据库缓冲区高速缓存:缓存从数据库检索的数据块
重做日志缓冲区:高速缓存重做信息(用于实例恢复),直到可以将其写入磁盘中存储的物理重做日志文件
共享池:缓存可在用户间共享的各个结构
大型池:是一个可选区域,可为某些大型进程(如Oracle 备份和恢复操作、I/O 服务器进程)提供大量内存分配
Java 池:用于Java 虚拟机(JVM) 中特定会话的所有Java 代码和数据
Streams 池:由Oracle Streams 使用
通过使用Enterprise Manager 或SQL*Plus 启动实例,可以显示为SGA 分配的内存量。
下面具体说一下SGA里的几个重要的池
共享池(Shared_Pool):Oracle会将用户提交来的SQL语句都缓存在内存中。每次处理新的一条SQL语句时,都会先在内存中查看是否有相同的SQL语句。如果相同则可以减少最重要的解析工作(也就是生成执行计划),从而节省了大量的资源;反之,如果没有找到相同的SQL语句,则必须重新从头到尾进行完整的解析过程。这部分存放SQL语句的内存就叫做共享池(Shared Pool)。当然,Shared Pool里不仅仅是SQL语句,还包括管理Shared Pool的内存结构以及执行计划、控制信息等等内存结构。
数据库缓冲区高速缓存(Buffer_Cache):Buffer Cache所能提供的功能主要包括(一些频繁查询的热表可以考虑放在这个区域,这就像现在最火的固态硬盘一个道理,但是频繁DML操作的表不建议放入此处)
通过缓存数据块,从而减少I/O;
通过构造CR块,从而提供读一致性功能;
通过提供各种Lock、Latch机制,从而提供多个进程并发访问同一个数据块的功能。
重做日志缓冲区(Log_Buffer):Oracle这种数据库最好的一个运作机制在于先写日志后操作,这样能够有效的确定你运行到了哪一步,方便故障排查与恢复。
为了临时存放所产生的日志信息,Oracle在SGA中开辟了一块内存区域。这块区域就叫做日志缓冲区(Log Buffer),当满足一定条件以后,Oracle会使用名为LGWR的后台进程将Log Buffer中的日志信息写入联机日志文件里。
在10g以后的Oracle版本中,有两个参数可以动态的调整SGA的大小,否则就需要自行设置每个池子的大小(当然,Oracle官方有一套科学的算法)
10g数据库有如下两个参数(在初始化参数文件中设置)
SGA_MAX_SIZE(允许的最大的SGA大小)
SGA_TARGET(SGA分配大小)
到了11g以后不仅可以自动配置SGA,也同时可以分配所有内存了,有如下两个参数(在初始化参数文件中设置)
MEMORY_MAX_TARGET(允许的最大的内存大小)
MEMORY_TARGET(内存分配大小)
进程结构
Oracle的进程包括了上图所述几个主要种类的进程,这里主要说一下后台进程
系统监视器(SMON):出现故障后,在启动实例时执行崩溃恢复任务
进程监视器(PMON):用户进程失败时执行进程清理任务
数据库写进程(DBWn):将修改后的块从数据库缓冲区高速缓存写入磁盘中的数据文件
检查点(CKPT):通过更新数据库的所有数据文件和控制文件指出最新的检查点
日志写进程(LGWR):将重做日志条目写入磁盘
归档进程(ARCn):发生日志切换时将重做日志文件复制到归档存储器
上图包括了所有的后台进程(MMON和MMNL是AWR报告的支持进程),其他一些进程不做详细解释
Oracle存储结构
上图是一个Oracle的物理存储结构
构成Oracle 数据库的文件可分为以下几类:
控制文件:包含有关数据库本身的数据(即物理数据库的结构信息)。这些文件对数据库而言至关重要。没有这些文件,就无法打开用于访问数据库数据的数据文件。
数据文件:包含数据库中的用户数据或应用程序数据。
联机重做日志文件:可用来实现数据库实例恢复。如果数据库已崩溃但未丢失任何数据文件,那么使用这些文件中的信息可以通过实例恢复数据库。
要成功运行数据库,以下附加文件非常重要:
参数文件:用于定义启动实例时如何配置实例。
口令文件:允许用户远程连接到数据库并执行管理任务。
备份文件:用于恢复数据库。当因介质故障或用户错误而损坏或删除了原始文件时,通常需要还原备份文件。
归档日志文件:包含实例生成的数据更改(重做)的实时历史记录。
使用这些文件和数据库备份可以恢复丢失的数据文件。也就是说,使用归档日志可以恢复还原的数据文件。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











完全なテーブルスキャンは、MySQLでインデックスを使用するよりも速い場合があります。特定のケースには以下が含まれます。1)データボリュームは小さい。 2)クエリが大量のデータを返すとき。 3)インデックス列が高度に選択的でない場合。 4)複雑なクエリの場合。クエリプランを分析し、インデックスを最適化し、オーバーインデックスを回避し、テーブルを定期的にメンテナンスすることにより、実際のアプリケーションで最良の選択をすることができます。

INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

はい、MySQLはWindows 7にインストールできます。MicrosoftはWindows 7のサポートを停止しましたが、MySQLは引き続き互換性があります。ただし、インストールプロセス中に次のポイントに注意する必要があります。WindowsのMySQLインストーラーをダウンロードしてください。 MySQL(コミュニティまたはエンタープライズ)の適切なバージョンを選択します。インストールプロセス中に適切なインストールディレクトリと文字セットを選択します。ルートユーザーパスワードを設定し、適切に保ちます。テストのためにデータベースに接続します。 Windows 7の互換性とセキュリティの問題に注意してください。サポートされているオペレーティングシステムにアップグレードすることをお勧めします。

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

クラスター化されたインデックスと非クラスター化されたインデックスの違いは次のとおりです。1。クラスター化されたインデックスは、インデックス構造にデータを保存します。これは、プライマリキーと範囲でクエリするのに適しています。 2.非クラスター化されたインデックスストアは、インデックスキー値とデータの行へのポインターであり、非プリマリーキー列クエリに適しています。

MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

MySQLとMariaDBは共存できますが、注意して構成する必要があります。重要なのは、さまざまなポート番号とデータディレクトリを各データベースに割り当て、メモリ割り当てやキャッシュサイズなどのパラメーターを調整することです。接続プーリング、アプリケーションの構成、およびバージョンの違いも考慮する必要があり、落とし穴を避けるために慎重にテストして計画する必要があります。 2つのデータベースを同時に実行すると、リソースが制限されている状況でパフォーマンスの問題を引き起こす可能性があります。

MySQLは、Bツリー、ハッシュ、フルテキスト、および空間の4つのインデックスタイプをサポートしています。 1.B-Treeインデックスは、等しい値検索、範囲クエリ、ソートに適しています。 2。ハッシュインデックスは、等しい値検索に適していますが、範囲のクエリとソートをサポートしていません。 3.フルテキストインデックスは、フルテキスト検索に使用され、大量のテキストデータの処理に適しています。 4.空間インデックスは、地理空間データクエリに使用され、GISアプリケーションに適しています。
