ODP.NetでOracleParameterをバインド変数名でバインドしてもOracleCommandデフォルトの設定ではうまく動作しない。
OracleCommandのBindByNameプロパティをTrueに設定する必要がある。
ODP.NetでOracleParameterをバインド変数名でバインドしてもOracleCommandデフォルトの設定ではうまく動作しない。
OracleCommandのBindByNameプロパティをTrueに設定する必要がある。
レジストリで下記の項目を設定する。
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET\バージョン番号
でTraceLevelを設定する。
0..なし
1…入力、出力およびSQL実行情報
2…接続プーリング統計
4…分散トランザクション(登録および登録解除)
TraceFileNameにパスを設定する。
sqlplusなどを使ってDBA権限でログオンし、登録しているバックアップ用のディレクトリの情報を確認する。
select * from dba_directories;
新しくディレクトリを登録するには下記コマンドを実行する。
create directory datapump_dir as ‘/usr/lib/oracle/xe/datapump’;
ユーザに権限を付与する。
grant read,write on directory datapump_dir to hr;
OSコマンドラインからexpdpを使用してバックアップを行う。
expdp hr/hr directory=DATA_PUMP_DIR dumpfile=hr.dmp
impdpを使用したリストア方法。下記のようにスキーマや表領域などをリマップすることも可能。
impdp hr2/hr2 dimpfile=DATA_PUMP_DIR:hr.dmp remap_schema=’hr’:'hr2′ remap_tablespace=’users’:'users2′ remap_datafile=’/usr/lib/oracle/xe/oradata/XE/users01.dbf’:/usr/lib/oracle/xe/oradata/XE/users02.dbf’
rownumを利用する。1件目から取り出す場合は
select * from emp where deptid = 123 and rownum <= 10
1件目を含まない場合、11件目から20件目までなどの場合は、サブクエリを使って
select * from (select rownum num, id, col1, col2, …. from emp where deptid = 123) where num between 11 and 20;
代わりにDBMS_MONITORパッケージを使用してsql_traceを設定する。
DBMS_MONITOR.DATABASE_TRACE_ENABLE(
waits IN BOOLEAN DEFAULT TRUE,
binds IN BOOLEAN DEFAULT FALSE,
instance_name IN VARCHAR2 DEFAULT NULL);waits – 待機情報をトレースに出力
binds – バインド情報をトレースに出力
DBMS_MONITOR.DATABASE_TRACE_DISABLE(
instance_name IN VARCHAR2 DEFAULT NULL);
下記SQLを実行する。(parameter_name), (ORCL)には適切なものをセットする。
alter system reset (parameter_name) SCOPE=SPFILE SID=’(ORCL)’;
デフォルトは位置指定になっているので、OracleCommandのBindByNameプロパティをTrueに設定する必要がある。