とあるレガシーな文字コード問題
OracleXEにOracle Developer6iで接続しようとして、
上手く行かなかった件で、繋がった瞬間にコアダンプ吐いて落ちるんで、
色々試してみたら、結局文字コードのせいっぽいです。
D6iができた2002年くらい?だと、DBの文字コードセットにUTF-8とかって珍しかったみたいなんだけど、
コアダンプ吐いて落ちることは無いだろー、とゆいたいです。
どうせXE使う時点でサポートは無い訳だし、スタンドアローンでの一時テーブルにしか使わないので、
いっそのことデータベース自体再作成という流れに。
- デフォルトのインスタンスの削除()
以下のbatchを実行
C:\oraclexe\app\oracle\product\10.2.0\server\bin\cleanup.bat
- デフォルトのインスタンスのspfile削除
以下のファイルを削除
C:\oraclexe\app\oracle\product\10.2.0\server\dbs\*
- デフォルトのインスタンスのpfileやパスワードファイルを削除
以下のファイルを削除
C:\oraclexe\app\oracle\product\10.2.0\server\database\* のoradba.exe以外
- デフォルトのインスタンスの制御ファイルとデータファールを削除
以下のファイルを削除
C:\oraclexe\oradata\XE\*
- pfileを作成(メモ帳でも何でも)
C:\oraclexe\app\oracle\product\10.2.0\server\database\initXE.ora
java_pool_size=4194304
large_pool_size=4194304
shared_pool_size=62914560
streams_pool_size=0
audit_file_dest='C:\oraclexe\app\oracle\admin\XE\adump'
background_dump_dest='C:\oraclexe\app\oracle\admin\XE\bdump'
compatible='10.2.0.1.0'
control_files='C:\oraclexe\oradata\XE\control.dbf'
core_dump_dest='C:\oraclexe\app\oracle\admin\XE\cdump'
db_name='XE'
dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)'
job_queue_processes=2
open_cursors=300
os_authent_prefix=''
pga_aggregate_target=40M
remote_login_passwordfile='EXCLUSIVE'
sessions=20
sga_target=140M
shared_servers=1
undo_management='AUTO'
undo_tablespace='UNDO'
user_dump_dest='C:\oraclexe\app\oracle\admin\XE\udump'
- Windowsのサービスを作成
oradim -NEW -SID XE -SYSPWD oracle -PFILE C:\oraclexe\app\oracle\product\10.2.0\server\database\initXE.ora
- 環境変数設定
set ORACLE_SID=XE
- sqlplusを起動
sqlplus / "as sysdba"
- インスタンスを起動
startup nomount
- データベース作成
create database XE
logfile group 1 ('C:\oraclexe\oradata\XE\redo1.dbf') size 32M,
group 2 ('C:\oraclexe\oradata\XE\redo2.dbf') size 32M,
group 3 ('C:\oraclexe\oradata\XE\redo3.dbf') size 32M
character set JA16SJIS
national character set utf8
datafile 'C:\oraclexe\oradata\XE\system.dbf' size 240M autoextend on next 16M maxsize unlimited extent management local
sysaux datafile 'C:\oraclexe\oradata\XE\sysaux.dbf' size 48M autoextend on next 8M maxsize unlimited
undo tablespace undo datafile 'C:\oraclexe\oradata\XE\undo.dbf' size 48M autoextend on
default temporary tablespace temp tempfile 'C:\oraclexe\oradata\XE\temp.dbf' size 8M autoextend on;
- 必要なスクリプトを実行
@C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catalog.sql
@C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN\catproc.sql
- 接続ユーザの切り替え
connect system/manager
- 必要なスクリプトを実行
@C:\oraclexe\app\oracle\product\10.2.0\server\sqlplus\admin\pupbld.sql
- data表領域の作成(※状況に応じて適宜変更)
CREATE TABLESPACE DATA
DATAFILE 'C:\oraclexe\oradata\XE\data01.dbf' SIZE 100M SEGMENT SPACE MANAGEMENT AUTO
この後、必要なユーザとかを追加して終わりです。