OracleXEでJA16SJISの利用 Windows環境編
目次
- 1. デフォルト(初期)データベースの削除手順
- 1.1. データベースの停止
- 1.2. インスタンスの削除
- 1.3. 不要なファイルを削除
- 2. 新規Oracleインスタンスの作成
- 2.1. データベース格納用ディレクトリの作成
- 2.2. pfileの作成
- 2.3. Windowsのサービスを作成
- 2.4. インスタンスの起動
- 2.5. データベース作成
- 2.6. 必要なスクリプトを実行
- 2.7. ユーザ用環境構築
- 3. Application Expressの導入
- 3.1. Oracle Text(前提プロダクト)
- 3.2. Oracle XML DB(前提プロダクト)
- 3.3. PL/SQL Web Toolkit(APEX3.0の場合の前提プロダクト)
- 3.4. Application Expressの導入
- 3.5. Embedded PL/SQL Gateway
- 3.6. APEX WEB画面の日本語表示化
- 4. インスタンスの切り替え
- 4.1. listener.oraの編集
- 4.2. データベースの開始のバッチの編集
- 4.3. ORCL用のデータベースの開始のバッチの作成
- 4.4. データベースの停止のバッチの編集
- 4.5. SQL*Plus実行用のバッチファイル作成
Oracle Express Edition をインストールした場合、データベースのキャラクタセットが「AL32UTF8」となっており、従来の「JA16SJIS」などを使用したい場合にデータベースの変更が「alter database」ではできない。
データベースのキャラクタセットとして「JA16SJIS」or「JA16SJISTILDE」などを使用したい場合は、インスタンスの再作成を行うこととなる。
Express Editionではライセンス上の制約から複数インスタンスを同一のホストで稼動させることができない(WindowsのOracle XEのサービスを複数起動することができない。)ため、以下のような対応を取ることとなる。
(1)初期データベース(XE)を削除して再作成する。
(2)別のインスタンスを作成して、交互に切り替えて利用する。
デフォルト(初期)データベースの削除手順
デフォルトのデータベースとして1GB程度のディスク領域を使用しているので、不要な場合は以下の手順で削除する。
データベースの停止
Oracleのサービスを停止する
例)Windowsのコマンドプロンプトから
net stop OracleServiceXE
インスタンスの削除
oradimコマンドで、初期データベース「XE」を削除する$ORACLE_HOME$\binにある「cleanup.bat」を実行することでも可
oradim ?DELETE ?SID XE
不要なファイルを削除
WindowsのExploerなどを利用して不要なファイルを削除する
(1)デフォルトのインスタンスのspfile削除
C:\oraclexe\app\oracle\product\10.2.0\server\dbs\*
(2)デフォルトのインスタンスのpfileやパスワードファイルを削除
C:\oraclexe\app\oracle\product\10.2.0\server\database\* のoradba.exe以外
(3)デフォルトのインスタンスの制御ファイルとデータファイルを削除
C:\oraclexe\oradata\XE\*
新規Oracleインスタンスの作成
新規に以下のようなデータベース環境を作成する
SID ORCL
キャラクタセット JA16SJISTILD
ディレクトリ体系 D:\ORADATA\ORCL
CONF 構成情報(initORCL.ora)
DBF データベースファイル(*.dbf)
DUMP ダンプ類
データベース格納用ディレクトリの作成
WindowsのExploerなどで、必要なディレクトリを作成する。
mkdir D:\ORADATA
/span />mkdir D:\ORADATA\ORCL
mkdir D:\ORADATA\ORCL\CONF
mkdir D:\ORADATA\ORCL\DBF
mkdir D:\ORADATA\ORCL\DUMP
mkdir D:\ORADATA\ORCL\DUMP\ADUMP
mkdir D:\ORADATA\ORCL\DUMP\BDUMP
mkdir D:\ORADATA\ORCL\DUMP\CDUMP
mkdir D:\ORADATA\ORCL\DUMP\UDUMP
pfileの作成
テキスエディタなどでpfileを作成して格納する
例)D:\ORADATA\ORCL\CONF \initORCL.ora
db_name='ORCL'
control_files='D:\ORADATA\ORCL\DBF\control.dbf'
user_dump_dest='D:\ORADATA\ORCL\DUMP\UDUMP'
audit_file_dest='D:\ORADATA\ORCL\DUMP\ADUMP'
background_dump_dest='D:\ORADATA\ORCL\DUMP\BDUMP'
core_dump_dest='D:\ORADATA\ORCL\DUMP\CDUMP'
undo_management='AUTO'
undo_tablespace='UNDO'Windowsのサービスを作成
Oradimコマンドで、新規データベースのためのサービス(OracleServiceORCL)を作成する。
oradim -NEW -SID ORCL -SYSPWD manager ?PFILE D:\ORADATA\ORCL\CONF \initORCL.ora
インスタンスの起動
set ORACLE_SID=ORCL
sqlplus / as sysdba
startup nomount pfile=D:\ORADATA\ORCL\CONF\initORCL.oraデータベース作成
create database ORCL
logfile group 1 ('D:\ORADATA\ORCL\DBF\redo1.dbf') size 32M,
group 2 ('D:\ORADATA\ORCL\DBF\redo2.dbf') size 32M,
group 3 ('D:\ORADATA\ORCL\DBF\redo3.dbf') size 32M
character set JA16SJISTILDE
national character set utf8
datafile 'D:\ORADATA\ORCL\DBF\system.dbf'
size 240M autoextend on
next 16M maxsize unlimited
extent management local
sysaux datafile 'D:\ORADATA\ORCL\DBF\sysaux.dbf'
size 48M autoextend on
next 8M maxsize unlimited
undo tablespace undo
datafile 'D:\ORADATA\ORCL\DBF\undo.dbf'
size 48M autoextend on
default temporary tablespace temp
tempfile 'D:\ORADATA\ORCL\DBF\temp.dbf'
size 8M autoextend on;必要なスクリプトを実行
ユーザsys, systemで必要なスクリプト(カタログの作成など)を実行する。
@?\RDBMS\ADMIN\catalog.sql
@?\RDBMS\ADMIN\catproc.sqlconnect system/manager
@?\sqlplus\admin\pupbld.sqlユーザ用環境構築
ユーザ用のテーブルスペース(users)、ユーザ(dbadmin)を作成する。
create tablespace users
datafile 'D:\ORADATA\ORCL\DBF\user.dbf'
size 300M autoextend on maxsize 1024M
extent management local
segment space management auto;
create user dbadmin identified by dbadmin
default tablespace users
temporary tablespace temp
quota unlimited on users;
grant connect, resource, dba to dbadmin;
Application Expressの導入
Oracle Text(前提プロダクト)
sqlplus sys/manager as sysdba
@?\ctx\admin\catctx manager SYSAUX TEMP NOLOCK
connect CTXSYS/manager
@?\ctx\admin\defaults\drdefja.sqlOracle XML DB(前提プロダクト)
sqlplus sys/manager as sysdba
@?\rdbms\admin\catqm.sql manager SYSAUX TEMP
connect sys/manager as sysdba
@?\rdbms\admin\catxdbj.sql
connect sys/manager as sysdba
@?\rdbms\admin\catxdbdbca.sql 0 18080PL/SQL Web Toolkit(APEX3.0の場合の前提プロダクト)
APEX3.0を展開したディレクトリ中のowaディレクトリに同梱されている。
D:
cd d:\product\apex
sqlplus sys/manager as sysdba
@owa\owainst.sqlApplication Expressの導入
(1)HTML DB 2.0
sqlplus sys/manager as sysdba
@htmldbins manager SYSAUX SYSAUX TEMP /i/ none(2)Application Express 2.2.1
sqlplus sys/manager as sysdba
@apexins manager SYSAUX SYSAUX TEMP /i/ noneOracle XEには導入できないようになっているが、修正して実行。
(3)Application Express 3.0.1
sqlplus sys/manager as sysdba
@apexins manager SYSAUX SYSAUX TEMP /i/Embedded PL/SQL Gateway
sqlplus sys/manager as sysdba
@apex_epg_config d:\product
@htmldb_epg_config d:\product(apexの展開先のディレクトリを指定する。 D:\product\apexの場合はD:\product)
alter user anonymous account unlock;
APEX WEB画面の日本語表示化
cd D:\product\apex\builder\ja
set NLS_LANG=American_America.AL32UTF8Japanese_Japanである必要はないがUTF8を使用すること。
(途中表示は文字化けするが問題なくインストールできている。)
sqlplus sys/manager as sysdba
alter session set current_schema=flows_020000;(HTMLDB 2.0)
alter session set current_schema=flows_020200;(APEX 2.2)
alter session set current_schema=flows_030000;(APEX 3.0)
@load_ja.sqlインスタンスの切り替え
listener.oraの編集
XE, ORCLの2つのインスタンスとの接続ができるようリスナーの設定を行う。
C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMINにある「listener.ora」ファイルのSID_LIST_LISTENER のSID_LIST中に以下のようにXE, ORCLのSIDを追加する。
(SID_DESC =
(SID_NAME = XE)
(ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
(SERVICE_NAME = XE)
)
(SID_DESC =
(SID_NAME = ORCL)
(ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
(SERVICE_NAME = ORCL)
)データベースの開始のバッチの編集
メニュー「データベースの開始」から起動されるバッチファイルを編集する。
インスタンスORCLを停止するため、サービスの停止を追加する。
C:\oraclexe\app\oracle\product\10.2.0\server\BIN\StartDB.bat
net stop OracleServiceORCLnet start OracleXETNSListener
net start OracleServiceXE
@oradim ?startup ?sid XE ?starttype inst > nul 2>&1ORCL用のデータベースの開始のバッチの作成
XEのインスタンスの起動用のバッチと同様に、ORCL用の起動バッチを作成し、スタートメニューに追加する。
net stop OracleServiceXEnet start OracleXETNSListener
net start OracleServiceORCL
@oradim ?startup ?sid ORCL ?starttype inst ?pfile D:\oradata\orcl\conf\initorcl.ora > nul 2>&1データベースの停止のバッチの編集
メニュー「データベースの停止」から起動されるバッチファイルを編集する。インスタンスORCLを停止するため、サービスの停止を追加する。
C:\oraclexe\app\oracle\product\10.2.0\server\BIN\StopDB
net stop OracleServiceXE
net stop OracleServiceORCLSQL*Plus実行用のバッチファイル作成
以下のようなバッチファイルを用意して、スタートメニューに登録しておくと、接続文字列を省略できる。
レジストリキーのORACLE_SIDのデータを変更することでも対応可能。
HKEY_LOCAL_MACHINE\DOSTWARE\ORACLE\KEY_XE
set ORACLE_SID=ORCL
sqlplus.exe /nolog