db

SQL*Plus でユーザ名、接続文字列を表示

db

SQL*Plus でユーザ名、接続文字列をプロンプトに設定できる。 10gから sqlprompt "_USER'@'_CONNECT_IDENTIFIER> " 9iR2から prompt &_USER'@'&_CONNECT_IDENTIFIER 参考 SHIFT the Oracle - SQL*Plus 事前定義済みの変数一覧

Oracle で全角半角変換

db

Oracle で全角半角変換をする方法はないかと調べてみたら、変換関数があるのを発見。 select TO_MULTI_BYTE ('Aaア1+') HanToZen TO_SINGLE_BYTE('Aaア1+') ZenToHan from dual; ただし、半角カナを全角カナへ変換は行えないみたい。 Oracle/オラクル SQL …

sqlplus でデータのみ出力したい

db

sqlplus にスクリプトファイルを渡してデータを出力する場合に、データだけを出力するようにする方法。 1. システム変数 sqlplus のシステム変数に以下をセットする。 set feedback off -- 「〜行選択されました」の出力をしない set heading off -- ヘッダ…

sqlplus のエラーメッセージ

db

sqlplus にスクリプトファイルを渡して実行すると 入力は42文字に切り捨てられました。 と、表示された。うっとおしいので消そうと思い、調べたところ、スクリプトファイルの最終行に改行が入ってないのが原因というのがたくさん見つかった。 さっそくスクリ…

Oracle でトーレスの取得

db

Oracle でトレースを取得するには「セッション内のみ」と「DB全体」の2つの方法がある。 セッション内のみ 現行セッションでトレースを取る場合は、SQL*Plus 等で接続して以下のSQLを発行する。 SQL> ALTER SESSION SET SQL_TRACE = TRUE; SQL> ALTER SESSI…

Oracle で和暦を表示

db

Oracle でSQLだけで和暦を表示する方法。 SQL> select 2> to_char(sysdate, 'eeyy/mm/dd','nls_calendar=''Japanese Imperial''') 3> from dual; TO_CHAR(SYSDATE,'EEYY/MM/DD','NLS_CALENDAR=''JAPANESEIMPERIAL''') -------------------------------------…

MySQLでキャラクタセットをutf8に指定する方法

db

MySQLでキャラクタセットの設定には、サーバ単位、データベース単位、テーブル単位、カラム単位とある。これのいずれかで「DEFAULT CHARACTER SET」を「utf8」に設定する。 サーバ単位 サーバの起動時にオプションで指定。 $ mysqld --default-character-set…

MySQL5開拓団

db

WEB+DB PRESS Vol.32 に掲載された記事を公開されている。連載記事のようなので、続きも公開されるといいなぁ。私は PostgreSQL派なんだけど、いくつか MySQL を使ってるとこもある。それらは全部 4.0系。 あまり複雑な使い方をしてないので今のところ不便は…

mysqlのデータディレクトリ

db

mysql でデータディレクトリを指定するには my.cnf に datadir で指定する。 [mysqld] : datadir=/var/lib/mysql 起動時に引数で渡しても可。 mysqld --datadir=/var/lib/mysql innodb 形式のデータディレクトリの指定は上記 datadir とは別で設定できる。my…

Oracle 10g XE データベースの作成

db

XEのデフォルトのデータベースのキャラクターセットは AL32UTF8 だが、JA16SJIS で動かしたかったのと、 ためしに動かすだけにしてはデフォルトのデータベースの容量が大きかったので新たにデータベースを作成した。 ただし、XE は同時に 1インスタンスしか…

コマンドプロンプトからインスタンスを起動する手順

db

自動起動をしないようにした場合、データベースを使う前にインスタンスを起動しないといけない。起動の手順は以下の通り。 C:> set ORACLE_SID=XE C:> sqlplus / as sysdba SQL> startup なお、Windowsの場合はこの時に「OracleXETNSListener」「OracleServi…

Oracle10g XEでサンプルデータを入れたい

db

Oracleには、よく見るサンプルデータの投入スクリプトがついている。それを使ってサンプルデータを使用したい場合は以下のように実行する。 C:> cd C:\oraclexe\app\oracle\product\10.2.0\server\demo\schema\human_resources SQL> sqlplus /nolog SQL> con…

Oracle10g XE のインストール

db

Oracle10g XE をインストールしたので手順をメモ。環境は Windows XP。 1) Oracle10g XEのダウンロード 以下のURLから Oracle10g XE をダウンロードする。http://www.oracle.com/technology/products/database/xe/index.html 2) インストール ダウンロードし…

MySQLでのバックアップとリストア

db

MySQLでバックアップするなら、mysqldumpを使うのが簡単。同じサーバ上でバックアップを行うならmysqlhotcopy を使うほうがよいらしい。 $ mysqldump database_name -u user -p -Q -opt -r filename database_name を指定しない場合、データベース全体が対象…

MySQLでデータファイルの最適化

db

同じテーブルに対して、追加・更新・削除などが大量に発生すると、ファイル内のデータが断片化したり空き領域が出来たりする。これを最適化することにより、検索のパフォーマンスを上げたりデータファイルのサイズを小さくすることができる。以下のコマンド…

postgresqlでTCP/IP 接続を許可する

db

PostgreSQLはデフォルトでは TCP/IP 接続を許可していない。許可するには以下のように設定する。ちなみにPostgreSQLのバージョンは7.4。 pg_hba.conf 接続を許可するホストとユーザを指定する host test_db user_hoge 192.168.0.0 255.255.255.0 password sa…

Oracle10gでSPファイルが壊れた時の対処法

db

Oracle10gでspfileが壊れて起動できなくなる場合があります。バックアップを取ってあればそこからリカバリできますが、バックアップを取ってなかった場合は以下のようにpfilew作成することで復旧できます。 C:\> sqlplus /nolog SQL> conn /as sysdba SQL> …

PostgreSQLで自動的に自動採番する

db

PostgreSQLでMySQLのAUTO_INCREMENTのように自動で採番したい場合はSERIAL型を指定する。 cookbook=# create table recipes ( cookbook(# id serial primary key, cookbook(# title varchar(255), cookbook(# description varchar(255), cookbook(# instruct…