seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

Oracle10g Express Editions導入メモ

http://www.oracle.com/technology/products/database/xe/index.html

ライセンスと制限

  • Free to develop, deploy, and distributeとある。
    • 商用利用可能 (開発/デモ版ではない)
    • 再配布可能 (アプリケーションに同梱して再配布できる)
  • 制限
    • 最大4GBのユーザデータ
    • 1インスタンスのみ (SIDはXEで固定)
    • 1CPUしか利用しない (2CPU以上あっても活用できない)
    • 最大1GBのメモリしか利用しない (1GB以上あっても活用できない)
      • (逆に)メモリの消費が少ないみたい
        • コネクションがない状態だと占有するメモリを20MB以下まで縮退してくれるようだ。(稼働中は、それなりにメモリを食うけれど。)
  • 特記事項
    • Oracle Universal Installerではなく、一般的なネイティブなインストーラを使う
      • 国際化版はデータベース本体で220MB(英語版なら160MB程度)、クライアント側は30MB程度の単一のexeファイル
    • ウェブによる管理コンソールあり(sqlplusも利用可能)
    • JDBC3.0(J2SE5.0)のドライバ同梱

sqlplusで認証が通らない場合は、もしかしてAUTHENTICATION_SERVICESのせいかもしれない。

このキーにはサーバが受け入れる認証メソッドをパイプ(|)で区切って羅列するが、NTSWindowsの統合認証のことらしい。
とりあえず、NETWORK/ADMIN/sqlnet.oraを修正してNONEにする。

#SQLNET.AUTHENTICATION_SERVICES = (NTS)
SQLNET.AUTHENTICATION_SERVICES = (NONE)

これでOracle内で定義したユーザを使って旧来どおりの形式で接続できるようになる。

※ 認証は通るが、Oracleに接続するのに時間がかかる場合にも有効な手段とか。

ブラウザで開くデータベースのホームページ(管理コンソール)のポートを8080から別のポートに変更したい

参考: http://www.oracle.com/global/cz/solutions/sme/pdf/2daydba.pdf
sqlplusでDBAとして入り、以下のストアドを実行。

EXEC DBMS_XDB.SETHTTPPORT(8087);

データベースの再起動で待ち受けポートが変わる。



以下、2007/3/18追記。

SQL*Plusでのアクセス

10gからは、ネーミングサービスを使わずともIPアドレスとポート指定でSQLPlusから入れる。
ポート1521はOracleのデフォルトのポート。SIDはOracleXEの場合はxeで固定なので迷う必要もなし。

sqlplus system/manager@192.168.1.10:1521/xe

Oracle Clientは、Oracle Instance Clientを使うと簡単でよい。
導入メモは、http://d.hatena.ne.jp/seraphy/20070228

PL/SQLでUTL_FILEパッケージを使う

OracleXEでもストアドは利用可能。
ただし、UTL_FILEや、UTL_SMTPなどを使おうとすると、そんなのないよと言われたりする。
「SELECT DISTINCT OBJECT_NAME FROM ALL_OBJECTS;」とかやってみると、UTL_FILEとかUTL_SMTPは存在していることが確認できる。インストールされていないわけではな。*1
使えないのは、どうやら単に実行権限が付与されていないところに起因するらしい。*2
ということで、SYSDBAで接続しなおしてGRANTすればOKということのようだ。

sqlplus sys/manager@192.168.1.10:1521/xe as SYSDBA
GRANT EXECUTE ON SYS.UTL_FILE TO PUBLIC;

こんな感じで、たしかに通常ユーザからも使えるようになった。

*1:また、C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMINにはパッケージのsqlファイルが存在していた。

*2:ここのページの情報です。http://feuerthoughts.blogspot.com/2006/03/some-gotchas-with-oracle-xe.html