かきスタンプ

福岡でフリーランスの物流系のエンジニアやってます。

ubuntu:サービス確認

サービスの稼働状態を確認

service --status-all
 
【状態】
[+] - サービス稼働中
[-] - サービス停止中
[?] - サービスの状態を判断できない

Cent OS で実行すると、随分見え方が異なる。
PIDまで確認できる分、そっちの方が良さげ。 また、chkconfigで、稼働・停止時などのサービスの状態を確認できるが、ubuntuには無いっぽい。 代替案として以下のコマンドがあった。

ランレベル単位でのサービス起動確認

sysv-rc-conf

無ければ、apt-get install sysv-rc-conf でインストール。

Oracle:デフォルト設定のパスワード有効期限切れ対策

Oracle11g以降は、パスワードの有効期限がデフォルトで180日となっています。 そのままにしておくと、180日経過後に突然ログインできなくなるので、パスワードの有効期限を延ばす(もしくは無期限に設定する)必要があります。

以下、SYSDBAで実行。

パスワード有効期限確認方法

select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME'

パスワード有効期限を無期限に変更

alter profile default limit password_life_time unlimited

既に有効期限が過ぎていた場合、アカウントロックがかかっているので、その場合は一度パスワードを変更した後、ロックを解除する。

パスワード変更

alter user <user_name> identified by <new_password> 

アカウントロック解除

alter user <user_name> account unlock

ちなみにMySQLにも同様の機能が搭載されたが、「(管理者の意図に反して、ある日突然接続ができなくなるなんて)バグじゃねえか!」 という意見があり、廃止される見込みらしいです。(Oracle社で開催されたMySQL勉強会で聞いたネタ)

だよね。俺もそっちが正しいと思う。

Oracle:テーブルのみをエクスポート

Oracleでテーブルのみをエクスポートする方法。

expを使う場合

 exp user/pass@net_service_name TABLES=% FILE=filename.dmp 

expdpを使う場合

expdp \"user/pass@net_service_name AS SYSDBA\" DIRECTORY=dump_save_directory DUMPFILE=filename.dmp TABLES=schema_name.%

※SCHEMASオプションを付けるとエラーとなります。

インデックスや制約情報も合わせて取ってくれます。

Windows:復元ポイントについて

Windows 8 が入っているノーパソの調子が悪くなり、調査とパッチ当てに結構時間使った。何が原因かは知らんが、定期的に復元ポイント作っておくように心がけておこうと思った。

復元ポイント作成&復元

Windows 7、8、10】

コントロールパネル→システム→システムの保護→作成

 

【XP】

すべてのプログラム→アクセサリ→システムツール→システムの復元

作成したファイルはそのままで、環境だけを元に戻してくれる。 

何かしらのツールをインストールする前には復元ポイントを作っておく事にしよう。

サービスパックの復元もできるみたいで、XPで試したところ、SP3→SP2に戻す事も可能でした。というか、アップデートする時に、自動で復元ポイントを作ってくるので、別に行儀の悪いやり方ではないと思われます。

ちなみに「コントロールパネル→プログラムの追加と削除」にてサービスパックをアンインストールすると、アップデートした時点の復元ポイントが自動で削除されます。

どちらを使うかはお好みで。

Oracle:表領域ごとの使用量、使用率、空き容量を表示

Oracleにて、表領域ごとの使用量、使用率、空き容量を表示するSQLを書いてみた。

SQL

select 
    DBA_DATA_FILES.TABLESPACE_NAME
   ,min(DBA_DATA_FILES.BYTES)/1024/1024  as  "現サイズ(MB)"
   ,round(min(DBA_DATA_FILES.BYTES)/(1024*1024) - sum(DBA_FREE_SPACE.BYTES)/ (1024 *1024),2)  as  "使用量(MB)"
   ,round( (min(DBA_DATA_FILES.BYTES)/(1024 *1024) - sum(DBA_FREE_SPACE.BYTES)/(1024 *1024))/ (min(DBA_DATA_FILES.BYTES)/1024/1024) *100,2)  as  "使用率(%)"
   ,round(sum(DBA_FREE_SPACE.BYTES)/(1024 *1024),2) "空き容量(MB)"
from 
    DBA_DATA_FILES
   ,DBA_FREE_SPACE
where  1=1
  and  DBA_DATA_FILES.FILE_ID = DBA_FREE_SPACE.FILE_ID
group by 
    DBA_DATA_FILES.TABLESPACE_NAME
order by 1

実行結果例

NAME SIZE(MB) 使用量(MB) 使用率(%) 空き(MB)
TABLESPACE01 4103.3 2899.2 70.66 1204
TABLESPACE02 730 676.5 92.68 53.44
TABLESPACE03 370 361.3 97.65 8.69

 

SQL plusで実行したい場合は、1行あたりの表示文字数を変更。

 set linesize 500

など。 

Oracle:どんなSQLが過去に発行されたか追跡

過去に発行されたSQLを表示

select * from v$sqlstats

 これだけだと、誰が実行したか(ユーザ、マシンなど)がわからないので、合わせて知りたい場合はセッション情報と結びつける。

セッション確認

select * from v$session

 v$sqlstats.sq_id と v$session.sql_id は結びつく。

Oracle:テーブル名一覧とカラム名一覧を取得

テーブル名一覧とコメントを取得

select
    USER_TABLES.TABLE_NAME
   ,USER_TAB_COMMENTS.COMMENTS
from
    USER_TABLES
    left join USER_TAB_COMMENTS on USER_TABLES.TABLE_NAME = USER_TAB_COMMENTS.TABLE_NAME
where  1=1
order by 1

 カラム名一覧とコメントを取得

select
    USER_TAB_COLUMNS.COLUMN_ID
   ,USER_TAB_COLUMNS.TABLE_NAME
   ,USER_TAB_COMMENTS.COMMENTS
   ,USER_TAB_COLUMNS.COLUMN_NAME
   ,USER_COL_COMMENTS.COMMENTS
from
    USER_TAB_COLUMNS
    left join USER_TAB_COMMENTS on USER_TAB_COLUMNS.TABLE_NAME = USER_TAB_COMMENTS.TABLE_NAME
    left join USER_COL_COMMENTS on USER_TAB_COLUMNS.TABLE_NAME  = USER_COL_COMMENTS.TABLE_NAME
                               and USER_TAB_COLUMNS.COLUMN_NAME = USER_COL_COMMENTS.COLUMN_NAME
where  1=1
  and  USER_TAB_COLUMNS.TABLE_NAME in ('table_name') --テーブル名を指定
order by
    USER_TAB_COLUMNS.TABLE_NAME
   ,USER_TAB_COLUMNS.COLUMN_ID

カラムの定義情報(サイズやデフォルト値など)も表示したい場合、「USER_TAB_COLUMNS.*」で。

 

 全ユーザを見る場合、「USER」を「ALL」に置き換え。