ギャバンITサービス
お菓子の家が作れるシステムエンジニアです

oracleでインポートしてコミット

古いやり方 まだデータポンプなかった頃。 imp bsm3/bsm3@BSM3 file=/opt/oracle/expdat1.dmp COMMIT=Y BUFFER=100000 FULL=y rows=y ignore=y log=import.log データポンプ使う 1テーブルずつ 1 2 3 expdp system/gvis directory=backupdir dumpfile=export.dmp tables="ほげ" logfile=explog.log impdp system/gvis directory=backupdir dumpfile=export.dmp tables="ほげcp" logfile=implog.log 全テーブル 1 2 3 expdp system/gvis directory=backupdir dumpfile=export.dmp full=y logfile=explog.log impdp system/gvis directory=backupdir dumpfile=export.dmp full=y logfile=implog.log

mariadb サーバのパラメータ

秘伝のタレ mysqlを使ってる頃からあるパラメータ。 今はdockerコンテナでmariadbに移したものを利用。 普段はクラウドの中で動いていて、データとログとパラメータを永続化領域に置いてバックアップしたものを、ローカルdockerの中にそのまま持ってきて環境をクローンしてる。 無効な内容もあるかもしれないけど、時々見直しはしても基本このまま。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [mysqld] max_allowed_packet=2000M log_warnings=1 query_cache_size=640M query_cache_type=1 query_cache_limit=1280M innodb_buffer_pool_size=5120M innodb_log_file_size=128M read_buffer_size=320M log-error=/var/log/mariadb.log slow_query_log slow_query_log_file=/var/log/mariadb_slow.log long_query_time=30 innodb_data_file_path=ibdata1:1G innodb_file_per_table=ON [mysqldump] max_allowed_packet=200M mysql使い始めの頃はマシンのメモリも8GB程度だったけど、今は20GB程度をdockerに使わせるからチューニングとかしなくなった。 ...

mariadb テーブルのロック

GUIクライアントからロックしてみる 以下のトランザクションを2つの「A5sql」実行窓から順番に動かすと、片方が10秒待った後、もう片方が10秒待って処理が完了する。 1 2 3 4 5 6 7 start transaction ; lock tables GVIS_keihi WRITE ; select sleep(10) ; rollback ; unlock tables ; トランザクションで囲むとプロセス単位で順に処理して内容が維持されるはず。 ロックしてにっちもさっちも行かないとき linux上のmysqlから実行する。 lockの確認 State欄にて「Locked」「updating」等の状態を確認できる。 1 mysql> show processlist; lockしているプロセスの削除 LockedしているプロセスのIdを元にkillを実行。 1 mysql> kill [プロセスId]; テストでふんづまったときや障害のときにやる。

mysql カラムやテーブルの操作

テーブルタイプの変更 1 2 3 4 5 mysql> ALTER TABLE CMN_TenpoMST ENGINE InnoDB; ⭐️トランザクション利用の場合は必須 mysql> ALTER TABLE tbl2 ENGINE MyISAM; ⭐️トランザクション利用せず性能優先する場合 カラムの追加-基本 1 2 ALTER TABLE <テーブル名> ADD <カラム名> <型情報> AFTER <カラム名>; ALTER TABLE <テーブル名> ADD <カラム名> <型情報> FIRST; カラムの追加例 1 2 3 4 5 use nariDB_1st ; alter table pro_sale_03_TojitsuNyukinJoho ; add foo varchar(200) after Uchikin ; カラムの変更 1 ALTER TABLE <テーブル名> CHANGE <古いカラム名> <新しいカラム名> <型情報>; カラムの変更例 1 2 3 4 5 6 7 8 9 use nariDB_1st ; alter table pro_sale_03_TojitsuNyukinJoho change foo bar int ; alter table CMN_pro_sale_AreaName2 modify column Chohyo_TenpoHyoki nvarchar(20) NULL comment '帳票_店舗表記名' ; カラムの削除 1 ALTER TABLE <テーブル名> DROP <カラム名>; カラムの削除例 1 2 3 4 use nariDB_1st ; alter table pro_sale_03_TojitsuNyukinJoho drop bar ; 主キーの設定/削除 1 alter table テーブル名 add primary key( フィールド名, ... ) 主キーの設定/削除例 1 2 use takaraDB_Honban ; alter table pro_sale_PR_TenpoMST drop primary key インデックスの設定/削除 1 alter table テーブル名 add index [インデックス名] ( フィールド名, ... ) インデックスの設定/削除例 1 2 use nariDB_1st ; alter table pro_sale_PR_TenpoMST drop pro_sale_PR_TenpoMST_idx

mysql 受信許可パケットサイズ

クライアントからサーバへ送ることができるパケットサイズを広げる。 確認すると最初は1MB程度。 1 2 3 4 5 6 mysql > show variables like 'max_allowed_packet' ; +--------------------+---------+ | Variable_name | Value | +--------------------+---------+ | max _ allowed _ packet | 1048576 | +--------------------+---------+ /etc/my.cnfに記述を入れてDBを再起動 1 2 [ mysqld] max _ allowed _ packet =16MB 広がったか確認。 1 2 3 4 5 6 mysql > show variables like 'max_allowed_packet' ; +--------------------+---------+ | Variable_name | Value | +--------------------+---------+ | max _ allowed _ packet | 16777216 | +--------------------+---------+ これでpdfをbase64でエンコードしてblob列にも入れやすくなるか。