[Oracle]データベースを再構築してOracle Expressのキャラクタセットを変更する
2020/01/09
前回の記事でCSALTERを使用したキャラクタセットの変更方法を記載しましたが、サブセットのキャラクタセットからスーパセットへの変更のみ可能でした。
この記事では、データベースを再構築するキャラクタセットの変更方法を記載していきます。
データベースを再構築する方法では全てのキャラクタセットへ変更できます。
キャラクタセットの変更手順
Oracle Expressでは1つのデータベースしか作成できないので、キャラクタセットを変更するには既存のデータベースを再作成する必要があります。
Oracle Express以外の場合はDBCAなどで新規のデータベースを作成する際にキャラクタセットを指定してください。
変更手順は以下の流れで実施します。
- インスタンスの削除
- 不要ファイルの削除
- 初期化パラメータファイルの作成
- インスタンスの作成
- インスタンスの起動
- データベースの作成
- ユーザ表領域の作成
環境
Oracle Database Express Edition 11g Release 2
キャラクタセットの調べ方
変更手順には含まれませんが、変更前に現在のキャラクタセットを確認します。
sqlplusなどで以下のコマンドを実行します。
SELECT NLS_CHARSET_NAME(NLS_CHARSET_ID('CHAR_CS')) FROM DUAL; NLS_CHARSET_NAME ---------------- AL32UTF8
インスタンスの削除
データベースの停止とインスタンスの削除を行います。
コマンドプロンプトで以下のコマンドを実行します。
cleanup.bat
不要ファイルの削除
削除したインスタンス関連のファイルを削除します。
cd $ORACLE_BASE del /f /s /q del /f /s /q oradata\XE\* del /f /s /q del /f /s /q product\11.2.0\server\dbs\* del /f /s /q del /f /s /q product\11.2.0\server\database\*.dat *.ora *.log
初期化パラメータファイルの作成
初期化パラメータファイルを$ORACLE_HOME/database/initXE.oraとして作成します。
インストールディレクトリを変更している場合はパスを修正してください。
db_name='XE' java_pool_size=4194304 large_pool_size=4194304 shared_pool_size=201326592 streams_pool_size=0 audit_file_dest='C:\oraclexe\app\oracle\admin\XE\adump' control_files='C:\oraclexe\app\oracle\oradata\XE\control.dbf' compatible='11.2.0.1.0' diagnostic_dest='C:\oraclexe\app\oracle' dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)' job_queue_processes=12 open_cursors=300 os_authent_prefix='' remote_login_passwordfile='EXCLUSIVE' sessions=24 pga_aggregate_target=256M sga_target=768M shared_servers=1 # shared_servers=4 undo_management='AUTO' undo_tablespace='UNDO'
インスタンスの作成
ORADIMユーティリティを使用してインスタンスを作成する。
cd $ORACLE_HOME ORADIM -NEW -SID XE -SYSPWD manager -PFILE database\initXE.ora
インスタンスの起動
作成したインスタンスを起動します。
set ORACLE_SID=XE cd $ORACLE_HOME sqlplus sys/manager as sysdba startup nomount pfile=database\initXE.ora
データベースの作成
キャラクタセットとナショナルキャラクタセットを指定してデータベースを作成します。
cd $ORACLE_HOME sqlplus sys/manager as sysdba -- character set:JA16SJISTILDE, national character set:AL16UTF16 create database XE logfile group 1 ('C:\oraclexe\app\oracle\oradata\XE\redo1.dbf') size 32M, group 2 ('C:\oraclexe\app\oracle\oradata\XE\redo2.dbf') size 32M, group 3 ('C:\oraclexe\app\oracle\oradata\XE\redo3.dbf') size 32M character set JA16SJISTILDE -- キャラクタセット national character set AL16UTF16 -- ナショナルキャラクタセット datafile 'C:\oraclexe\app\oracle\oradata\XE\system.dbf' size 240M autoextend on next 16M maxsize unlimited extent management local sysaux datafile 'C:\oraclexe\app\oracle\oradata\XE\sysaux.dbf' size 48M autoextend on next 8M maxsize unlimited undo tablespace undo datafile 'C:\oraclexe\app\oracle\oradata\XE\undo.dbf' size 48M autoextend on default temporary tablespace temp tempfile 'C:\oraclexe\app\oracle\oradata\XE\temp.dbf' size 8M autoextend on; @rdbms\admin\catalog.sql @rdbms\admin\catproc.sql connect system/manager @sqlplus\admin\pupbld.sql
ユーザ表領域の作成
ユーザ表領域を再作成します。
sqlplus sys/manager as sysdba create tablespace users datafile 'C:\oraclexe\app\oracle\oradata\XE\USERS.dbf' size 1024M autoextend on maxsize 4096M extent management local segment space management auto;
キャラクタセットの確認
データベースの作成時に指定したキャラクタセットになっているか確認します。
sqlplus sys/manager as sysdba -- キャラクタセット SELECT NLS_CHARSET_NAME(NLS_CHARSET_ID('CHAR_CS')) FROM DUAL; NLS_CHARSET_N ------------- JA16SJISTILDE -- ナショナルキャラクタセット SELECT NLS_CHARSET_NAME(NLS_CHARSET_ID('NCHAR_CS')) FROM DUAL; NLS_CHARS --------- AL16UTF16
Google AdSense PC
Google AdSense PC
関連記事
-
-
[Oracle]OracleからWebサービスを利用する方法
SOAPリクエストを送信してレスポンスを表示する 前回はOracleからWebサイトにアクセスする方法を記載しましたが、今回はOracleからSOAP形式のWe …
-
-
[Oracle]ジョブをスケジューリングして定期実行する方法
DBMS_SCHEDULERパッケージを使用したジョブスケジューリング Oracleでジョブを定期実行するには、DBMS_SCHEDULERパッケージやDBMS …
-
-
[Oracle]データベーストリガーの作成方法
DMLトリガーを作成する データベーストリガーの中でももっとも一般的なDMLトリガーの作成方法と簡単な使用方法を記載していきます。 トリガーとは? トリガーとは …
-
-
Oracle 11g XEへのデータ移行方法を検討してみる
Oracleのデータ移行時は移行元と移行先の文字コードに注意する必要があります。 Windows環境のOracleでは「JA16SJIS」や「JA16SJIST …
-
-
[SQL Server]IDENTITYの値を初期化する
ID値の初期化(リセット)方法 IDENTITYプロパティを設定した列のID値を初期化(リセット)する方法を記載します。 現在のID値を確認する ID値を確認す …
-
-
[Oracle]Data Pumpを使用したデータベースのバックアップ
Data Pump機能のexpdp/impdpコマンドを使用するとデータベース全体、スキーマ単位、表単位など対象範囲を指定したバックアップやリストアを行うことが …
-
-
[SQL Server]クロス集計の方法
PIVOTを使ってクロス集計する SQL ServerでExcelのピボットテーブルのようなクロス集計をするには、PIVOT関係演算子を使って集計することができ …
-
-
Oracle12cのPDBを自動起動にする方法
Oracle12cのプラガブル・データベース(PDB)は初期設定のままでは、毎回、手動で起動させる必要があります。 この記事ではOS起動時やOracle再起動時 …
-
-
[Oracle]トリガーの実行順序を設定する方法
FOLLOWS句を使用して実行順序を設定する 1つの表に対して同レベル(タイミング)のトリガーを複数作成することはできますが、実行順序は保証されていません。 実 …
-
-
ODP.NETをNuGetからインストールする
ODP.NETのインストール手順 Oracle 12cから公式のODP.NETがNuGetに追加されました。 この記事ではODP.NETをNuGetからインスト …