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 投稿