Dの小部屋

忘れやすい私のメモ帳

bashでIFS等の変数を変更する場合、こうすると良いのでは?

と、ふと思ったのでメモ。 ▼ 改善前 # バックアップ $ IFS_BACKUP="$IFS" # IFS変更 $ IFS=$’\n' …(処理)… # IFSを元に戻す $ IFS="$IFS_BACKUP" # IFS_BACKUP変数を削除 $ unset IFS_BACKUP ▼ 改善後 ( # IFS変更 $ IFS=$’\n' …(処理)… )

rootユーザでログインしたことが分かるようにする。

rootユーザでログインした時に、プロンプトの文字列を赤くする。 rootユーザの.profileに以下を記載。 export PS1="\e[31m\e[40m\][\u@\h \t]\\$\[\e[0m\] " rootユーザでログインした時に、メッセージを表示する。 rootユーザの.profileに以下を記載。 msg=…

echoコマンドで色を付ける

▼ 赤色の文字 $ echo -e "\e[31;mred\e[m" ▼ 文字は黄、背景は赤 $ echo -e "\e[33;41;1mred-yellow\e[m" 以上

Oracle オンライン再定義についての復習

内容 オンライン再定義を学習したはずなのに、思い出せなかったため、メモ。 確認 ▼接続ユーザの確認 SQL> show user ユーザーは"TTT"です。 ▼再定義元のテーブルを作成 SQL> create table t01 ( 2 n number(1) PRIMARY KEY, 3 v varchar2(10) 4 ); 表が作成…

sqlplusで接続情報などを確認する方法 (def)

内容 sqlplusで接続にdefと入力すると、SIDやユーザなどを確認できる。 確認 ▼コマンド SQL> def ▼結果 DEFINE _DATE = "16-09-06" (CHAR) DEFINE _CONNECT_IDENTIFIER = "##SID##" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _PRIVILEGE = "AS SYSDBA" (CH…

【Oracle12Cお勉強】 統合監査を触ってみる

統合監査とは? 12Cからの新機能。 各監査を一つにまとめられる。 SYS.UNIFIED_AUDIT_TRAILに情報が集約される。 デフォルトでは無効。有効化する必要がある。有効化には、インスタンスの停止が必要。 統合監査の有効化 ▼現状確認 $ sqlplus / as sysdba SQL…

Oracleのalert.logを、少し見やすく整形するワンライナー

内容 Oracleのalert.logが、以下のようなフォーマットになっており、日時が分かりにくい。 <日時1> < …情報1… > < …情報2… > < …情報3… > <日時2> < …情報4… > <日時3> < …情報5… > < …情報6… > 分かりやすくするため、以下のフォーマットに整形するコマンド…

【Oracle 12Cのお勉強】テーブルの列を全部非表示列にすることはできるのか?

内容 Oracle 12cで、通常は見えない列「非表示列」という機能が追加された。 テーブルの列を全部非表示列にすることが可能か確認する。 非表示列とは? テーブルの定義には存在するが、通常の操作では見ることができない列。 create table時、列にinvisible…

RAC環境でSID・SERVICE_NAMEを確認

内容 RAC環境で、SID・SERVICE_NAMEを確認する方法をメモする。 確認 LinuxのRAC環境で、データベースのSERVICE名はTEST01とする。 3ノードRACで、それぞれ「test011」「test012」「test013」のSIDが設定されている。 今回はtest011を使用する。 $ env | gr…

【Oracle 12Cのお勉強】DBA_USERSのLAST_LOGIN列を確認

内容 12cよりDBA_USERSにLAST_LOGIN列が追加された。 便利そうなので確認する。 確認 SQL> ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT ='yyyy-mm-dd hh24:mi:ss.ff tzr'; SQL> SELECT USERNAME,LAST_LOGIN FROM DBA_USERS WHERE LAST_LOGIN IS NOT NULL ord…

【Oracle 12Cのお勉強】 管理権限SYS×××

内容 12cで管理権限にSYSBACKUP、SYSDG、SYSKMが追加された。 既存のものを含めてまとめる。 SYSBACKUPは便利そうだ。 管理権限確認 ▼ルートコンテナ SQL> conn / as sysdba 接続されました。 SQL> select * from v$pwfile_users; USERNAME SYSDBA SYSOPER S…

【Oracle 12Cのお勉強】データベース内アーカイブ

内容 行の表示・非表示を制御できる機能。 "CREATE TABLE"時に"ROW ARCHIVAL"句をつけることで、ORA_ARCHIVE_STATE列が追加され、表示・非表示を制御できるようになる。 検証 ▼表の作成 SQL> create table ttt ( 2 n number(10), 3 v varchar2(10) 4 ) row a…

Oracle ANYDATA型

内容 ANYDATA型という型を初めて知ったのでメモする。 ANYDATA型とは 複数の型(CHAR型やNUMBER型など)のデータを格納することができる型のようだ。 使い方 テーブルの作成 SQL> CREATE TABLE TEST01 ( ADT ANYDATA ); データの格納 SQL> INSERT INTO TEST01 …

ログインシェルが設定されていないユーザへsuする

内容 ログインシェルが設定されていないユーザに、無理やりsuする。 検証 ▼ログインできないテストユーザ「test01」を作成。 useradd -s /usr/sbin/nologin test01 ▼test01にsuコマンドで切替 su - test01 This account is currently not available. ▼ログイ…

【Oracle 12Cのお勉強】varchar2の最大サイズを4000バイト→32767バイトに拡張

内容 12cより、以下の作業を行うことで、varchar2の最大サイズを4000バイトから32767バイトに拡張できる。 ※一度拡張すると、元に戻せないので注意。 初期化パラメータmax_string_sizeをEXTENDに設定。 utl32k.sqlを実行。 検証 ▼初期化パラメータ"max_s…

Oracleで0サイズの表領域は作成できるのか?

できませんでした。 できたら面白かったのに…。 SQL> create tablespace test01 datafile '/u01/app/oracle/oradata/TTT/test01.dbf' size 0; create tablespace test01 datafile '/u01/app/oracle/oradata/TTT/test01.dbf' size 0 * 行1でエラーが発生しま…

【Oracle 12Cのお勉強】PDB・インスタンスをオープン・クローズした時のalertログ

内容 オープン・クローズ時のalertログの挙動確認。 PDBのオープン・クローズでは、大したログは出力されない。 インスタンスの起動、停止は今まで通りにログが大量に出力される。 ※以下に表示しているalterログは、見やすくするため「Wed Aug dd hh:mi:ss y…

【Oracle 12Cのお勉強】コンテナについて

内容 コンテナのお勉強履歴 操作 コンテナ一覧表示 SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 MOUNTED 4 PDB2 MOUNTED 43 SQL*Plusを使用し…

rootのrmでびっくりさせちゃう?

rootユーザでrmを使用する場合は申請するようにって言っているのに、いうこときかない人がいるので、 alias rm='echo "rm -rf /*";sleep 10' なんてのをrootの.bashrcに設定したいなぁと思った今日このごろ。

ww〜wwwwコマンドを作ってみた。

内容 wコマンドがあるならww〜wwwwコマンドがあってもいいじゃない。 仕様 bashにてコマンド実行時に以下の結果を表示する。 $ w → (wコマンドの実行結果表示) $ ww (*´∀`) アハハ $ www ( ゚∀゚) アハハ八八ノヽノヽノヽノ \ / \/ \ $ wwww ┐(´д`)┌ ヤリスギ 環境 $ ba…

Oracle Editions機能についてのメモ

Oracle Editionsとは Oracleオブジェクトのバージョニングを行う機能。 開発などで、一時的にビューやプロシージャの変更をしたい場合に使用する。 変更はエディションという単位で管理する。 Oracle11gR2より導入。 エディションに対応しているスキーマオブ…

シェルスクリプト実行中、自分自身のファイルパスを取得する

▼ファイル名取得 SCRIPT_FILE=$(basename $0) ▼ディレクトリ名取得 cdしているが、実行後にカレントディレクトリに戻る。 シンボリックリンクの場合、うまく動作しない。 SCRIPT_DIR=$(cd $(dirname $0);pwd) or SCRIPT_DIR=$(cd $(dirname $0) && pwd) ▼親…

リソースの小さいDNSサーバをVirtualBoxで構築する。(VirtualBox+TinyCore+dnsmasq)

内容 開発用にリソースの小さい(メモリ64MB,HDD64MB)DNSサーバをVirtualBoxで構築する。 大まかな流れは以下の通り。 VirtualBox VMの作成 TinyCcoreをVMにインストール(HDDにインストール) ネットワーク設定 OpenSSHのインストール、設定 dnsmasqのインス…

テーブルの状況情報取得SQL

テーブルを作った人から嘘をつかれ、エラー発生の原因究明に手こずることがあるため、テーブルの状態を全部表示するSQLを開発中。逐一で更新する予定 DEFINE T_NAME = '###テーブル名###'; DEFINE T_OWNER = '###スキーマ名###'; SET PAGES 50000 SET LINESI…

BLOB列の情報をテキストで出力する。

テーブル構成 desc BLOB_SAMPLE Name Null? Type ----------------------------------------- -------- ---------------------------- BLOB_ID NOT NULL CHAR(3) BLOB_DATA BLOB SQL set serveroutput on; declare v_tmp_clob clob; v_tmp_int integer; curs…

「select * from v$sql」を簡単に整形する方法

以下のSQLを実行してHTML形式で出力する。エクスプローラなどで表示後、表示内容をコピーしてテキストエディタに貼り付けると、TSVになる。 echo 'select * from v$sql;' | sqlplus -S -M "HTML ON TABLE 'BORDER="2"'" user/password > v_sql.html

SQLの結果をXMLにする方法

SQLの結果をXMLにする方法 dbms_xmlgen.getxmlを使用する。 SQL set pages 0 set linesize 1000 set long 10000000 set head off select dbms_xmlgen.getxml('select * from tab') from dual; 結果 <ROWSET> <ROW> <TNAME>TEST_TABLE1</TNAME> <TABTYPE>TABLE</TABTYPE> </ROW> <ROW> <TNAME>TEST_TABLE2</TNAME> </row></rowset>

statspackをHTML形式で出力する

MARKUP HTML ON を使用する connect perfstat/password SET MARKUP HTML ON @?/rdbms/admin/spreport.sql

関数UID,USER

UID,USERという関数を知ったのでメモ SQL select UID, USER from dual ; 結果 UID USER --- ------------------------------ 0 SYS

statspack レポート連続作成スクリプト

statspackレポートを連続で作成するスクリプト。RACの場合、修正が必要。 #!/bin/sh #----- 設定 ----- #ユーザ名 p_user=perfstat #パスワード p_pass=password #レポート出力先 r_dir=/home/oracle/report/ #ログファイル名 l_name=run.log #----- レポー…

ログスイッチの状況確認

日毎 SQL set pages 1000 with date_history as ( select to_char(first_time,'yyyy/mm/dd') first_date from v$log_history ) select first_date, count(*) cnt from date_history group by first_date order by first_date; 結果 FIRST_DATE CNT ---------…

システム権限の表示(ロールに付加している権限も表示)

SQL文 with roleinfo as ( select connect_by_root grantee as grantee, granted_role from sys.dba_role_privs start with grantee in (select username from dba_users) connect by prior granted_role = grantee ) select distinct grantee, privilege fr…