mySQLリストアメモ

2018年7月28日 DB
mySQLでデータリストアを実行したら、エラーで止まってしまったのでメモ。
Linux環境からDBにリストアする場合は問題なかったのだが、Windows環境から実行したらエラーになった。結論としては文字コードが怪しかった。
mysql -u foo -p -D databasename -h hogehoge --default-character-set=utf8 < dump.sql


また、データリストア後にmySQLが起動しなかったのだが、こちらはDBサーバのディスクフルが原因だったので、不要ファイルを削除してから再度起動を試みたところ、上手く起動できた。

mySQLのパラメータ

2018年5月3日 DB
新環境の件で続き。
新環境にしたら、ある処理が30分かかるものがあった。
そんなわけないだろうと考えながら、別の方が解決方法を発見したのでメモ。
optimizer_switch=derived_merge=off
にしないとダメらしい。
これを適用させると処理が3秒になった。

▼参考
https://github.com/rails/rails/issues/19281
http://y-yagi.hatenablog.com/entry/2015/03/18/063319

プロシージャ

2018年5月3日 DB
元環境から新環境に移行試験をしているとき、新環境側にあるはずのプロシージャが無い事に気づいた。そんなわけで新規に作成したのだが、その時のメモ。
A5M2で元環境のプロシージャのソースを開き、それをそのまま新環境で実行してプロシージャを作成しようとしたらエラーになった。
原因は create と bigin の間に RETURNS BIGINT と READS SQL DATA 無かったから。A5M2で開いただけだと表示されないんだな…
CREATE hogehoge ...
RETURNS BIGINT
READS SQL DATA
BIGIN
...
END

別途、注意点としてDELIMITERで区切り文字を変更しないと;(セミコロン)が区切り位置として認識されてしまうので、実行前に
DELIMITER /
実行後に
DELIMITER ;
とする必要がある。

MySQL外部接続メモ

2018年3月18日 DB
できないときにすること

MySQLで外部から接続出来なくなったので、対処法をメモする。
同じ端末から某アプリケーションを使用していると接続できるのだが、これはどうしたものかと思って調査した。

# コマンド経由では接続できない
mysql -u user -p -h mysql-host
ERROR:1130


# 実際にDBサーバでやるとログインできる。
mysql -u user -p -h mysql-host
paddword:****


# どのユーザとホストが接続できるか確認する
select user,host from mysql.user;


すると自分の端末からは許可されていなかったので、追加してみる。
grant all privileges on *.* to user@’***.***.***.***’ identified by ’password’ with grant option;

※@の後にある***は自分のIPアドレス、’password’はログインパスワード.

# 再度ユーザとホストが接続できるか確認する
select user,host from mysql.user;
ここに追加したユーザとホスト名が表示されていればOK。


# コマンド経由では接続できる事を確認する
mysql -u user -p -h mysql-host
paddword:****


MDB簡易編集

2018年3月8日 DB
MDBを編集する環境が無かったので、便利なものを探してみた。
Accessの環境が無いときとか結構便利。

▼「MDB簡易編集」
http://hamsters.jp.net/

Oracle Database 18c

2017年10月3日 DB
現行が12cだけど、一気にバージョンがあがるのか。
http://www.publickey1.jp/blog/17/oracle_18c_autonomous_database_oracle_openworld_2017.html
shimaスキーマにおける全てのテーブルを削除する。
drop schema shima cascade;

確認
select relname, last_vacuum, last_analyze
from pg_stat_all_tables

手動 VACUUM ANALYZE
VACUUM ANALYZE

postgreSQLで、デフォルトのカレントスキーマはpublicなのだが、それを任意のスキーマに変更するメモ。
カレントスキーマ確認用SQL
select current_schema();

デフォルトは public になっているので、コレを一時的に foo に変更する。
set search_path to "foo";

恒久的に変更する場合はこちら。
postgresql.conf 内部を変更する。
search_path = ’foo,"$user",foo’ # schema names

上記実行後、サービスを再起動する。
自分の環境内で、毎回パスワードを入力するのが面倒だったので設定した。
pg_hba.conf 内部を下記に様に変更する。
host all all 27.0.0.1/32 md5
host all all ::1/128 md5

host all all 27.0.0.1/32 trust
host all all ::1/128 trust


テーブル設計を思案しているとき、下記のガイドを見つけた。

http://www.v6pc.jp/jp/pdf/webapp-20140529.pdf

【アプリケーションのIPv6対応ガイドラインWebアプリケーション編】
8ページ目 6.1.データベースへの格納
文字列型で格納する場合IPv6アドレスは、その最大文字数である39文字の文字列が格納できるようVARCHAR(39)に格納するべきである。
プレフィックス長も一緒に格納する場合には、区切り文字である「/」(スラッシュ)を含めて4文字分追加してVARCHAR(43)に格納すべきである。

IPv6は nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn:nnnn の合計39桁で事足りると思っていたら、プレフィックス長を考慮する必要が合ったため43桁に変更した。

select setval (’sequence_name’, 1, false);

DBIとViewメモ

2015年11月5日 DB
DBIとViewメモ。
テーブルと同様の扱いで問題無し。
# 単一テーブルから試験的に作成
CREATE VIEW TEST_VIEW (MEMBERID,PASSWORD) AS SELECT M.MEMBERID , M.
PASSWORD FROM MEMBER M ORDER BY M.MEMBERID;

# 確認後、削除
DROP VIEW TEST_VIEW;


#DB接続テスト
use strict;
use warnings;
use DBI;

my $dbh = &DB_Connect();
my $sql = "select memberid,password from TEST_VIEW ";
my $sth = $dbh->prepare($sql);
  $sth->execute;
my $rt = $sth->fetchall_arrayref();
foreach(@$rt){
  print "$$_[0],$$_[1] ";
}

$dbh->disconnect;

sub DB_Connect{
  my $dbh = DBI->connect("dbi:Oracle:service_name",’user_id’,’password’);
  return $dbh;
}

Oracle Express Edition メモ
Oracle Express Edition メモ
Oracle設定メモ

▼参考
https://docs.oracle.com/cd/E36055_01/admin.112/b66465/toc.htm

Oracle Database 11g Express Edition をインストールしておく。

【ユーザ設定から表作成・レコード作成まで】

スタートメニューから[Oracle Database 11g Express Edition]を選択、[SQLコマンドラインの実行]。
sqlplus /nolog
SQL> connect
ユーザー名を入力してください: system
パスワードを入力してください:※
接続されました。
※インストール時に設定したパスワード

ユーザ追加
ユーザ shima 作成、パスワード hogehoge とする。
SQL> create user shima identified by hogehoge;
ユーザーが作成されました。


権限付与 ※詳しくはこちらを参照。
http://rina.jpn.ph/~rance/om/oracle/hosoku05.html
shima に権限付与。
SQL> grant connect, resource to shima;
権限付与が成功しました。


【Oracle SQL Developer インストール】

▼sqldeveloper ダウンロード
http://www.oracle.com/technetwork/jp/developer-tools/sql-developer/downloads/index.html
ダウンロードして圧縮ファイルを解凍
[sqldeveloper.exe]を実行する

接続右クリック、接続の作成 図1を参照。
[データベース接続の作成/選択]画面が開く

接続名:XE_shima
ユーザー名:shima
パスワード:hogehoge
ホスト名:localhost
ポート:1521
SID:xe


テーブル作成 CREATE 文
create table WEBLOG (
ARTICLEID NUMBER(17) NOT NULL,
TITLE CHAR(32),
CONTENT CHAR(1024),
STUBFLAG NUMBER(1) DEFAULT 0 NOT NULL ,
DELETEFLAG NUMBER(1) DEFAULT 0 NOT NULL ,
ARTICLEDATE TIMESTAMP DEFAULT SYSDATE,
CREATEUSER CHAR(32),
CREATEDATE TIMESTAMP DEFAULT SYSDATE,
UPDATEUSER CHAR(32),
UPDATEDATE TIMESTAMP DEFAULT SYSDATE,
primary key(ARTICLEID)
);


テストデータ作成。

insert into WEBLOG keys(
ARTICLEID,
TITLE,
CONTENT,
CREATEUSER,
UPDATEUSER
)
values (
’2015092359000’,
’ブログ入稿テスト’,
’記事入稿のテスト’,
’shima’,
’shima’
);


作成後の表は図2を参照。

Perl+mySQLメモ

2015年8月10日 DB
Java+mySQL でバインド変数が使用できなかったので、他言語で試してみた。
一応メモ。
DB接続
my $dbh = DBI->connect(’DBI:mysql:DB name’,’user’,’password’);
print $dbh;
実行時にエラー発生
Available drivers: CSV, DBM, ExampleP, File, Gofer, ODBC, Oracle, Pg, Proxy, SQLite, Sponge.

最初は接続できなかったので調べると、どうもモジュール不足らしい。
コマンドプロンプトで
ppm install DBD::mysql

再実行
DBI::db=HASH(0x2704380)

データ取得後に文字化け発生、エンコードを試みる。
use Jcode;

だがJcodeが見つからないとエラーが出る。
Jcodeをインストール
perl -MCPAN -e shell
install Jcode

これを使う度に小飼弾さんは偉大だなぁと思う。
再実行したが文字化けが直らない。
doメソッドで文字コードを指定する。
set names utf8

バインド変数を指定してSQLを実行
select * from table_name where column = :1

エラーが出る。どうもmySQLは:1ではダメらしい。
バインド変数を直してして再実行
select * from table_name where column = ?

これだと上手くいく。


Perlだと成功したけど、もしかしてJava+mySQL(ODBC)だとバインド変数ダメなのか…?

MySQL+Java

2015年7月20日 DB
MySQL+Java
MySQL+Java
MySQL+Java
Javaの勉強。DBとの連携も兼ねてMySQLをインストール。
インストールとDBに表とレコードを作成するまで詰まってしまったのでメモ。

▼MySQL
https://www-jp.mysql.com/

Javaは事前にセットアップしており、Eclipseによる構築も出来ているので割愛。

MySQLの設定から。
早速セットアップ中にError No.1045が発生してうまくいかなくなる。
調べてみると既に構築環境内に残骸(ゴミ)が残っているらしく、それらをしっかり削除しないとダメらしい。そんな訳で以下を確認して削除。
・「プログラムと機能」から正常削除(通常のアンインストール)
・Program Files、及びProgram Files (x86)内部のMySQLフォルダを削除
・AppData/Roaming 内部のMySQLフォルダを削除
・ProgramData内のMySQLフォルダを削除
・環境変数内のMySQLに該当する箇所をを削除

完全削除して再起動を行い、再セットアップで正常終了。

テーブル・レコード作成
(DB設定は一時的に作成するものなので割りと適当)
# テーブル作成
# 社員名,役職,年齢
create table mysql.tbl_staff
(staffname varchar(16) , post varchar(16) , age tinyint(3));

# テーブル作成確認
select * from mysql.tbl_staff;

# 忘れていた項目を追加(先頭に追加)
# 社員番号
alter table mysql.tbl_staff add staffnumber tinyint(3) first;

# テーブルを再確認
DESC mysql.tbl_staff;

# 社員情報追加(適当に6レコード、値はジェネレータで適当に生成)
insert into mysql.tbl_staff(staffnumber , staffname , post , age)
values(’000’,’水島 昌幸’,’社長’,’52’);
insert into mysql.tbl_staff(staffnumber , staffname , post , age)
values(’001’,’井板 琴音’,’システム部部長’,’39’);
insert into mysql.tbl_staff(staffnumber , staffname , post , age)
values(’002’,’岸原 和斗’,’開発部部長’,’40’);
insert into mysql.tbl_staff(staffnumber , staffname , post , age)
values(’003’,’稲庭 優里菜’,’営業部部長’,’48’);
insert into mysql.tbl_staff(staffnumber , staffname , post , age)
values(’004’,’榎並 滉太’,’一般社員’,’28’);
insert into mysql.tbl_staff(staffnumber , staffname , post , age)
values(’005’,’井藤 隆雅’,’一般社員’,’23’);
insert into mysql.tbl_staff(staffnumber , staffname , post , age)
values(’006’,’塩月 佐織’,’一般社員’,’31’);

# 忘れていたのでキーの追加
alter table mysql.tbl_staff add primary key (staffnumber);

# 再確認
show columns from mysql.tbl_staff;




ORACLE HOME メモ

2014年5月29日 DB
某スクリプトでORACLE_HOMEが単体実行時には見れていたがcrontab実行時に見れていなかったのでメモ。

ORACLE HOMEを確認。
$ echo $ORACLE_HOME
実行結果
$ /usr/local/oracle

単体実行時
$ perl ./hoge.pl
hoge.pl ファイル出力箇所
open(FH,"> ./env.txt");
print FH $ENV{ORACLE_HOME};
close(FH);

出力されたenv.txt内にORACLE_HOMEの内容が無かった。

スクリプト内に以下を記述
※ ORACLE HOME が /usr/local/oracle の場合の例
$ENV{ORACLE_HOME} = ’/usr/local/oracle’;

これでORACLE HOMEがセットされる。

プロシージャ メモ

2014年5月13日 DB
PL/SQL プロシージャ メモ

・内容
実行時 SP2-0103: SQLバッファ内に実行対象がありません

/ (スラッシュ)指定されている事による警告
コメントアウトでスペースが無いときにも出現するらしい

・対応
/ (スラッシュ)を削除する

近頃思うこと

2014年5月1日 DB
OpenSSL・IE・Flash等、脆弱性云々て話が例年以上に多い気がする。
話題になる度に面倒な調査を行わないといけないのでダルい。

Oracle 10g バグ

2012年10月31日 DB
OracleにObject Browser経由で接続出来なくなった。SQL*Plusで接続を試みるも上手く出来ない。もしやと思いDBがあるサーバにリモートログインし、topコマンドで起動日数を確認すると198日経過していた。
Oracleのバージョンが10.2.0.1の場合一定期間起動したままにしておくとハングするバグが存在する。パッチを適用するかこの現象が発生する前に再起動を試みて回避するしかないのだが、今回はそれを行っていなかった。パッチを適用するにしてもOracleのサポートに入らないといけないので、予算が無くてサポート契約を行っていない会社の場合は後者の選択肢しか残されていない。サポート契約を結ぶにしても年間に結構なお値段の金額を払う必要があるので結構しんどい。
Oracleを使って色々やっていく場合は定期再起動を運用サイクルの中に組み込んだ方がいいのかと思った今日この頃。(不定期再起動だと今回みたいに忘れがちになる)

1 2

 

最新の日記 一覧

<<  2025年4月  >>
303112345
6789101112
13141516171819
20212223242526
27282930123

お気に入り日記の更新

この日記について

日記内を検索