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以下まで縮退してくれるようだ。(稼働中は、それなりにメモリを食うけれど。)
- (逆に)メモリの消費が少ないみたい
- 特記事項
sqlplusで認証が通らない場合は、もしかしてAUTHENTICATION_SERVICESのせいかもしれない。
このキーにはサーバが受け入れる認証メソッドをパイプ(|)で区切って羅列するが、NTSはWindowsの統合認証のことらしい。
とりあえず、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;
こんな感じで、たしかに通常ユーザからも使えるようになった。