2024年8月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
無料ブログはココログ

Oracle

Oracleのライセンス

Standard Edition OneがなくなってStandard Editionに統合された模様。
中小規模では厳しいなあ。

http://itpro.nikkeibp.co.jp/atcl/column/14/346926/022600459/?rt=nocnt

Oracle12c プラガブル・データベースの起動

Oracle12cをインストールしていろいろ試していますが、サーバを再起動されるとデータベースにつながらなくなってしまった。どうやらサーバ起動時にプラガブル・データベースがMOUNT状態でOPENになっていない模様。サーバ起動時に自動起動する方法がわからなかったのでタスクスケジューラでバッチを実行することで回避しました。

[バッチファイル内容] pdbopen.bat
@echo off
cd /d %~dp0
sqlplus / as sysdba @c:\hoge\param.sql -s  > execlog.txt
exit

[パラメータsqlファイル内容] param.sql
alter pluggable database pdborcl open;
quit;

タスクスケジューラに登録

Oracletask1

Oracletask2

タスクの開始を「スタートアップ時」に設定し、遅延時間を3分としています。
(Oracleが確実に起動するまでの時間を設定)





SI Object Browser

Oracleを単なるデータをいれておく所として使う分にはあまり関係ないが、PL/SQLを使った開発を行う時にはツールが不可欠。

「SI Object Browser」なら以下のような機能がつかえるため非常に重宝しています。
Oracleでのプログラム開発にはかかせません。

・データを追加・更新・削除
・ストアドやファンクションなどのPL/SQL文のデバッグ


Oracelが開発したOracle SQL Developerも同じような機能ではあるが、Javaで作成されているためか、もっさり感があって、無料ではあるがあまり使用していない。

Oracle 結合を含んだ更新

結合を含んだ更新(Update)のOracleでの書き方。
SQL-Serverと違ってUpdate句の中でJoinが使えないのでサブクエリ内で結合する。
また、更新する列をサブクエリ内で取得しておく必要がある。

※テーブル1とテーブル2で結合し、テーブル2の項目でテーブル1を更新する例

・SQL-Serverの場合

UPDATE table1
SET
    COL1 = B.COL1
FROM
    table1 A
INNER JOIN
    table2 B
ON
    A.CD1 = B.CD1

・Oracleの場合

UPDATE
(
    SELECT
        A.COL1 A_COL,
        B.COL2 B_COL
    FROM
        table1 A
    INNER JOIN
        table2 B
    ON
        A.CD1 = B.CD1
)
SET A_COL = B_COL

Oracle ELSIF

PL/SQLの条件分岐はelseifでも else ifでもなく、elsif
しばらくぶりにPL/SQLをやると毎回else ifと記述してなんで構文エラーになるのか悩んでしまう。

ODP.NET CASE文

ODP.NETを使用した開発環境でSQL文内のCASE文で全角文字を使用すると同じSQL文でもエラーになったりならなかったりして動作がおかしいなります

(SQL文の例)
SELECT
CASE FLG WHEN '0' THEN 'ぜろ' "
WHEN '1' THEN 'いち' "
ELSE 'その他' END
FROM table1

ExecuteReaderメソッドやFillメソッドで「オブジェクト参照がオブジェクト インスタンスに設定されていません」というエラーになります。

■詳細開発環境
ODP.NET(10.1.4)
Oracle9i
VB.NET 2003

Oracle エクステント

エクステントは、連続したデータブロック。
データブロックはOracleにおけるI/Oの最小単位。
エクステントは必ず1つのセグメントに属す。

Oracle Database 10g技術診断

期間限定でORACLE MASTERの模擬試験が受けられるらしい。
以前も受けてみましたが、これは簡単だったんで実際に受験してみたんだけど・・・

Oracle Database 10g技術診断
http://education.oracle.co.jp/goup10g/

ORACLE MASTE メモ

いよいよ今日受験日。
結果はすぐに出るけど、合格したいなぁ。

勉強メモ。

OracleインスタンスはSGAとバックグランウンドプロセスで構成される
・SGA
  共有プール
  データベースバッファキャッシュ
  REDOログバッファ
・バックグランウンドプロセス
  SMON・・・使わない一時セグメントノクリーンナップ
  PMON・・・トランザクションをロールバック、ロックを開放
  DBWn・・・変更済みブロックをデータベースバッファキャッシュからデータファイルに書き込む
  LGWR・・・REDOログバッファに登録された変更履歴をREDOログファイルに記録する
  CKPT・・・全ての制御ファイルとデータファイルのヘッダ情報に最新の
チェックポイント情報を反映させる
  ARCn・・・REDOログファイルをアーカイブファイルへ保存
 
・構成ファイル
データファイル
制御ファイル
REDOファイル

・データベースの状態
  NOMOUNT、MOUNT、オープンの3つの状態が存在します。

  NOMOUNT
   パラメータファイルの読み込み、SGAの割り当て、バックグラウンドプロセスの開始
  MOUNT
   NOMOUNT状態+制御ファイルオープン(DB作成・リカバリなどメンテナンス時に利用)
  OPEN
   MOUNT+REDOログファイルオープン・データファイルオープン(一般ユーザー使用可能状態)

Oracle XE

SQL-Server2005Expressに対抗してOracleの無償版がリリースされてるみたいですね。

参考リンク
http://pcweb.mycom.co.jp/news/2006/02/27/340.html

日本語もつかえるみたいですが、正式な日本語版でないかなぁ。

より以前の記事一覧