2016年10月6日木曜日

[Oracle] SQL*Plusで引数にIN句の条件を渡す方法

SQL*Plusで、引数を以下SQLファイルに渡したい、という要件が
発生したので調査を行いました。

・test.sql
SELECT * FROM table WHERE column IN (/*ここを引数として渡したい*/);
exit;


色々試した結果、以下のような形で実行できることを確認。

・test.sql
SELECT * FROM table WHERE column IN (&1);
exit;

・sqlplus実行
sqlplus user/pass@db @test.sql " 'arg1','arg2','arg3'"


仕様がよくわかりませんが、水色部分に
何らかの文字がないとエラーになるようです。
# 状況によってはスペースを「N」に置き換えても実行可能

こんな微妙なことをする機会は今後なさそうですが、念のため覚書。

2016年9月2日金曜日

[つぶやき] Strengths Finderなるものを実施してみた

Strengths Finderという、自分の5つの強みを調べられるテストを
教えていただいたので試してみました。

結果:

1. Harmony(協調性)
2. Analytical(分析思考)
3. Responsibility(責任感)
4. Consistency(一貫性/公平性)
5. Relator(親密性)


まだ説明はちゃんと読んでないですが、なんとなく合ってる気はしますね。
時間のある時に、説明ちゃんと読もう。。。

2016年7月22日金曜日

[つぶやき] しばらく投稿がないようですが

サボってない。サボってない。

ただ投稿できるようなネタと時間がないだけ (言い訳

2016年4月12日火曜日

[PowerShell] 標準出力時に、文字の色を一部分だけ変える

標準出力を行ったとき、1行中の特定のデータを色付きで表示したい
と思ったので、調べた結果を覚書。


PS> Write-Host "a" -NoNewline; Write-Host "b" -ForegroundColor Red -NoNewline; Write-Host "c";
abc

-ForegroundColorで文字色を、-BackgroundColorで背景色を変更できるようです。

あとは"a"、"b"、"c"を適当な変数に変えるとかすれば目的達成ですかね。
なかなか情報が見つかりませんでしたが、とりあえずこんな感じで。

2016年2月25日木曜日

[Oracle] Oracle12cでRMANバックアップの履歴を確認するSQL

Oracle 12cのEnterprise Managerでは、11gまで確認することができた
RMANバックアップの履歴を確認できない(調査不足なだけ?)ようだったので
確認するSQLを覚書。

SELECT
  COMMAND_ID,
  INPUT_TYPE,
  STATUS,
  TO_CHAR(START_TIME, 'yyyy/mm/dd HH24:MI:SS'),
  TO_CHAR(END_TIME, 'yyyy/mm/dd HH24:MI:SS'),
  TRIM(TIME_TAKEN_BY_DISPLAY),
  TRIM(INPUT_BYTES_DISPLAY),
  TRIM(OUTPUT_BYTES_DISPLAY)
FROM
  V_$RMAN_BACKUP_JOB_DETAILS
WHERE
  START_TIME >= ADD_MONTHS(SYSDATE, -1)
ORDER BY
  START_TIME DESC

11gまでのEnterprise Managerと同じく、直近1か月分を表示するように。

2016年2月18日木曜日

[PowerShell & SQL*Plus] 文字化けの対処法

PowerShellからSQL*Plusを起動、英語環境(AMERICAN_AMERICA.WE8MSWIN1252)の
OracleにアクセスしてDBA_OUTSTANDING_ALERTSを確認したとき、
メッセージが文字化けする問題を解決したので覚書。

■対応1
PS> SET NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
PS> sqlplus sys/PASS@SID as sysdba

SQL> SELECT REASON FROM DBA_OUTSTANDING_ALERTS;
⇒文字化け


■対応2
PS> chcp 65001
PS> SET NLS_LANG=AMERICAN_AMERICA.AL32UTF8
PS> sqlplus sys/PASS@SID as sysdba

SQL> SELECT REASON FROM DBA_OUTSTANDING_ALERTS;
⇒文字化け

■対応3
PS> SET NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
PS> sqlplus sys/PASS@SID as sysdba

SQL> ALTER SESSION SET NLS_LANGUAGE=AMERICAN;
SQL> ALTER SESSION SET NLS_TERRITORY=AMERICA;
SQL> SELECT REASON FROM DBA_OUTSTANDING_ALERTS;
⇒文字化けしない!


DOSからの場合はNLS_LANGの変更だけで文字化け発生しなかったんですが。。
とりあえず解決できてよかった。

2016年1月14日木曜日

[Oracle] DBリンクでハマる。。

DBリンクの作成⇒接続確認で、「ORA-01017」にハマるという
何とも恥ずかしい状況を覚書。

■最初に実行したCREATE文
CREATE DATABASE LINK HOGE
CONNECT TO "user" IDENTIFIED BY "password"
USING '接続文字列'

sqlplus user/password@接続文字列 は接続できるのに、
SELECT SYSDATE FROM DUAL@HOGE はエラーになる。。

■いろいろ試行錯誤した結果
CREATE DATABASE LINK HOGE
CONNECT TO user IDENTIFIED BY "password"
USING '接続文字列'


・・・

うん、別にユーザーは小文字で作ってなかったよね。

でも、
 sqlplus user/password@接続文字列
 sqlplus USER/password@接続文字列
のどちらでも接続できるのは、罠のような気がする。。