OracleXEでJA16SJISの利用 Windows環境編

Tech Wiki > Oracleデータベース > OracleXEでJA16SJISの利用(Windows環境)

OracleXEでJA16SJISの利用(Windows環境)

Oracle Express Edition をインストールした場合、データベースのキャラクタセットが「AL32UTF8」となっており、従来の「JA16SJIS」などを使用したい場合にデータベースの変更が「alter database」ではできない。

データベースのキャラクタセットとして「JA16SJISorJA16SJISTILDE」などを使用したい場合は、インスタンスの再作成を行うこととなる。

Express Editionではライセンス上の制約から複数インスタンスを同一のホストで稼動させることができない(WindowsOracle XEのサービスを複数起動することができない。)ため、以下のような対応を取ることとなる。

(1)初期データベース(XE)を削除して再作成する。

(2)別のインスタンスを作成して、交互に切り替えて利用する。

   

デフォルト(初期)データベースの削除手順

デフォルトのデータベースとして1GB程度のディスク領域を使用しているので、不要な場合は以下の手順で削除する。

データベースの停止

Oracleのサービスを停止する

 例)Windowsのコマンドプロンプトから

net stop OracleServiceXE


 

インスタンスの削除

oradimコマンドで、初期データベース「XE」を削除する$ORACLE_HOME$\binにある「cleanup.bat」を実行することでも可

oradim ?DELETE ?SID XE

不要なファイルを削除

WindowsExploerなどを利用して不要なファイルを削除する

(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    ダンプ類

   

データベース格納用ディレクトリの作成

WindowsExploerなどで、必要なディレクトリを作成する。

mkdir D:\ORADATA

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

/span />

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.sql

connect 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.sql

Oracle 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 18080

PL/SQL Web ToolkitAPEX3.0の場合の前提プロダクト)

APEX3.0を展開したディレクトリ中のowaディレクトリに同梱されている。

D:

cd d:\product\apex

sqlplus sys/manager as sysdba

@owa\owainst.sql

Application 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/ none

Oracle 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.AL32UTF8

Japanese_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, ORCLSIDを追加する。

(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 OracleServiceORCL

net start OracleXETNSListener

net start OracleServiceXE

@oradim ?startup ?sid XE ?starttype inst > nul 2>&1

ORCL用のデータベースの開始のバッチの作成

XEのインスタンスの起動用のバッチと同様に、ORCL用の起動バッチを作成し、スタートメニューに追加する。

net stop OracleServiceXE

net 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 OracleServiceORCL

SQL*Plus実行用のバッチファイル作成

以下のようなバッチファイルを用意して、スタートメニューに登録しておくと、接続文字列を省略できる。

レジストリキーのORACLE_SIDのデータを変更することでも対応可能。

HKEY_LOCAL_MACHINE\DOSTWARE\ORACLE\KEY_XE

set ORACLE_SID=ORCL

sqlplus.exe /nolog