SQL Server と Oracle における DELETE 文の構文差異

データベース管理において、重複レコードの削除はよくある要件である。特に、同一カード番号・金額・店舗で30秒以内に発生した取引を重複とみなすようなケースでは、DELETE 文の書き方がデータベースエンジンによって異なる。 環境情報 本例では以下の SQL Server バージョンを使用している: Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 重複レコードの特定条 ...

6月7日 19:45 投稿

MyBatisの動的SQLでNULL値を含むフィールドの検索を解決する方法

課題 MyBatisの動的SQLを用いて、データベース(Oracle)からフィールド値にNULLが含まれるデータを検索する方法を解決します。 要件 フロントエンドから複数の値が渡され、その中に空値(NULL)が含まれる場合、バックエンドはそのフィールドがNULLのデータも検索結果に含める必要があります。 リスト形式のパラメータによる問題点 フロントエンドから複数選択された値が ...

6月7日 19:25 投稿

Oracle RAC環境におけるライブラリキャッシュロック競合の影響と特定方法

RAC環境におけるロック競合の課題 Oracle RAC(Real Application Clusters)環境、特にOLTPとOLAPが混在するシステムでは、リソース管理が適切でない場合、パフォーマンスの低下を招くことがあります。その中でも特に深刻な問題の一つが、オブジェクトロックに起因するシステム停滞です。 例えば、あるPL/SQLパッケージが長時間のセッションで実行中に、別のセッションが ...

6月2日 19:33 投稿

Linux上でOracleのSCNを手動で進める方法

Oracleデータベースでは、システムチェンジナンバー(SCN, System Change Number)がデータベースの一貫性と回復性を保証する重要なメカニズムとして機能します。テストやデータ修復の目的で、一部の高度なユーザーはoradebugツールを使用してSCNを手動で変更することが考えられます。ただし、これは非常にリスクの高い操作であり、特定の状況下でのみ使用され、バージョン ...

5月31日 20:57 投稿

クラッシュから安定まで:Seata分散トランザクションの3つのデータベース適応実践ガイド

SeataはApacheのオープンソース分散トランザクションソリューションとして、AT(Automatic Transaction)モードを通じて非侵入型トランザクション管理を実現します。その核心はデータベーストランザクションログテーブルに依存し、グローバルトランザクション状態を記録します。現在、公式はMySQL、PostgreSQL、Oracleなどの主要なデータベースのサポートを提供しています ...

5月25日 06:57 投稿

Oracle Active Data Guardのロール切り替え

1. プライマリデータベースからスタンバイデータベースへの切り替え Oracle Data Guardの構成では、プライマリデータベースは一つのみですが、スタンバイデータベースは複数存在できます。そのため、ロールの切り替え操作はまずプライマリからスタンバイへ行います。 1.1 プライマリロールの切り替え状態の確認 プライマリデータベースで現在のロールと切り替えの準備状態 ...

5月25日 05:21 投稿

OracleからMySQLへの移行:大量データロードとETLによる差分更新の実践

OracleからMySQLへのデータベース移行では、ストアドプロシージャやSQL構文の違いに加え、データ型の変換や文字コードの互換性が重要な課題となります。本記事では、大容量データの効率的な移行手法として、高速エクスポートツールとMySQLのロード機能を組み合わせた一括移行と、ETLツール「Kettle」を活用した差分更新の実装方法について解説します。 データ型のマッピン ...

5月20日 11:36 投稿

データアクセスインターフェースの設計と実装

HTTPプロトコルの基礎解析 ブラウザリクエストを分析するための簡易サーバー実装例: import socket def start_analysis_server(port=8080): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind(('localhost', port)) s.listen() print(f"ポート {port} で待機中...") conn, addr = s.accept() with conn ...

5月17日 18:48 投稿

Oracleデータベースの並列処理:テーブルとインデックスの最適化戦略

Oracleの並列処理基礎概念 Oracleデータベースでは、テーブルやインデックスに並列度を設定することで、複数のCPUリソースを同時に活用し、大規模なデータ操作のパフォーマンスを向上させることができます。DBA_TABLESやDBA_INDEXSデータディクショナリのDEGREEフィールドが、この並列度を示します。 現在の並列度設定の確認方法 -- 全テーブルの並列度を確認 SELECT tab ...

5月17日 10:23 投稿

Oracle Data Guard の単一インスタンス構成手順

環境設定 プライマリDB: 192.168.21.142 スタンバイDB: 192.168.21.141 両DBともインスタンス名: adg, DB名: adg 1. ネットワーク設定 両サーバの/etc/hostsに以下を追加: 192.168.2.31 primary 192.168.2.101 standby 2. リスナー設定 プライマリDBのlistener.ora: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = adg) (ORACLE_H ...

5月17日 01:36 投稿