ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

Ubuntu 20.04にdotnetをインストール

dotnet インストール

Linuxで環境構築してみようと思ってので、Ubuntu 20.04にdotnetインストール手順を残してみます。

信頼されたキーの一覧に Microsoft パッケージ署名キーを追加

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

SDKインストール

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-5.0

ランタイムのインストール

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-5.0

参考

コマンドは以下を参照しました。バージョンによって非対応の場合があるようなので、最新を確認して実行する必要があります。

dotnet ubuntu関連
https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-ubuntu

dotnet Help
https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet

VS Code エディター関連メモ

Macで「code .」で起動出来るようにする。

何回もやっているが、すごく忘れぽくて毎回探すことになってしまっているので、メモっときます。

  • VS Codeを起動
  • コマンドパレットを起動(Command + Shift + P)
  • Shellと入力し以下を選択
    • Shell Command: Install 'code' command in PATH

OracleのRAW型をSQL ServerのVARBINARY型への移行方法

OracleのテーブルをMSSQLへ移行する

ORACLEがRAW型を持つデータがあり、SQL Serverへ移行する方法を探した結果
なんとか解決したので、メモ。

OracleのRAW型に対応するMS SQLServerの型はVARBINARY型

ORACLE

  CREATE TABLE rawdata
   (
      PASSWORD RAW(64)
   ); 

SQL SERVER

  CREATE TABLE bindata
   (
      PASSWORD VARBINARY(64)
   ); 

OracleのRAW型はRAWTOHEXでHEX値として出力

SELECT RAWTOHEX(PASSWORD) AS PASSWORD FROM rawdata;
-------
PASSWORD
88db98ae696277dd28b0d2bda6e3....
eaead8048dbe6d7f375bfd11d8947f....

SQLSERVERへは’0x'をつけてHEX値としてINSERTする

insert into bindata values (0x88db98ae696277dd28b0d2bda6e3....);

ORACLEのSELECT文でInsert文を作る

SELECT
 'insert into bindata values (0x' || RAWTOHEX(PASSWORD)  || ');'
FROM bindata

参考

RAW Data Type - Oracle to SQL Server Migration - SQLines Open Source Tools

タスクスケジューラ、タスク作成メモ

(0x1)エラーになる

操作のプログラムをbatファイルにしていたりすると、実行パスが認識されず、エラーになる。
解決:開始(オプション)に実行パスを設定してする。

その他、 最上位の権限で実行するがチェックされていると同じエラーになる。

裏でタスクが実行されていない?

確認する。 全般の「ユーザーがログオンしているかどうかに関わらず実行する」にチェックをいれる。

Image 関連メモ

Imageの変換

Imageからbyte[]への変換

ImageConverter imgconv = new ImageConverter();
byte[] b = (byte[])imgconv.ConvertTo(myThumbnail, typeof(byte[]));

byte[]へからImageへの変換

byte[] b ;
Image img;
using (var ms = new System.IO.MemoryStream(b)) {
    img = Image.FromStream(ms);
}

byte[]からBase64への変換

byte[] b ;
String base64 = Convert.ToBase64String(b);

サムネイル画像を生成する

// Callback指定、Delegateは使用できない模様
public bool ThumbnailCallback()
{
    return false;
}

public main() 
{
    Image img = new Image("c:\work\img1.jpg");

    Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
    Image myThumbnail = img.GetThumbnailImage40, 40, myCallback, IntPtr.Zero);
}

イメージをWebページに表示する

public String ImageSrcBase64
{
    get
    {
        return Convert.ToBase64String(_b);
    }
}
<img src="data:image/jpeg;base64,<%=Html.DisplayFor(m => m.ImageSrcBase64) %>"

参考

https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.image.getthumbnailimage?view=dotnet-plat-ext-3.1

https://edge.sincar.jp/web/base64-inline-image/

Oracle公式ContainerでDockerイメージのダウンロード及び構築

OracleデーターベースをDockerで構築する

以前参考に構築したイメージがなくなり、新しく構築する必要ができたので、Oracleさんの公式Containerを利用してみました。

Oracle Container Registry

Oracle Container Registryから公式のDockerイメージをダウンロードすることが可能
ダウンロードにはサイトへのログインが必要なので、IDが無い場合は、登録が必要

f:id:haronoid:20200402133356p:plain
必要とするリポジトリを選択する。 f:id:haronoid:20200402133437p:plain

右側の欄に同意をしないと、ダウンロードできないので、ご注意
f:id:haronoid:20200402133737p:plain

最後に命令コマンドがあるのでこれを使います。
f:id:haronoid:20200402133555p:plain

イメージダウンロード

まず、コマンドラインからのログインが必要です。

docker login container-registry.oracle.com
# 手順1で登録したユーザ名とパスワードを入力
> Username: xxxxx@xxxxx
> Password: xxxxxx

ここから、Tagに有ったコマンドを実行、ダウンロードにかなり時間かかりました。

docker pull container-registry.oracle.com/database/standard:12.1.0.2

環境設定ファイル作成

common.env

TZ=Asia/Tokyo
DB_SID=ORCL
DB_PASSWD={password}
DB_DOMAIN=mylocaldomain
DB_BUNDLE=basic

コンテイナー作成

docker run -d --env-file ./common.env -p 1521:1521 -p 5500:5500 -it --name ora12c --shm-size="8g" container-registry.oracle.com/database/standard:12.1.0.2

実行はあっさり終わりましたが、ここからが時間かかりました。
Dockerログで最後のReadyまで表示されるまで待ちます。

User check : root.

Setup Oracle Database

Oracle Database 12.1.0.2 Setup

Thu Apr 2 10:28:32 JST 2020


Check parameters ......

log file is : /home/oracle/setup/log/paramChk.log

paramChk.sh is done at 0 sec

untar DB bits ......

log file is : /home/oracle/setup/log/untarDB.log

untarDB.sh is done at 276 sec

config DB ......

log file is : /home/oracle/setup/log/configDB.log

configDB.sh is done at 1334 sec

Done ! The database is ready for use .

接続情報について

接続には環境設定ファイルのDB_SIDとDB_DOMAINで決まります。
形式:{DB_SID}.{DB_DOMAIN}

Database=localhost:1521
SN=ORCL.mylocaldomain

SQLPLUS起動

docker exec -it ora12c bash -c "source /home/oracle/.bashrc; sqlplus /nolog" 

## sys ユーザ のパスワードは Oradoc_db1 で、 sysdba として接続します。
SQL> conn sys/{password}@ORCL.mylocaldomain as sysdba

DumpからDBを復元

インスタンスの中のDPDUMPフォルダーにDumpファイルをコピー

docker cp  /Downloads/MYDB.DMP ora12c:/u01/app/oracle/admin/ORCL/dpdump

コンテナに接続し、impを実行する。

docker exec -it ora12c bash
impdp system/{password} directory=DATA_PUMP_DIR dumpfile=MYDB.DMP log=expdp_MYDB.log

PASSWORDの期限を無期限にする

DEFAULTパスワード期限を無期限に設定する。

docker exec -it ora12c bash
sqlplus sys/{password} as sysdba

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

パスワード再設定

ALTER USER ユーザ名 IDENTIFIED BY 新パスワード;

ロックの解除

ALTER USER ユーザ名 ACCOUNT UNLOCK;

robocopyメモ

robocopy

使う機会がなかったが、今回、サーバー移行の案件が有ったため、使うことになった。
備忘録としてオプションなどをメモる。

オプション

  • /mir : コピー元と先を同期する。(元に削除されたら、先にも削除される)
  • /xo : 古いファイルをコピーしない
  • /r:n : コピーに失敗した場合の再トライ回数(規定値:1000,000)
  • /w:n : 再実行時の待機時間(規定値:30秒)
  • /b : バックアップモードコピー
  • /s : 空のフォルダーを除外
  • /e : 空のフォルダーを含む
  • /zb : 再起動可能モードを使用
  • /NP : No Progress 進捗率を非表示
  • /NFL : No FileList コピー成功ファイルを表示しない
  • /NDL : No DirectoryList コピー成功ファイルを表示しない

サンプル

run.bat

@@echo off

set source="c:\source"
set target="d:\target"

echo %date% %time% > robocopy.log

robocopy %source% %target% /MIR /R:1 /W:1 /NFL /NDL >> robocopy.log

echo %date% %time% >> robocopy.log

@@echo on