Oracleデータベースの制約状態と設計ベストプラクティス

Oracleデータベースにおける制約(Constraint)には、いくつかの状態設定項目があり、これらが混同されがちです。主な項目は以下の通りです: ENABLE/DISABLE - 制約の有効/無効状態 VALIDATE/INVALIDATE - 既存データの検証状態 DEFERRABLE/NOT DEFERRABLE - 制約チェックの遅延可否 これらの状態設定の違いを明確にするために、具体的な実験を通じて確認してみましょう ...

7月18日 01:11 投稿

Oracleデータベースにおける単一テーブル操作と関数活用

単一テーブルクエリ基本構造 SELECT [DISTINCT] 列名|式|集約関数() [AS] [別名] FROM テーブル名[別名]|DUAL [WHERE 条件式] [GROUP BY グループ化列] [HAVING グループ条件] [ORDER BY 列|数値|別名|式 [ASC|DESC] [NULLS FIRST|NULLS LAST]]; SELECT句の操作 -- DISTINCTは後続の全ての列に適用 SELECT * FROM employees; SELECT employee_id, last_name, job_id FROM ...

7月14日 03:06 投稿

Oracleデータファイル名の特殊文字を修正する手法

Oracleデータベースのデータファイル名に末尾のスペースが含まれていたため、通常のSQLコマンドでリネームが不可能な状況が発生しました。以下は、この問題を解決するための実際の手順です。 SQLコマンドによるリネームの失敗 ALTER TABLESPACE ... RENAME DATAFILE コマンドを使用してファイル名を修正しようとしましたが、OSレベルでファイルが見つからないというエラ ...

7月4日 21:59 投稿

SQL Server および Oracle のスキーマ情報取得手法

SQL Server スキーマ取得 全データベース取得 USE MASTER DECLARE @policy_enabled BIT SET @policy_enabled = ( SELECT CONVERT(BIT, current_value) FROM msdb.dbo.syspolicy_configuration WHERE name = 'Enabled' ) SELECT db.name AS [DBName], 'Server[@Name=' + QUOTENAME(CAST(SERVERPROPERTY(N'Servername') AS SYSNAME), '''') + ']' + '/Databa ...

7月3日 23:58 投稿

Oracle 19c Active Data Guard環境におけるパッチ適用およびロールバック手順

前提条件と環境の確認 本手順は、Oracle 19c(19.3.0.0.0)を対象としたパッチ適用プロセスを解説します。作業前に、プライマリ・スタンバイ両サーバーの環境変数($ORACLE_HOME)が適切に設定されていることを確認してください。 1. OPatchツールの更新 最新のRU(Release Update)を適用するためには、所定のバージョン以上のOPatchツールが必要です。以下のコマンドで ...

6月29日 23:16 投稿

Kettleを使用した大規模データ移行のパフォーマンス最適化手法

MySQLの最適化設定 データ移行先としてMySQLを使用する場合、以下の設定により大幅なパフォーマンス向上が見込めます。ここでは一時的なデータ移行用途としてMySQLを設定します。 MySQLのインストールと設定 Oracle公式サイトから64bit版MySQLをダウンロード 任意のディレクトリに解凍(例:D:\mysql-5.7.26-winx64) my.iniファイルを作成し以下の設定を記述 [mysqld ...

6月29日 23:11 投稿

SQL Server と Oracle 間の高並列データ転送設計(初期案と改良版)

システム要件:SQL Server の一時テーブル sqlservertemp_table に格納された COMPANY, OGB04, OGA01, OGA03 フィールドを、事前にリンク済みの Oracle インスタンス ds へ転送し、Oracle 側での条件付き検索を効率化する。 初期実装手順 Oracle 側にグローバル一時テーブルを作成 CREATE GLOBAL TEMPORARY TABLE param_buffer ( COMPANY VARCHAR2(50), OGB04 ...

6月27日 01:27 投稿

OracleのLEFT JOINを使用したクエリでCASE WHENが正しく評価されない問題

問題の概要 OracleでLEFT JOINを使用して関連付けたテーブルに対し、CASE WHEN式を用いた条件分岐が期待通りに動作しない場合があります。本稿では、具体的なクエリ例を基にこの現象について説明します。 問題のあるクエリ例 以下のクエリは、現金移動テーブル(RP_CASH_MOVEMENT)と台帳アイテムテーブル(RP_LEDGER_ITEM)をLEFT JOINで結合し、集計結果を判定してい ...

6月25日 18:33 投稿

OracleのRETURNING INTO句の使い方

1. 概要 RETURNING...INTO...句は、INSERT、UPDATE、またはDELETEステートメントと組み合わせて使用されます。これらのステートメントによって影響を受けた行の特定の列の値をPL/SQL変数に代入するために使用されます。これはSELECT...INTO...ステートメントに似ています。INSERT、UPDATE、DELETEの各ステートメントでRETURNING...INTO...が返す結果は異なります。 DELETE ...

6月24日 20:03 投稿

Oracle定期タスクの実装方法

1.ログ用テーブル作成 CREATE TABLE SAMPLE_LOG(RECORD_TIME DATE); 2.PL/SQLプロシージャ定義 CREATE OR REPLACE PROCEDURE LOG_INSERT_PROC AS BEGIN INSERT INTO SAMPLE_LOG VALUES (SYSDATE); END; 3.DBMS_JOBによる定期実行設定 DECLARE JOB_ID NUMBER; BEGIN dbms_job.submit( JOB_ID, -- ジョブ識別子 'LOG_INSERT_PROC;', ...

6月24日 18:12 投稿