Oracle 11g xe でWindowsからLinuxへのデータ移行時の注意点

exp、impの双方でNLS_LANGを一致させておかないと正しく移行できない。

☆export側(Windows)
1.データベースdb01内の全てのオブジェクトをを「expdat.dmp」ファイルにエクスポートする

C:> exp hoge/moge@db01 file=c:\expdat.dmp full=y

2.regeditでNLS_LANGを確認

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_XE
(Oracle 11g XEの場合)

☆impory側(Linux)
1.NLS_LANGを設定

# export NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE

2.NLS_LANGを確認

# env | grep NLS_LANG

3.インポートを実行

# imp hoge/moge file=expdat.dmp touser=scott fromuser=scott

FullCalendar jQuey Plugin でイベントにアイコン等の画像を表示する方法


eventRender : function(event, element) {
// 1.追加するノードを作成(必要に応じて高さ等の属性を設定)
var addNode = document.createElement("img");
addNode.setAttribute("src", [画像のパス]);
addNode.setAttribute("height", "16");
// とりあえず追加する場合
for (var i = 0, len = element.context.childNodes.length; i < len; i++) {
if (element.context.childNodes[i].className == 'fc-content') {
element.context.childNodes[i].appendChild(addNode);
}
}
// タイトルの直後に追加する場合
for (var i = 0, len = element.context.childNodes.length; i < len; i++) {
if (element.context.childNodes[i].className == 'fc-content') {
for (var j = 0, len = element.context.childNodes[i].childNodes.length; j < len; j++) {
if (element.context.childNodes[i].childNodes[j].className == 'fc-title') {
element.context.childNodes[i].childNodes[j].appendChild(addNode);
}
}
}
}
}

別ポートでVirtual Hostを設定してCakePHPを運用する場合の注意点

ポート:8080
VirtuakHost用ドキュメントルート:/var/www/html2
VirtuakHost用のCakePHP:cakephp2
として

httpd.confで
1.ポート番号
→ Listen 8080


2.Virtual Host用に
を追加し「AllowOverride All」等を設定


Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all


3.Virtual Host設定


DocumentRoot /var/www/html2
ServerName URL:8080


4.VirtuakHost用のCakePHPをサーバに展開


5.VirtuakHost用ドキュメントルート上のindex.phpでROOTを設定

define('ROOT', dirname(dirname(__FILE__)) . DS. 'cakephp2');

oracle 11g XE でキャラクタセットを変更した時のメモ

Oracleを使ったシステムの改修の仕事でサーバーに無償版のOracle 11g XEをインストールして、
先方から提供されたダンプファイルをインポートしたところ、
「ORA-12899: 列"XX"の値が大きすぎます(実際: XX、最大: XX)」といったエラーが頻発してしまいました。
インストールしたXEのデータベースキャラクタセットがUTF8だったのに元はSJISであることが原因でした。
データベースキャラクタセットの変更なんてコマンド1発だろうと思っていたらえらい大変でした。
ここを参考に(というかほぼそのまま)作業した内容を備忘のため書き留めておくことにします。
自分の環境に合わせて若干(ディレクトリ名等)変更しています。

インスタンスの削除

>cleanup.bat
(サービスの停止、インスタンスの削除をしてくれます)

■不要なファイルの削除

C:\oraclexe\app\oracle\product\11.2.0\server\dbs\*
C:\oraclexe\app\oracle\product\11.2.0\server\database\*(oradba.exe以外)
C:\oraclexe\app\oracle\oradata\XE\*

インスタンスの作成
・以下をC:\oraclexe\app\oracle\product\11.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'
compatible='11.2.0.1.0'
control_files='C:\oraclexe\app\oracle\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'

・oradimユーティリティを実行し、インスタンスを作成

oradim -NEW -SID XE -SYSPWD manager -PFILE C:\oraclexe\app\oracle\product\11.2.0\server\database\initXE.ora

インスタンス起動

>set ORACLE_SID=XE
>sqlplus / as sysdba
(アイドル・インスタンスに接続しました)
SQL>startup nomount pfile=C:\oraclexe\app\oracle\product\11.2.0\server\database\initXE.ora
(ORACLEインスタンスが起動しました)

・以下の内容をファイルC:\oraclexe\app\oracle\product\11.2.0\server\database\createDB.oraに保存

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 JA16SJIS
national character set utf8
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;

■データベースを作成(sqlplus内)

SQL>@C:\oraclexe\app\oracle\product\11.2.0\server\database\createDB.ora
(データベースが作成されました)

・カタログ定義スクリプトの実行

SQL>@C:\oraclexe\app\oracle\product\11.2.0\server\RDBMS\ADMIN\catalog.sql

PL/SQLパッケージ作成スクリプトの実行(かなり時間がかかります)

SQL>@C:\oraclexe\app\oracle\product\11.2.0\server\RDBMS\ADMIN\catproc.sql

・SYSTEMで接続し、PRODUCT_USER_PROFILE表に対するSELECT権限をPUBLICに付与

SQL>connect system/manager
SQL>@C:\oraclexe\app\oracle\product\11.2.0\server\sqlplus\admin\pupbld.sql

■確認

SELECT PARAMETER, VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHARACTERSET%';

以上でした。

■追記:クライアントの文字コード

システム環境変数「NLS_LANG」の値として「JAPANESE_JAPAN.JA16SJISTILDE」とします。