查詢oracle 11g匯出檔案的字元編碼

最近遇到一個搞笑的烏龍, 公司匯出的oracle dmp檔案, 進行還原測試的時候, 無法匯入到測試區, 錯誤訊息為:

IMP-00037: Character set marker unknown

經過爬文,有可能是字元編碼不一致, 網路上提供的解方是:

 cat xxx.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6

這樣可以查出oracle系統的字元編號, 再以字元編號查詢編碼名稱

SQL> select nls_charset_name(to_number('上個指令查出的字元編號','xxxx')) from dual;

這樣的指令應該是可以查出來, 若查不出來就可能是檔案損毀或是我這樣的烏龍,

我匯出備份的時候, 加上tar以及bz2壓縮

所以原檔案變成 xxx.dmp.bz2, 完全看不出來有tar , 因此解壓的時候我忘記了只有解bz2 , 解出來的xxx.dmp 其實不是原本的dmp檔案, 還需要解開tar這個動作, 哈哈

docker 安裝 restyaboard (一種看板軟體)

**安裝前必須先安裝postgres (因為restyaboard是docker安裝, 因此postgres也建議用docker安裝)

也必須先行建立資料庫 restyaboard , 存取的使用者,與密碼 ,

docker run --rm -d -e POSTGRES_DB='restyaboard' \
-e POSTGRES_HOST='postgres' \
--link <docker postgres名稱>:postgres \
-e POSTGRES_PASSWORD='admin' \
-e POSTGRES_USER='admin' \
-p 8080:80 \
--name restyaboard restyaplatform/restyaboard:dev

完成後, 可以http登入8080 ,

輸入預設帳號admin , 密碼restya

docker安裝postgres

安裝很簡單, 預設的管理者帳號是 postgres , 密碼就是底下所設定的密碼

docker volume create postgres-data 
docker run --name postgres -v postgres-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=<密碼> -d postgres

如何登入

docker exec -it postgres  bash

登入後輸入 su - postgres

變身成 postgres之後, 

再下psql 就可以進入postgres世界了

但是指令就很不習慣,只能列出一些剛剛用到的,以後想到再補上

$ sudo -u postgres psql
-- List all databases via \l (or \list), or \l+ for more details
postgres=# \l Name | ... -----------+----------- postgres | ... template0 | ... template1 | ... postgres=# CREATE DATABASE mytest; $ sudo -u postgres createuser --login --pwprompt testuser Enter password for new role: xxxx # Create a new database called testdb, owned by testuser. $ sudo -u postgres createdb --owner=testuser testdb

 

MSSQL的日期(Date)欄位如何加上指定的小時數

公司某天刷臉機器因停電造成時間錯誤, IT人員未即時更新(因為週六), 導致少數加班人員吃飯刷卡紀錄錯誤,少了11小時, 因此必須加回去原本的資料庫 , 可使用 dateadd(hour, 預加或減的小時數字, 欄位名稱) 的方式處理.

update dbo.KQZ_Card set CardTime= dateadd(hour,11,KQZ_card.CardTime) where DevID=9 and year(CardTime)=2019 and Month(CardTime)=4 and day(CardTime)=27;

安裝於linux的oracle 11g , 如何設定instance啟用方式

oracle 11g是很久的資料庫, 當時是配合鼎新tiptop 5.1 GP版本安裝, 安裝於centos 5.5 final ,
tiptop系統分成topprod, topstd , 與toptest , 但是到最後很少用到 topstd與toptest,

所以可以預設停用這兩個用不到的instance,

我們可以修改 /etc/oratab 這個檔案, 長得如下:

toptest:/u2/oracle/product/11.2.0/db_1:Y
topstd:/u2/oracle/product/11.2.0/db_1:Y
topprod:/u2/oracle/product/11.2.0/db_1:Y

請停掉database後, 把Y改成N, 以後重啟就不會啟動用不到的instance

mysql(mariadb)新增資料庫(UTF-8)與使用者權限

每次都會忘記, 而且之前一點都不在意把使用者與root權限分開,但資安還是要顧著.

MariaDB>CREATE DATABASE 資料庫名稱 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

新增使用者,密碼與權限

MariaDB> create database 資料庫名稱;
MariaDB> create user 使用者帳號@localhost identified by '使用者登入密碼';
MariaDB> grant all privileges on 資料庫名稱.* to 使用者帳號@localhost;
MariaDB> flush privileges;
MariaDB> quit
1 2