「Oracle」タグアーカイブ

Oracel SQL*PlusでSelectの実行結果をCSV形式で出力する

よく使うのでメモ。

SQL*Plusでconnectした後、以下のSQLを実行する。

テーブル名、取得したいカラム名をセットして実行すると、カレントディレクトリに「export.csv」というファイル名で保存します。

指定した値をカンマと文字列結合しています。
条件を絞りしたい場合は必要に応じてWhere句を書きます。


AIX上のOracle Database Configuration Assistantでデータベースの作成に失敗する

AIXにインストールしたOracle12cでDatabase Configuration Assistant(以下DBCA)でデータベースを作成すると、エラーが発生してしまった。

DBCAで表示されたエラー
  • ORA-00445:background process PMON did not start
  • ORA-01034: ORACLE not available
    →どうやらOracleのバックグラウンドプロセスであるPMONの起動ができず、結果Oracleが利用できない状態になっているみたい。
Oracleのトレースログ
  • ORA-27300:OSシステム操作:forkがステータス:2で失敗しました
  • ORA-27301:OS障害メッセージ No such file or directory
  • ORA-27302:skgpspawn5で障害が発生しました
    →やはりプロセスのforkで失敗している。
原因&対策

AIXではユーザごとのプロセス数が制限されているため、デフォルト値以上のプロセスをforkしようとしてエラーになっていた。
↓のサイトに記載の方法(ulimit,smitコマンド)でプロセス数の上限を上げることで解決しました。
https://docs.oracle.com/cd/E49329_01/install.121/e49833/app_manual.htm

ちゃんとOracleの公式サイトに書いてあった。。。Oracleのインストール時点でちゃんとマニュアルを読んでいれば。。。 (ノ_-。) 


OracelのSQLで検索条件にBLOB型を使用する。DBMS_LOB.SUBSTR

SQL*PlusでBLOB型のデータを検索すると16進数に変換された表示される。

例えば、以下のテーブルを

カラム名 データ型
ID CHAR(2)
BLOB_DATA BLOB

SQL*Plusで以下のように検索すると

↓のような結果が返ってきます。

ID

BLOB_DATA
———————————-
001
1F2AA

002
98BCB

ここで、SQLの検索条件でBLOB_DATAカラムを利用したい場合は、DBMS_LOBパッケージのSUBSTRファンクションを利用します。以下、BLOB_DATAが16進数表示で「1F2AA」のデータを検索する場合の利用例。

DBMS_LOB.SUBSTR(対象カラム,読み込むバイト数, 読み込み開始バイト位置)で指定する。
パッケージとファンクションの詳細な仕様については、以下参照。
https://docs.oracle.com/cd/E16338_01/timesten.112/b66725/d_lob.htm