とあるレガシーな文字コード問題

OracleXEOracle Developer6iで接続しようとして、
上手く行かなかった件で、繋がった瞬間にコアダンプ吐いて落ちるんで、
色々試してみたら、結局文字コードのせいっぽいです。
D6iができた2002年くらい?だと、DBの文字コードセットにUTF-8とかって珍しかったみたいなんだけど、
コアダンプ吐いて落ちることは無いだろー、とゆいたいです
どうせXE使う時点でサポートは無い訳だし、スタンドアローンでの一時テーブルにしか使わないので、
いっそのことデータベース自体再作成という流れに。

 以下のbatchを実行
 C:\oraclexe\app\oracle\product\10.2.0\server\bin\cleanup.bat

 以下のファイルを削除
 C:\oraclexe\app\oracle\product\10.2.0\server\dbs\*

 以下のファイルを削除
 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'

 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

この後、必要なユーザとかを追加して終わりです。