Oracle
テストケースを考えるときに組み合わせを頭ですべて考えるのは、過剰になりすぎたり、過不足になったりと、本当に正式なパターンが洗い出されているのか不安ではないかと思う。 そういうときにデカルト積により、テストパターンの組み合わせを網羅できれば、…
START SYSDBA権限を付与されたユーザーのみ可能。1.SHUTDOWN インスタンスの停止2.NOMOUNT インスタンスの起動、初期化パラメータファイルの読み込み インスタンスが起動されるということは、SGA、バックグラウンドプロセスも有効になる。3.MOUNT 制御ファイ…
インストールして使おうとしたら、11gと違って、デフォルトでPDBが設定されていた。最初はユーザーすら作成できないので、いろいろ設定を行うことに・・・ 1.最初にやるべきは、SYSユーザーでPDBに切り替えなければいけない。 /* Oracle 18C ExpressEdition…
読みにくいかもしれないが貼っておこう。テーブル設計をするときは、日常運用で想定されるトランザクション数およびデータ件数を考えて行うが、 データの格納パターンも考えて、カーディナリティや頻繁に実行される検索条件も想定しておかないと、 インデッ…
フリーソフトのWINMERGEというソフトでよくテキストの比較を行うことがよくあるけど、 コマンドプロンプトでも比較するコマンドがある。それがFCというコマンド C:\Users\owner>fc /? 2 つのファイルまたはファイル セットを比較し、相違点を表示します。 FC…
タイトルの表現がちょっとよく分からなかったら申し訳ないのだが、 よく、WEBとかで〇〇件中、XX~YY件とかって分けて表示することがあると思う。 今回はその総件数の中で、どのページにどこからどこまでのデータを何件表示されるかという計算ロジックを作っ…
さすがにそのままの仕様を実現することはできなかったが、 かろうじてそれに近いものを公開しようと思う。今回使用しているTYPEは以下を参照 fubukin.hatenablog.com create or replace FUNCTION SPLIT_REC ( /* 引数: STR :区切り文字の入った文字列 STR_SP…
正規表現でのチェックは、正規表現自体を理解していれば 非常に有用且つ開発が楽になる。 ただ、基本的にはサーバーサイドで使用することは あんまり良くない。 その理由として、 バックトラッキング(文字のチェック等が構文によって最初からやり直されるこ…
RAISE_APPLICATION_ERRORという関数を使えば、 エラーコードの割り当てとメッセージを指定することができる。 ただし、ユーザー定義のエラーとして使用が許可されている番号は -20000〜-20999 までの 1000 コード分らしい。 トリガーで例外エラーとして処理…
Oracle11gからの新しい機能。 基本的に行トリガーは自分自身のレコードを更新することはできない。 でも、複合トリガーを使うとそんなことができてしまったりする。 これは便利ではあるが、開発では非機能要件をしっかり考慮しておかないと 運用でかなり危な…
サーバーのメモリを消費する分、 30%くらい処理速度が向上するらしい。サーバーのスケールアップを考えた上で、 考慮したいところ。 /*常にネイティブコンパイルを行うように設定を変更する*/ ALTER SYSTEM SET PLSQL_CODE_TYPE = NATIVE; / /*以下、限定的…
一個ずつやるよりは良いのではないかと思う。 BEGIN DBMS_STATS.GATHER_SCHEMA_STATS ( OWNNAME => 'スキーマ名(ユーザー)' ,OPTIONS => 'GATHER' ) ; END;
接続セッションの状態を確認するSQL ACTIVEセッションが一つ増えるけど、実行している自分になるので気にしないでおこう SELECT TO_CHAR(SYSDATE,'yyyy/mm/dd HH24:MI:SS'), S.STATUS, S.USERNAME, NVL(S.SQL_EXEC_START,S.PREV_EXEC_START), S.LAST_CALL_ET…
必要なオブジェクトだけ欲しい場合は、コメントのところで条件を指定する SELECT T.TABLE_NAME AS "テーブル物理名", TC.COMMENTS AS "テーブル論理名", T.tablespace_name AS "テーブルスペース名", C.COLUMN_ID AS "カラムID", CASE WHEN PK.COLUMN_POSITI…
DB移行したいときとかに 使ってみるといいかもしれない。ただ、ここで紹介する呼び出しはvbscriptでADODB使ってるので その環境がない人は別の接続方法で試してほしい。「SQL_DDL.vbs」として以下のソースコードをDB接続先情報を記述して保存する Option Exp…
DBMS APIを使って、CSVの出力するようなファンクションを作ってみた。SQL文を引数にして、テキストが吐き出せるので 何かしら便利に使えそうだとは思っている。とりあえず、適当な型を用意しよう。 CREATE OR REPLACE TYPE STD_VALUE4 AS OBJECT ( VALUE01 V…
SQL文字列を引数にして、そのSQL文字列のテーブル構成情報を出力する。 既存プログラムのSQLのフィールド解析とかで使えそう。まずは型を適当に作成 CREATE OR REPLACE TYPE VALUE10 AS OBJECT ( VALUE01 VARCHAR2(500), VALUE02 VARCHAR2(500), VALUE03 VAR…
ダミーのようなテーブルをあらかじめ作成して テーブルにデータが追加、更新、削除が行われたとき、 そこに変更ログを記録するようなことができると、 更新以前の状況の更新過程が分かるようになるので便利かもしれない。そんなダミーテーブルの作成と、更新…
DBA権限持ってるユーザーから実行しないとできないと思うけど、 とりあえずユーザーを作成する動的SQLを載せておこうと思う。 権限設定とかいろいろ面倒なので、テスト環境で実行するときなどは考えなくて済むのではないかと思う。 CREATE OR REPLACE PROCED…
TYPEとかの最初の設定は以下の記事を参照にしてください。 fubukin.hatenablog.com フェッチしてバルクバインドするときにリミット値を指定して、 数件ずつデータを出力する方法をとったら、分散処理されて早くなるのだろうか?ただ、実績としては何万という…
TYPEを使用したパイプラインファンクション Oracleの上級テクニックになるのかな? さらにこれよりも複雑なパラレルパイプラインファンクションというのがあるけど、 汎用的に使えるものを作るのであれば、これくらいでいいかな思っています。まずはTYPE(オ…