IT Soldier Sakuri !!

Oracle使い。いつのまにかIT戦士になってしまったさくりの可哀想な奮闘記。

Oracle ORA-12154: TNS: 指定された接続識別子を解決できませんでした。

今日は朝から具合悪かった。。。
いつもは9時の終業ギリギリまで1時間半くらいは
近くのカフェでまったり朝活をしている私だけど、
座ってるだけでも気持ち悪くて、8時すぎに会社へ。

会社着いた途端、吐き気に襲われて死にかけた。
(# `)3')▃▃▃▅▆▇▉ブォォォォ
とはならなかったけど、やばかった…。
急いでその日にやらなきゃいけないことは全部して、
(途中一昨日のことを部長にネチネチ嫌味言われて)
10:30に早退。

こんなことなら最初から休めばよかったよ…(・:゚д゚:・)ハァハァ


Oracle関連でエンドユーザから一番多い問い合わせはコチラ。

ORA-12154: TNS: 指定された接続識別子を解決できませんでした。

これは95%くらいtnsnames.oraにサービス設定がされていない場合。

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = SAKURI-VAIO)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

こんな感じでエンドユーザのPCに入ってるtnsnames.oraに追記してあげればOK。

Pathはだいたいこんなところ。

C:\app\product\11.2.0\client_1\network\admin

ただし、面倒なのは上書き禁止の所に入っているので、
一旦デスクトップとかにコピーして、そこで追記して、
C:\app\product\11.2.0\client_1\network\admin\tnsnames.ora
にうわっかぶせする。

一応初期設定のマニュアルっていうかバッチを用意してるんだけど、
エンドユーザはそういうことなかなかちゃんとしてくれないもんなんだよな。

ログオンスクリプトとかに仕込んだ方がいいのかな。

Rubyラーメンってなんだよ!!

昨日の今日で折れた心が復活するわけもなく、
しゅん(๑•̆૩•̆)とした顔をしながら大人しくブログのネタを探してました。
会社なんていつでも辞めてやらぁ!と江戸っ子気分で堂々とネットサーファー。
ザザザーッ…と波に乗っていると、気になる記事が!!

Ruby on 松江ラーメン…だと?!

気になって検索すると、こんなん出てきました!
Ruby on 松江ラーメン


どうやら松江にある中隆という食品会社でRubyの普及を支援するために、
Rubyとラーメンをコラボさせたんだとか!斬新!!!
その名も「Ruby on 松江ラーメン・キュービックシリーズ」!
売り上げの一部をRubyアソシエーションに寄付したり、
上記のホームページもRuby製のオープンソースHTML生成ツールnanocで作成しているらしい。


なんと5年以上も前に取り上げられてた!
なんてこった!5年前なんてこっちはCOBOLやってたってのに!itpro.nikkeibp.co.jp


残念ながらAmazonでは売り切れ。
評価は5点!(評価者は1人だけどw)www.amazon.co.jp


Yahoo!ショッピングでは購入できるみたい。store.shopping.yahoo.co.jp



で…、そんなにRubyって流行ってるの?

Oracle DBサーバ名と起動日を確認する方法

あーあーやってしまった。
昨日ぶちょーに「お前に頼んだ仕事って、なかなか上がって来ねぇな。」と
ネチネチ嫌味を言われ、仕事多いから優先順位つけてやってんだよ!と思いつつ、
ちょっと焦ってたんだよね。
今日また新たに仕事がドドーッと降ってきたんだけど、
ぶちょーに言われたのから先にやるか…とやったら、
しょっぼいミスをいてしまって、みんなの前で怒鳴られました(๑,•﹏•)シュン
もう私、定例業務と調査だけでいいから!
ちょいとしたことで大事件になるようなことしたくないから!!!
そんな仕事ばっかり押し付けないで!
踊り子とか遊び人に転職させて!!!
・・・・・・とは言えない(´・ε・̥ˋ๑)


あぁ、もうやる気が出ないよぉおおおぉおぉおおお!


そんなところで、Oracleの話をしましょうか…。

うちの会社、DBサーバたくさんあるんです。
ふと、あれ?この接続先ってサーバ名なんだっけ?って思ったり、
あれ?いつ再起動したっけ?随分してないかも?なんて思ったりする。

そんなときはこのコマンドを!

select host_name,instance_name,version,startup_time from v$instance;
20:39:42 SQL> conn sys/system@xe as sysdba
接続されました。
20:40:34 SQL> select host_name,instance_name,version,startup_time from v$instance
20:40:38   2  /

HOST_NAME                     INSTANCE_NAME              VERSION      STARTUP_
---------------------------- --------------------------- ------------ -------------------------------- 
SAKURI-VAIO                   xe                         11.2.0.2.0   15-09-02

20:40:39 SQL>


これでサーバ名も、起動日も確認できます!!
あ、このバージョンもパッチ番号までは反映されていないので要注意です。


あと、確認コマンドとしてはこれかな。
DBAユーザで接続できるのって誰だっけ?というとき。

select * from v$pwfile_users;
20:43:28 SQL> select * from v$pwfile_users
20:43:49   2  /

USERNAME                                                     SYSDBA     SYSOPER    SYSASM
------------------------------------------------------------ ---------- ---------- ----------
SYS                                                          TRUE       TRUE       FALSE

20:43:49 SQL>


あ、SYSユーザだけね。と。
会社だったらもっとたくさんいたりする。
メンテ用とか、○○用…要はしくじったときの犯人捜し用だね。
こわいこわい。

あーーーーこのモチベーション、どう回復したらいいの?!!!

Oracle ログインパスワードの小文字大文字を区別させない方法

本日ついにダーマ神殿へと行ってまいりました。
魔法使い(Oracle使い)→僧侶(サバ管・運用兵)へと職業を転職しました。
と言いたいところですが、賢者(Oracle使い・サバ管・運用兵)になってしまいました。
そんなに仕事できないし、したくない・・・◝(๑⁺д⁺๑)◞՞
賢者ってググったら、必要経験値が他の職業に比べて多く、レベルが上がりにくいって書いてあったし。
ドラクエっぽいこと書いてるけど、ドラクエは1作品しかやったことないww


昨日に引き続き…Oracleのパスワードの話を。
Oracle11gからパスワードの小文字と大文字を区別するようになりました。

セキュリティ的にはいいのかもしれないけど、面倒くさい。
そして何より今まで作ってきたシステムを全部見直すとかホント無理っす。

どういうことかというと…

21:09:06 SQL> conn HR/HR@xe
ERROR:
ORA-01017: invalid username/password; logon denied


21:09:18 SQL> conn hr/HR@xe
ERROR:
ORA-01017: invalid username/password; logon denied


21:09:26 SQL> conn hr/hr@xe
接続されました。

21:09:30 SQL> conn HR/hr@xe
接続されました。

21:09:34 SQL>


わかる?
パスワードは「hr」小文字が正解なわけ。
ユーザIDは小文字大文字を区別しないくせに、パスワードだけ区別している。
なんとなく…納得いかない( ・ὢ・ ) ムムッ


じゃ、小文字大文字の区別なくしちゃおうぜ!
(Oracle社は推奨してないよ!)


コマンドはコチラ。

alter system set sec_case_sensitive_logon = false;
21:16:27 SQL> conn sys/system@xe as sysdba
接続されました。
21:16:45 SQL> alter system set sec_case_sensitive_logon = false
21:17:03   2  /

システムが変更されました。

21:17:04 SQL>


で、どうなったかというと…

21:17:04 SQL> conn HR/HR@xe
接続されました。

21:18:16 SQL> conn hr/HR@xe
接続されました。

21:18:22 SQL> conn hr/hr@xe
接続されました。

21:18:26 SQL> conn HR/hr@xe
接続されました。

21:18:31 SQL>


どの組み合わせでもログインできるようになりましたとさ◖ฺ|´⌣`*|◗·˳♪⁎˚♫
ちゃんちゃん。

Oracle アカウントのパスワード有効期限変更方法と無期限設定

今日後輩ちゃんが寿退社した。
キラッキラの笑顔でお世話になりました!と去って行った。
新卒3年で、配属当初から私がOJTをしていたので、ここ1年は課が違っていたけど、
仕事上ではツーカーの仲だった。(だいたい雰囲気で察せるという意味で)
彼のどこが好きなの?と聞いた私に、「今世はこれでいいんです。」と言った後輩ちゃんの言葉が忘れられない。輪廻転生?
とっても不思議ちゃんだったので、きちんとした家庭が築けるのかとても心配。
どうか幸せになってほしい。



さて、忘れる・忘れないといえば、パスワードの有効期限!(強引ながらw)
Oracle11gからアカウントのパスワードの有効期限はデフォルト180日になっている。
これ結構トラップだと思うんだよね。
Oracle使ってる企業でパスワードを3ヶ月置きに変更するところなんてあるのかな?


まずは確認してみる。

sysdbaでログインして下記コマンドを実行する。

select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';
C:\Users\SAKURI\sql>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on831 20:29:45 2015

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

20:30:05 SQL> conn sys/system@xe as sysdba
接続されました。
20:30:26 SQL> select *
20:31:13   2  from dba_profiles
20:31:13   3  where resource_name = 'PASSWORD_LIFE_TIME'
20:31:13   4  /

PROFILE                                                      RESOURCE_NAME                                            RESOURCE_TYPE    LIMIT
------------------------------------------------------------ ---------------------------------------------------------------- ---------------- ------
DEFAULT                                                      PASSWORD_LIFE_TIME                                       PASSWORD         180

20:31:14 SQL>


PROFILEがDEFAULTしかないので、デフォルトが全アカウントに適用されていることになる。
つまり全アカウントのパスワード有効期限は180日ということになる。
3日前からワーニングは出るものの、絶対ロックかかってアチャー(ꐦ ´͈ ᗨ `͈ ) '`,、ワラエナイヨ


じゃどうする?1年(365日)に変更する?
変更コマンドはコレ。

alter profile default limit password_life_time 日付;
20:31:14 SQL> alter profile default limit password_life_time 365
20:32:07   2  /

プロファイルが変更されました。

20:32:07 SQL> select *
20:32:19   2  from dba_profiles
20:32:19   3  where resource_name = 'PASSWORD_LIFE_TIME'
20:32:19   4  /

PROFILE                                                      RESOURCE_NAME                                            RESOURCE_TYPE    LIMIT
------------------------------------------------------------ ---------------------------------------------------------------- ---------------- ------
DEFAULT                                                      PASSWORD_LIFE_TIME                                       PASSWORD         365

20:32:19 SQL> alter profile default limit password_life_time unlimited;


いやーぶっちゃけ1年とかもっと忘れるでしょw
うちの会社はドドーンと無期限だよ!

無期限コマンドはコチラ。

alter profile default limit password_life_time unlimited;
20:32:19 SQL> alter profile default limit password_life_time unlimited;

プロファイルが変更されました。

20:32:47 SQL> select *
20:33:01   2  from dba_profiles
20:33:01   3  where resource_name = 'PASSWORD_LIFE_TIME'
20:33:01   4  /

PROFILE                                                      RESOURCE_NAME                                            RESOURCE_TYPE    LIMIT
------------------------------------------------------------ ---------------------------------------------------------------- ---------------- ------
DEFAULT                                                      PASSWORD_LIFE_TIME                                       PASSWORD         UNLIMITED

20:33:01 SQL>

後輩ちゃんが寿退社で、もう一人10歳くらい上の先輩が異動になるからって
私がダーマ神殿に行かされるわけなんだけどさ(´・ε・̥ˋ๑)

PDFでページ指定をして印刷すると途中までしか印刷されないときの対処方法

ある日エンドユーザさんから来た問い合わせ。
「PDFをページ指定して印刷すると、途中までしか印刷されないんです。」と。

そんなバカな…と思っていたんですが、本当でした!

例えば、301ページあるPDFを用意します。
Pro Git 日本語版電子書籍公開サイト
こちら、FREEの電子書籍でとてもおススメです!

Adobe Readerで開きます。
f:id:itsoldiersakuri:20150830005802p:plain

Ctrl+P で印刷画面へ進みます。
全ページ印刷はもちろんちゃんと301ページ印刷できそう。
f:id:itsoldiersakuri:20150830005837p:plain

では、ページ指定をしてみます。
1,4,7…と2ページ飛ばしで指定すると…なんと24枚までしか印刷されない!
f:id:itsoldiersakuri:20150830005936p:plain

そんな時には、PDF-XChange Viewerがオススメです!!!
www.forest.impress.co.jp
もちろんフリーソフトです!


PDF-XChange Viewerで開きます。
f:id:itsoldiersakuri:20150830010119p:plain

Ctrl+P で印刷画面へ進みます。
全ページ印刷はもちろんちゃんと301ページ印刷できます。
f:id:itsoldiersakuri:20150830010157p:plain

ページ指定をしてみます。
1,4,7…と2ページ飛ばしで指定すると…ちゃんと101枚印刷される!
f:id:itsoldiersakuri:20150830010233p:plain

他にもPDF-XChange Viewerってすごくデキル子で、
PDFにマーカーしたり、枠線つけたりなんかもできちゃう優れもの!!

とりあえずエンドユーザさんはよく大量にページ指定して印刷するそうなので、
PDF-XChange Viewerをオススメしておきました。
なんか最近便利屋と化しているな、仕事が。。。

Excelの入力規則(数式)が入っているセルを見つける方法

なんだかすごく眠い。
寝ても寝ても眠いんだけど、なんだろう。
春でもないのにいくらでも眠れちゃう。

今日もちょっと手抜きでごめんなさい。
明日は頑張ります、頑張りますから!

人にもらったExcelとかで入力規則や数式なんかがちりばめられていて、
とりあえず使い方はわかったけど、どうなってるの?
どこにどんな数式入ってるの?って、全体がよくわからないってときがある。

そんなときは入力規則や数式を検索すればいい。

例えばここに入力規則が入っているとする。
f:id:itsoldiersakuri:20150829220005p:plain

[ホーム]タブ→[検索と選択]→[条件を選択してジャンプ]をクリック。
f:id:itsoldiersakuri:20150829220033p:plain

[データの入力規則]を選択して、[OK]ボタンをクリック。
※数式を探したい場合は、[数式]を選択する。
f:id:itsoldiersakuri:20150829220126p:plain

ジャーンプ!!
f:id:itsoldiersakuri:20150829220254p:plain

これでどこかに何か特別なセルがあったとしてもすぐにわかるわ~♪