タグ

ブックマーク / www.shift-the-oracle.com (22)

  • リスナーの起動、停止と初期設定 - オラクル・Oracleをマスターするための基本と仕組み

    リスナーの起動、停止と初期設定 Top | Knowledge| DB構築| 文字列関数| 日付関数| 集計関数| SQL関数(アルファベット順) SQL(抽出・更新)| SQL*Plus| PL/SQL| Utility| Structure| スキーマ| チューニング| 用語| 参考書 リスナーの起動、停止と初期設定 リスナーの起動、停止 リスナーの起動と停止には、lsnrctl コマンドを使用する。 リスナーのパスワードの設定を行っている場合で、OS認証もされない場合にはパスワード入力が必要になる。 # lsnrctl --  (LISTENERから変更していない場合には不要) LSNRCTL> set current リスナー名 -- リスナーの起動 LSNRCTL> start -- リスナーの停止 LSNRCTL> stop -- サービス状態の確認 LSNRCTL> serv

    iww
    iww 2018/07/05
  • 外部結合演算子の制限事項 - オラクル・Oracleをマスターするための基本と仕組み

    外部結合演算子 (+) の制限事項 便利な外部結合演算子 (+) であるが、以下の制限事項があるため該当する場合は FROM 句での結合を使用する。 (+) 演算子の部分のマニュアルの表記の変化を見ていると、なにやら雲行きが怪しい表現になってきている。 しかし、今後、サポート対象外にするには 動的パフォーマンス・ビュー や 静的データ・ディクショナリ・ビュー に相当数使われているので、 それらを完全に書き換える必要がある。 これらはルールベース・オプティマイザ (RBO) 廃止という目標に比べてパフォーマンス上の恩恵がみえないにも関わらず、 ルールベース廃止のときよりもリスクが高そうな置換作業である。そんな冒険をするだろうか? Oracle 11 の頃には、どのような表記になっているのか気になるところです。 参照: ANSI SQL、外部結合とは 制限事項 FROM 句の結合構文を含む問合

    iww
    iww 2014/11/10
    (+) はなるべく使わない
  • SELECT - オラクル・Oracle SQL 入門

    SQL 入門 (DMLの基形式:SELECT) レコードの取り出し (SELECT: 等号検索、不等号検索、範囲検索、前方一致、後方一致検索) テーブルからデータを選択、射影する。 SELECT の基フォーマット 基的なフォーマット SELECT [ALL | DISTINCT(UNIQUE)] { * | <列名> [[AS] <列別名>],… } FROM <表名> [<表別名>] , … [WHERE <条件式>] [GROUP BY <式>] [HAVING <条件式>] [ORDER BY { <列名> | <列番号> } [ASC | DESC] [NULLS FIRST| NULLS LAST], … ] GROUP BY と HAVING は両方を指定する場合には、どちらを先にしても良い。 HAVING を単独で使用可能(表全体を1グループとして扱うが Oracle

    iww
    iww 2014/11/07
    表別名にASは不要
  • DUAL 表 - オラクル・Oracleをマスターするための基本と仕組み

    DUAL 表 DUAL 表とは、オラクル固有のディクショナリ表の 1つで、DUMMY カラムだけで作成されている。 DUMMY カラムには 'X' という 1 レコードだけが存在する。 DUAL 表のオーナは SYS であるが、 PUBLIC シノニム宣言によって すべてのユーザーから DUAL としてアクセスが可能になっている。 DUAL 表は通常の1 レコードの表とは異なりオプティマイザによって、特別な 実行計画 (FAST_DUAL) が生成される。 一般的な使い方としては、SQL での関数の呼び出しや確認に使用される。 SQLPlus で関数を呼び出して結果を表示する。 -- SQL> SET SERVEROUTPUT ON DECLARE vResult NUMBER; BEGIN vResult := EXTRACT(DAY FROM SYSDATE); DBMS_OUTPUT

    iww
    iww 2014/08/18
    ダミーにも使うテーブル。 oracleはfromを省略できない。 ダミーに使うのは良くない。
  • 書式モデル(数値) - オラクル・Oracleをマスターするための基本と仕組み

    数値用の書式モデル 主な用途は TO_CHAR や TO_NUMBER 関数などにおいてフォーマット文字列として使用する。 ⇒ 日付書式 書式 修飾子 修飾子FM とFX を使用して、符号の表示、0や空白の埋め方および書式検査の制御が可能。 FX,FM は便利な修飾子のわりに、あまり知られていない。(使われていないだけかもしれない) └ 'vNum := TRIM(TO_CHAR(number));' のようなソースを見ることもある。 ※ TO_CHAR ファンクション、TO_datetime ファンクションと SQL*Plus の COLUMN コマンドの書式モデル で利用できる。

  • データ型 - オラクル・Oracleをマスターするための基本と仕組み

    (※1) Oracle 12c において、初期化パラメータ COMPATIBLE = 12.0.0.0以上、MAX_STRING_SIZE = EXTENDED でデータベースを構築またはアップグレードしておく必要がある。従来型と異なる表外格納形式、索引が桁あふれから特殊な方式になることもあってか現行のデフォルト設定ではない。(Oracle12c R2 時点) (※2) 上限が 4000 バイトの場合、UTF8(1〜4byte) 最短 1333 文字 AL32UTF8(1〜4,6 byte) Oracle 10g R2 (Unicode 4.0) では 最短 666 文字、Oracle 11g (Unicode 5.0) では 1000 文字となる。 Oracle 12c で 初期化パラメータ MAX_STRING_SIZE = EXTENDED で 構築している場合には 8191 文字が

    iww
    iww 2014/04/21
    NLS_LENGTH_SEMANTICS
  • シーケンスの定義 - オラクル・Oracleをマスターするための基本と仕組み

    シーケンス シーケンス(SEQUENCE)とは Oracle によって提供されている高速に連番(※)を発行するための仕組みである*1。この機構にはシーケンス・ジェネレータ(順序生成装置?)という立派な名前も付いている。シングルインスタンス環境では番号をキャッシュしているだけにみえるが、RAC(Real Application Cluster) の環境の ORDER 付きのシーケンスの場合には、舞台裏でなにやら調整しているようである。 (※) 増分値を設定すれば飛び番の採番も可能 シーケンスの構文 CREATE SEQUENCE sequence_name [ INCREMENT BY integer (INCREMENT BY 1) ] [ START WITH integer (START WITH 1) ] [ NOMAXVALUE | MAXVALUE integer ] [ NOM

    iww
    iww 2014/02/26
  • ネーミングルール - オラクル・Oracleをマスターするための基本と仕組み

    ネーミングルールとネーム辞書 オブジェクト名、カラム名は英語だったりローマ字だったり, その混在だったりして精神衛生上に悪いことがある。 そこでいくつかのルールを設けて運用すれば、少しでも改善することができる。 注意 ここに書いてあるルールは、独自に決めたマイルールです。Oracle に関連ドキュメントがある、あるいは書籍で紹介されているなどのように、一般的に定着している、知れ渡っている類のものではありません。よって強要するような正当性もありません。 ( 何より、このドキュメントに対して他人への説得材料や根拠としてのバリューを求めてはいけません。 ) Oracle 12c R2 から識別子に使用できる文字列長が 30 バイトから 128 バイトに拡張されているので無償で使える環境にまで広がれば柔軟に対応。 スキーマオブジェクトのネーミングルール(※ マイルール) 完全に一意のオブジェクト名

  • リスナーのログを削除する - オラクル・Oracleをマスターするための基本と仕組み

    リスナーのログを切り替え、削除、移動する リスナーのログファイルは、リスナープロセスがファイルをオープンし続けているため削除してはいけない。(Oracle 10g 時点) 通常はメンテナンス時に行う。稼動中に緊急処置として、どうしても移動や削除したい場合にはログの出力先を変更することで対応する。 少しくらいならリスナーのログが無くなっても良い環境の場合 #lsnrctl ... まず確認 LSNRCTL> show log_status      (ログの状態確認) LSNRCTL> show log_directory   ( ディレクトリ位置 ) LSNRCTL> show log_file        ( ファイル名 ) ... ログの停止 LSNRCTL> set log_status off # mv (log_directory/logfile) を (log_file)_Y

  • ORA-00257 - オラクル・Oracle エラー FAQ

    運用時に発生するエラー ORA-00257: アーカイブ・エラーです。解除されるまで内部接続のみにしてください。 REDOログ を アーカイブログに書き出せないために停止した状態。 原因 一般的には DISKFULL でアーカイブが行えない場合に発生する。 稀に 手動アーカイブモードの状態を忘れて放置した場合にも発生する。 対応 アーカイブ先のディスクの空き容量を確保する、不要なアーカイブログを削除する。(念のため直近のアーカイブファイルには手を出さないこと) 手動アーカイブ状態になっている場合は、自動アーカイブモードにするか、コマンドでアーカイブする。 以下の手順、参照 アーカイブ先の確認 SQL> ARCHIVE LOG LIST アーカイブ先のディスクが一杯なら不要なファイルを削除する。 アーカイブ先が USE_DB_RECOVERY_FILE_DEST の場合には DB_RECOV

  • データベースの削除 - オラクル・Oracleをマスターするための基本と仕組み

    オラクル・データベースを削除する手順 〜 UNIX 系 データベースを構築してからインスタンス名が気に入らない場合やインストールしても起動しない。なにが悪いかわからない場合、もう再インストールする場合など、データベースファイルが残っていると、その原因の切り分けが困難になることもある。 不要なファイルはディレクトリごとバッサリ削除するか、以下のような手順で不要なインスタンスの情報を削除する方が良い。 Windows 系の場合には UNIX 系と異なり、レジストリにも情報が残っている可能性があるので DBCA(Database Config Assistant)を使用して削除した方がよいと思う。(DBCA がどこまで削除するかまでは調査していません) DROP DATABASE Oracle 10g から データベースファイルを削除する DDL が追加された。 データベースファイル、サーバーパ

  • OS の起動時に Oracle を起動する - オラクル・Oracleをマスターするための基本と仕組み

    起動スクリプトのリンク 起動(停止)スクリプト( etc/init.d/dbora ) のリンクを 起動(Start)する場合には SXXdbora でリンクし、停止(Kill)する場合には KXXdbora でリンクする。 OS が Oracle が起動中であることを判別するためのロックファイルに関する記述がなければスクリプトに追加する。(例: /var/lock/subsys/dbora など) RUNLEVEL 0,6 に KXXdbora を設置 / RUNLEVEL 3,5 にSXXdboraを設置 XX は任意の実行の順番を示す数字、例えば httpd の前に起動して、httpd の終了後に起動するなど cd /etc/rc3.d (/etc/rc[RUNLEVEL].d 、rc5.dも同様に行う) ln -s ../init.d/SXXdbora . cd /etc/rc0.

  • ORA-12154 - オラクル・Oracle エラー FAQ

    Oracle 起動に関するエラー ORA-12154: TNS: 指定された接続識別子を解決できませんでした。 新規の設定で接続できない場合 原因 Net Service を設定した直後で ORA-12154: エラーが発生する場合は、どの段階で障害が発生しているかを切り分ける。 対応 ローカル・ネーミングメソッドの場合 Oracle 10g の場合には簡易接続で接続できるか確認する。 sqlplus user/pass@host[:port][/service_name] 接続できる場合 tnsnames.ora のネットサービス名の記述が誤っているか tnsnames.ora にアクセスできない状態が考えられる。tnsnames.ora ファイルがあるディレクトリにアクセス権があるかを確認する。 (デフォルト: $ORACLE_HOME/network/admin/tnsnames.o

  • 文字列が日付に変換できるかチェックする - オラクル・Oracle SQL 関数リファレンス

    日付の文字列が正しい日付かチェックする Oracle 12c R2 以降の場合 ⇒ VALIDATE_CONVERSION という組み込み関数がある。 VALIDATE_CONV_DATE ファンクション (日付文字列の有効性チェック) 文字列型の日付の整合性をチェックする関数は組み込み関数およびパッケージに用意されていない。 不正な日付文字をチェックなしに TO_DATE 関数 を使用すると例外が発生する。 これは外部入力データの投入バッチ処理などにおいて、トランザクション がロールバックすることにつながる。 CSV や文字列、テキストベースで用意されたデータをデータベースに投入する際の日付のチェック処理は欠かせない。 VALIDATE_CONV_DATE ファンクションのソース 移行しやすいように VALIDATE_CONVERSION の仕様に近づくように名称と引数、引数が NULL

  • ORA-01861 - オラクル・Oracle エラー FAQ

    開発時に発生するエラー ORA-01861: リテラルが書式文字列と一致しません 多くの場合は、日付の暗黙変換において発生する。 原因 日付と時間の暗黙変換は NLS_DATE_FORMAT、NLS_TIME_FORMAT、NLS_TIMESTAMP_FORMAT 初期化パラメータによって行われる。 このフォーマット書式と入力パラメータの書式が一致していないことによってエラーが発生する。 対応 NLS_DATE_FORMAT、NLS_TIME_FORMAT、NLS_TIMESTAMP_FORMAT これらの初期化パラメータは NLS_TERRITORY や NLS_LANGUAGE による影響があり、 明示的に指定していない場合には値が変化する。 一見するとエラー発生箇所と日付の暗黙変換とは無関係と思われる場合でも、ORA-01861: 〜エラーが発生することがある。 とりあえず、NLS_

  • COMMIT - オラクル・Oracleをマスターするための基本と仕組み

    コミット、COMMIT コミットの仕組み:コミットとは、トランザクション における変更したレコードを確定すること。⇔ ロールバック オラクルでは発生させることができない現象であるが RDBMS の種類と トランザクション・分離レベル によっては確定前の変更レコードが ファントム として出現する。 コミット処理 コミット時に行なう仕事は以下のとおり システム変更番号 (SCN) の発行 UNDO セグメントヘッダ(ロールバックセグメントヘッダ)のトランザクション表にコミットフラグと SCN の記録 REDO エントリを REDO ログ・ファイル に同期書き込み(※1) 行レベルのロックと 表レベルのロック の解放 トランザクションの完了 (※1) Oracle 10g R2 の COMMIT オプションに COMMIT WRITE [IMMEDIATE|BATCH] [WAIT|NOWAIT

    iww
    iww 2008/12/18
    sqlplusのquitは暗黙のcommitを行う
  • ROWID - オラクル・Oracleをマスターするための基本と仕組み

    ROWID 擬似列 ROWID とは 格納ブロックのアドレスとそのブロック内の行番号までの情報をもつ 同じオブジェクトにおいてユニーク(オブジェクト内で同じ ROWID を持つレコードは存在しない) 単一レコードへの最速のアクセスパスである。(※) アドレスへのポインタ情報のため格納領域を必要としない(0 バイト) 物理 ROWIDの場合、オブジェクトID(OBJECT_ID) が判別できる という特徴をもつ。 (※) 参考 : ROWID スキャンより高速なアクセスパス 物理 ROWID 物理 ROWID は新規行が作成されると、その先頭のアドレスで管理される。 一度そのアドレスにデータが配置されると削除されるまで ROWID は変わることはない(※1)。 (※1) パーティション表 で ROW MOVEMENT が ENABLE の場合にはパーティションの移動を伴う更新では ROWID

    iww
    iww 2008/12/03
  • SQL*Plusの起動オプション - オラクル・Oracle SQL*Plus リファレンス

    F オプション (-F) は Oracle 12c から Failover から Fast にと目的自体が変更されており システム変数 の設定値がデフォルト状態より大きめにチューニングされている。 システム変数   デフォルト値   変更後   単位 ------------------------------------------------------- ARRAYSIZE                15      100  (行) LOBPREFETCH               0    16384  (バイト) PAGESIZE                 14    50000  (行) ROWPREFETCH              1        2  (行) STATEMENTCACHE            0       20  (ステートメント) 自

    iww
    iww 2008/11/05
  • 文字・数値 リテラル - オラクル・Oracleをマスターするための基本と仕組み

    リテラル(コンスタント値) リテラルとは定数値であり、コンスタントとも呼ばれることもある。 しかし、正確にはリテラルはコンスタント値(constant value)をあらわす。 リテラル値 NULL という表現は、コンスタント値の値 NULL になってしまいますので、納品物などには注意が必要です。 ⇒ 日時・日付・期間 リテラル 文字リテラル 文字リテラルでは、単一引用符(') で囲む必要がある。※ 二重引用符(")で囲まれたものはオブジェクト名として取り扱われるので使用することはできない。 文字リテラルに限ったことではないが、最大長は 4000 文字である。 4000 文字を超えると ORA-01704: 文字列リテラルが長すぎます エラーが発生する。 データベースキャラクタセットの文字リテラル 文字列 Abc 、あいうえお、123 'Abc' 'あいうえお' '123' 各国語キャラク

    iww
    iww 2008/02/06
  • 書式モデル(日付) - オラクル・Oracleをマスターするための基本と仕組み

    日付用の書式モデル 主な用途は TO_CHAR(日付)、TO_DATE、TO_TIMESTAMP 関数などにおいて日付、時刻用のフォーマット文字列として使用する。 ⇒ 数値書式 書式 修飾子 修飾子FM とFX を使用して、符号の表示、0や空白の埋め方および書式検査の制御が可能。 ※ TO_CHAR、TO_datetime(TO_DATE、TO_TIMESTAMPetc) ファンクションで利用できる。