トップ 一覧 置換 検索 ヘルプ RSS ログイン

Oracleのimpで文字コードを変えるの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!11g Express Edtion(Linuxの場合)
http://www.ajisaba.net/db/ora_linux_sjis.html
基本的にexpを実行した環境と同じ環境でimpする。
もし、WindowsでexpしたダンプファイルをLinuxでimpする場合などは

!!データベース削除前の準備
initXE.oraの作成
 $ cd /u01/app/oracle/product/11.2.0/xe/dbs
 $ sqlplus / as sysdba
 SQL> create pfile = 'initXE.ora' from spfile = 'spfileXE.ora';
 NLS_LANG
をexpとimpする環境で合わせる必要がある。
NLS_LANGが異なる場合は、ダンプファイルの構文が正しくない的なエラーがでる。

!!データベース削除
 # su - oracle
 $ sqlplus / as sysdba
!データベースのシャットダウン
 SQL> shutdown immediate
 データベースがクローズされました。
 データベースがディスマウントされました。
 ORACLEインスタンスがシャットダウンされました。
 
!restrictを指定して起動
  startup restrict mount
 ORACLEインスタンスが起動しました。
 
 Total System Global Area  417546240 bytes
 Fixed Size                  2227080 bytes
 Variable Size             306185336 bytes
 Database Buffers          104857600 bytes
 Redo Buffers                4276224 bytes
 データベースがマウントされました。
 
!データベースの削除
 SQL> drop database;
 
 データベースが削除されました。
 
 Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。
 SQL> quit

!!SHIFTJISのデータベース作成
!データベース作成用のスクリプト
/u01/app/oracle/product/11.2.0/xe/dbs/createdb.sql 
  CREATE DATABASE XE
     LOGFILE GROUP 1 ('/u01/app/oracle/oradata/XE/redo01a.log') SIZE 100M BLOCKSIZE 512,
             GROUP 2 ('/u01/app/oracle/oradata/XE/redo02a.log') SIZE 100M BLOCKSIZE 512,
             GROUP 3 ('/u01/app/oracle/oradata/XE/redo03a.log') SIZE 100M BLOCKSIZE 512
     MAXLOGFILES 5
     MAXLOGMEMBERS 5
     MAXLOGHISTORY 1
     MAXDATAFILES 100
     CHARACTER SET JA16SJIS または JA16SJISTILDE
     NATIONAL CHARACTER SET UTF8
     EXTENT MANAGEMENT LOCAL
     DATAFILE '/u01/app/oracle/oradata/XE/system01.dbf'
        SIZE 325M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
     SYSAUX DATAFILE '/u01/app/oracle/oradata/XE/sysaux01.dbf'
        SIZE 325M REUSE  AUTOEXTEND ON MAXSIZE UNLIMITED
     DEFAULT TABLESPACE users
        DATAFILE '/u01/app/oracle/oradata/XE/users01.dbf'
        SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
     DEFAULT TEMPORARY TABLESPACE temp
        TEMPFILE '/u01/app/oracle/oradata/XE/temp01.dbf'
        SIZE 20M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
     UNDO TABLESPACE undotbs1
        DATAFILE '/u01/app/oracle/oradata/XE/undo01.dbf'
        SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

!!インスタンス起動とデータベース作成
 SQL> startup nomount pfile=initXE.ora
 ORACLEインスタンスが起動しました。
 
 Total System Global Area  417546240 bytes
 Fixed Size                  2227080 bytes
 Variable Size             293602424 bytes
 Database Buffers          117440512 bytes
 Redo Buffers                4276224 bytes
データベースを作成する
 SQL> @createdb.sql
 
 データベースが作成されました。
 
 
 表領域が作成されました。
 
 
 データベースが変更されました。
 
!!データベース作成後に実行するスクリプト
 SQL> @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/catalog.sql
 SQL> @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/catproc.sql
  connect system/manager
  @/u01/app/oracle/product/11.2.0/xe/sqlplus/admin/pupbld.sql

!!!10g Express Edtion (Windowsの場合)
http://weyk.air-nifty.com/none/2007/01/oraclexeja16sji_7d01.html
http://www006.upp.so-net.ne.jp/auctor/software/oracle_xe_ja16sjistild.html

以下抜粋
※以降はWindowsのコマンドプロンプトから

デフォルトのインスタンスの削除
以下のbatchを実行
 C:\oraclexe\app\oracle\product\10.2.0\server\bin\cleanup.bat

※以降はWindowsのExploerなどを利用

デフォルトのインスタンスの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のコマンドプロンプトから


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"

※以降はsqlplus内

インスタンスを起動
 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
とりあえず、WindowsでexpしたファイルをLinuxでimpする場合は
 export NLS_LANG=Japanese_Japan.JA16SJISTILDE
的なことしておけばいい

{{category2 データベース,Oracle}}