2017年12月5日 星期二

☆SQLServer/Issue/SQL 將數據類型 varchar 轉換為 numeric 時出錯

[SQL Server][Issue][SQL] 


[案例說明][Explain]

SQL Server Version -> 2012

透過cast或convert將nvarchar或varchar轉換為數字型態時,因資料內容問題發生的錯誤:
訊息:將數據類型 nvarchar 轉換為 numeric 時出錯

Solution1
 使用ISNUMBERIC功能過濾錯誤的資料內容(官方說明)

EXAMPLE

select * from testtab
where ISNUMERIC(欄位) = 0




Solution2

若使用ISNUMERIC後仍然出現錯誤,可能是因為資料中有科學符號造成
先轉成float格式之後再轉numeric即可



select cast(  cast(欄位 as float) as numeric(10,6)  )  from testtab;

2017年12月4日 星期一

☆Windows/Batch/Command Windows批次上傳FTP指令

[Windows][Batch][Command] 


[需求說明][Request]

Windows Server Version -> 2012

Windows Server需要定期的將備份資料,上傳至異地端的FTP Server。
要實現這個功能,一般我們會用Windows排程器+Batch Command(批次檔案)來處理,Windows排程器也是就Windows作業系統內建的排程軟體,一般從系統管理中可以找到(每個版本可能有點不同);Windows Batch則是早期從DOS時代就開始有的東西,如果比較資深的相信會很有感觸...這東西已經有點年代了(小弟我也有點年紀了XD),延申到Windows Server 2012之後的Power Shell是不一樣的東西,Power Shell是這幾年新的技術…有機會再來研究研究。

下面有兩個範例提供參考,一個是用純Windows指令上傳,另一個則是借用WinSCP上傳至FTP。

[實例][Example]
功能:自動上傳檔案至FTP,並刪除過期舊檔。
Test.bat 內容如下:

set PathDest=E:\backup
set FileCount=0

For /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set dt=%%a%%b%%c)

For /f "tokens=1-4 delims=:." %%a in ('echo %time%') do (set tm=%%a%%b)

For /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set dt2=%%a/%%b/%%c)

For /f "tokens=1-4 delims=:." %%a in ('echo %time%') do (set tm2=%%a:%%b)

FOR /f "tokens=1 " %%i IN ('hostname') DO (SET HOST=%%i)

set bkupfilename=Daily_backup_%dt%-%tm%.bak


xcopy  "E:\backup\*"   E:\backup\Daily /D/K/E/Y/C/I/H

del "E:\backup\*" /q

for /R %PathDest% %%A in (*) do set /a FileCount+=1

if %FileCount% GTR 7(^
forfiles /p %PathDest% /s /d -7 /c "cmd /c del /q @path"
)

E:
cd E:\backup\dpump

REM Generate the script. Will overwrite any existing temp.txt
echo open ftpservername> temp.txt
echo user>> temp.txt
echo password>> temp.txt
echo bin>> temp.txt
echo put %bkupfilename%>> temp.txt
echo quit>> temp.txt

REM Launch FTP and pass it the script
ftp -s:temp.txt

REM Clean up.
del temp.txt




[實例][Example]
功能:利用winscp工具軟體上傳檔案至FTP。

test.txt
open ftp://user:password@example.com/
put d:\bak\*.* /
exit

batch command
WinSCP.com /ini=nul /log=ftpupload.log /script=test.txt







2017年11月26日 星期日

☆Linux☆基礎指令--tail / Basic Command

[Linux][CentOS][RHEL][Shell][Script][Command] 


[說明][Explain]
tail : Linux基礎入門指令,檢視文字檔案最後面內容(最後十行)。。

[用法][Usage]
tail [TextFile]

2017年11月22日 星期三

☆Linux☆基礎指令--head / Basic Command

[Linux][CentOS][RHEL][Shell][Script][Command] 


[說明][Explain]
head : Linux基礎入門指令,檢視文字檔案標題內容(前十行)。

[用法][Usage]
head [Text File]

☆Linux☆基礎指令--which / Basic Command

[Linux][CentOS][RHEL][Shell][Script][Command] 


[說明][Explain]
which : Linux基礎入門指令,尋找執行指令的目錄。

[用法][Usage]
which [Program Name]

2017年10月25日 星期三

☆Linux☆基礎指令--chage / Basic Command

[Linux][CentOS][RHEL][Shell][Script][Command] 


[說明][Explain]
chage : 用來管理帳戶登入與密碼管控,如密碼逾期時間以及密碼管控設定。

[用法][Usage]
chage [option]   [UserID]

2017年10月20日 星期五

☆SQLServer/Issue/Replication 更改Server主機名稱的問題/無法連接到伺服器

[SQL Server][Issue][Replication] 


[案例說明][Explain]

SQL Server Version -> 2012

因主機名稱的修改,造成SQL-Server Replication配置時發生錯誤:
訊息:無法連接到伺服器XXXX

Solution1

SELECT @@SERVERNAME ,serverproperty('servername')

出現 舊主機名,新主機名
執行以下動作



sp_DropServer 舊主機名
sp_AddServer 新主機名,Local



Solution2

若出現錯誤
訊息:訊息 15190,層級 16,狀態 1,程序 sp_dropserver

則執行下列動作



exec sp_droplinkedsrvlogin '舊主機名',null
exec sp_dropserver '舊主機名','droplogins'
exec sp_addserver '新主機名' , 'LOCAL' 

若執行動完之後,還是有問題,最後一招就是DB備份後,重新安裝SQL-Server了!!


2017年10月11日 星期三

☆TIPTOP Start Web Service

[TIPTOP]


紀錄一下.TipTOP Web Service啟用的方式

</u1/tiptop> id
uid=203(tiptop) gid=202(tiptop) groups=202(tiptop)
</u1/tiptop> startweb as
Genero Application Server - Application Server
Version 1.32.1c
Build 505 - Jun  9 2005 15:56:15
(c) 1989-2005 Four J's Development Tools
Started on ............. 2017/10/11 11:10:35
Branding .............................................................. [done]
File System initialization ............................................ [done]
XML library initialization ............................................ [done]
Configuration interpretation .......................................... [done]
Application Server startup ............................................ [done]
tiptop   273268     1  0 11:10 ?        00:00:00 gasd -f as.xcf
start VPrintSvrt
 Version: 1.0.0.070
 Copyrights of Diginfo Technology Co.
</u1/tiptop> ps -ef |grep gasd
tiptop   273268     1  0 11:10 ?        00:00:00 gasd -f as.xcf
tiptop   274294 172491  0 11:10 pts/2    00:00:00 grep gasd

☆AIX☆NTP服務

[AIX]NTP服務 


[說明][Explain]
NTP(Network Time Protocol)即網路校時服務,是為了讓Server能有精準的時間應用,在各作業系統中是很常使用,也是很重要的一個服務。

[BLOG] Google搜尋登錄2017

   [Blog][Blogger]
            建立自己的網誌或網站之後,可以登錄Google,這樣其它人可以快速找到我們的網誌與文章,2017年之前是可以自己設定網址與資訊,現在只能提供登錄的需求,大約要2~14天,才能搜尋到網站。
   Google 搜尋連結

    加入自己的網誌之後,送出連結就行了,記得把http跟https的網址都加一加。

☆AIX 7zip 安裝

[AIX]7Zip安裝


[說明][Explain]
    7-Zip是著名的壓縮軟體,一般只支援Windows或Linux系統,若要在Aix這種Unix的環境使用,需透過第三方7Zip,才能使用,具體步驟如下:


  1. 下載P7zip for Aix
  2. 透過rpm 安裝 P7Zip
  3. 重新Link P7Zip

☆SQLServer/Issue/Replication 复制的事务正等待下一次日志备份或等待镜像伙伴更新

[SQL Server][Issue][Replication] 


[案例說明][Explain]

SQL Server Version -> 2012

因User回饋資料同步問題,檢查DB同步機制發生Log Reader有以下訊息:
复制的事务正等待下一次日志备份或等待镜像伙伴更新

跟網上遇到的案例不同(連結),並不是透過DBCC Trace的方式排除此問題。
因環境搭配AlwaysOn作為HA,檢查時發現是副本太過繁忙,導致Log Reader無法正常運作。
那時副本在做統計分析的作業,等副本作業完成後,這個問題也自動排除了。

2017年10月10日 星期二

☆TIPTOP/Oracle Issue : Fail in Reading System Parameter

[TIPTOP][ORACLE][ISSUE] 


[事件說明][Explain]
登入時,出現無法登入之異常訊息
Info: User of XXXX Fail in Reading System Parameter.

[解決方案[Solution]

  1. 檢查$FLGRUN/etc 設定是否異動過
  2. 檢查Oracle DB是否正常運行?
  3. 檢查營運公司Account是否能正常登入?
[案例分享][CaseStudy]

    分享公司遇到的案例,主要是因為Oracle Account被Lock了,由於在 Oracle Profile中為了提升安全性,防止測試帳號密碼,故在Profile中的設定為:

  • Failed login attempts =>10 :登入失敗超過10次即鎖定帳號
  • Password lock time =>1 .:登入失敗後鎖定的時間為1天


    起因是因為登入太多次失敗,而造成帳號被Lock,由於之前並沒有特別對登入行為做紀錄,針對這個Case將User 登入行為追,啟用Audit功能,以防止下次再遇到類似的問題。


  • 啟用Oracle Audit功能,即Audit_Trail=DB(需重開DB),並將連線失敗的行為加入監控之中,詳細作法請參考
  • 啟用Audit功能之後,需注意Audit空間的增長,建議將Audit資訊保留一段時間(EX.7天),免得造成Oracle Tablespace空間爆掉。

2017年10月6日 星期五

[轉載][Linux]Linux Multipath (Storage I/O)

[轉載][Linux]Linux Multipath (Storage I/O)


Linux Multipath (Storage I/O)

l         Multipath說明
儲存裝置到主機有多條路徑, 這就叫作 Multipath, 一般在外接 Storage 上較常看到
Multipath 一般常看到的是在 Storage 上有一個以上的 Controller 或是 供外部主機存取的介面, 這個情況下你會發現, 我在 Storage 上明明只切了一塊空間給主機, 但是再主機上卻看到兩個空間


為什麼要用 Multipath ?
簡單來說就是可以提高可用性, 以上面的例子來說, 主機上看到的兩個空間其實是同一個東西, 但是因為路徑不同造成主機認為是兩個空間. 這個時候我們必須透過軟體來將兩個空間綁在一起

上面的例子, 主機看到兩個空間, 如果你要直接這樣用也是可以, 但是當你用的那個路徑剛好故障, 那你就必須手動去切換路徑, 若是你設定好 Multipath, 系統會幫你自動切換, 這也就是為什麼要作 Multipath 的原因

l         環境說明
OS:
Redhat 5.4 64bit

所需套件
yum –y install device-mapper device-mapper-multipath

指令與設定檔
Multipath 主要服務
/etc/init.d/multipathd

Multipath 主要設定檔
/etc/multipath.conf
最簡單的設定下, 只有兩個地方需要修改:

這個區塊是設定哪些裝置不作 Multipath, 預設的 devnode "*" 會把所有裝都列入不作 Multipath, 把他註解掉即可(前面加 #)

#blacklist {
#        devnode "*"
#}


這個區塊是作 Multipath 的設定, 把前面的註解移掉即可

defaults {
        udev_dir                /dev
        polling_interval        10
        selector                "round-robin 0"
        path_grouping_policy    multibus
        getuid_callout          "/sbin/scsi_id -g -u -s /block/%n"
        prio_callout            /bin/true
        path_checker            readsector0
        rr_min_io               100
        max_fds                 8192
        rr_weight               priorities
        failback                immediate
        no_path_retry           fail
        user_friendly_names     yes
}


設定完之後啟動服務
chkconfig multipathd on
service multipathd restart

使用 multipath -l 來檢視
mpath1 這個裝置是由 sdb sde 組成, 也就是說其實 sdb sde 是同一塊空間
後面的 NETAPP,LUN 代表這是 NETAPP上所切出來的 LUN, 依廠牌不同所看到資訊也會不同

[root@C5TASM2 init.d]# multipath -l
mpath2 (360a98000534b53524a6f786e59743973) dm-4 NETAPP,LUN
[size=100G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][active]
 \_ 0:0:0:2 sdc 8:32  [active][undef]
 \_ 3:0:0:2 sdf 8:80  [active][undef]
mpath1 (360a98000534b53524a6f787736306e64) dm-3 NETAPP,LUN
[size=100G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][active]
 \_ 0:0:0:1 sdb 8:16  [active][undef]
 \_ 3:0:0:1 sde 8:64  [active][undef]
mpath0 (360a98000534b53524a6f786e592d7367) dm-2 NETAPP,LUN
[size=1.0G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][active]
 \_ 0:0:0:0 sda 8:0   [active][undef]
 \_ 3:0:0:0 sdd 8:48  [active][undef]
mpath3 (360a98000534b53524a6f787744692d34) dm-5 NETAPP,LUN
[size=1.0G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][active]
 \_ 0:0:0:3 sdg 8:96  [active][undef]

PS.由於linux每次重新開機,disk會產生”飄移”,造成mount的DISK會錯誤,所以要設定alias name來避免這種情況發生

設定multipath.conf 增加alias name

[root@C5TASM1 etc]# vi multipath.conf
multipaths {
#       multipath {
#               wwid                    3600508b4000156d700012000000b0000
#               alias                   yellow
#               path_grouping_policy    multibus
#               path_checker            readsector0
#               path_selector           "round-robin 0"
#               failback                manual
#               rr_weight               priorities
#               no_path_retry           5
#       }
  multipath {
       wwid   360a98000534b53524a6f787736306e64
          alias                   dbdata1
  }
  multipath {
          wwid   360a98000534b53524a6f786e59743973
          alias                   dbdata2
  }
  multipath {
          wwid   360a98000534b53524a6f786e592d7367
          alias                   crs1
  }
  multipath {
          wwid   360a98000534b53524a6f787744692d34
          alias                   crs2
  }
}

重啟multipath服務
[root@C5TASM1 etc]# service multipathd restart
Stopping multipathd daemon:                                [  OK  ]
Starting multipathd daemon:                                [  OK  ]


[root@C5TASM1 etc]# multipath -ll
crs2 (360a98000534b53524a6f787744692d34) dm-5 NETAPP,LUN
[size=1.0G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=4][active]
 \_ 0:0:0:3 sdd 8:48  [active][ready]
 \_ 3:0:0:3 sdh 8:112 [active][ready]
crs1 (360a98000534b53524a6f786e592d7367) dm-2 NETAPP,LUN
[size=1.0G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=4][active]
 \_ 0:0:0:0 sda 8:0   [active][ready]
 \_ 3:0:0:0 sde 8:64  [active][ready]
dbdata2 (360a98000534b53524a6f786e59743973) dm-4 NETAPP,LUN
[size=100G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=4][active]
 \_ 0:0:0:2 sdc 8:32  [active][ready]
 \_ 3:0:0:2 sdg 8:96  [active][ready]
dbdata1 (360a98000534b53524a6f787736306e64) dm-3 NETAPP,LUN
[size=100G][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=4][active]
 \_ 0:0:0:1 sdb 8:16  [active][ready]
 \_ 3:0:0:1 sdf 8:80  [active][ready]

刪除路徑
[root@C5TASM1 etc]# multipath -F #刪除現有路徑  兩個新的路徑就會被刪除
[root@C5TASM1 etc]# multipath -v2 #格式化路徑   格式化後又出現


裝置位置
[root@C5TASM1 etc]# ll /dev/mapper/ 
multipath 作出來的裝置會放在這個目錄下, 預設會使用 mpath1 mpath2 mpath3......

若你要使用這個裝置, 直接對他作 fdisk 即可
 [root@C5TASM1 etc]# fdisk /dev/mapper/crs1
 [root@C5TASM1 etc]# kpartx -a /dev/mapper/crs1

Fomrat Disk
[root@C5TASM1 etc]# mkfs.ext3 /dev/mapper/crs1

其它補充
1. 在還沒作 Multipath 之前, 使用 fdisk -l 會看到許多磁碟裝置, 但還算好檢視, 啟動 Multipath 後會出現更多裝置, 像是 dm-0 dm-1 等等, 若你在作 Multipath 之前就先作好 fdisk , 那再用 fdisk -l 的會看到更亂的資訊
因此建議千萬不要在之前就先切空間, 另外可以使用 multipath -l 來確認 multipath 的裝置

參考文件:
http://www.datacentersky.com/depth-analysis-the-path-of-the-how-to-configure-multi-in-the-linux-environment.html
http://xiangit.blogspot.tw/2013/09/linux-multipath-storage-io.html

來源:http://shinchuan1.blogspot.tw/2014/04/linux-multipath-storage-io.html

[轉載][Python] Install Tool(ImportError: No module named setuptools)解决方法

[轉載][Python] Install  Tool(ImportError: No module named setuptools)解决方法


Python第三方模块中一般会自带setup.py文件,在Windows环境下,我们只需要使用命令
    cd c:\Temp\foo
    python setup.py install
    两个命令就可以完成第三方模块的安装了。第一个cd命令将当前目前切换到待安装的第三方模块的目录下(这里假设第三方模块解压后的目录为c:\Temp\foo),第二个命令就执行安装了。安装的过程中可能会出现“ImportError: No module named setuptools”的错误提示,这是新手很常遇见的错误提示。不用担心,这是因为Windows环境下Python默认是没有安装setuptools这个模块的,这也是一个第三方模块。下载地址为http://pypi.python.org/pypi/setuptools。
    如果是Windows环境的话,下载exe形式的安装程序就可以了(傻瓜式安装,非常快)。安装了setuptools之后,再运行“python setup.py install”就可以方便地安装各种第三方模块了。

    2014-08-07更新:
    现在http://pypi.python.org/pypi/setuptools上面貌似没有提供exe下载了,取而代之的是一个自动化下载安装的脚本https://bootstrap.pypa.io/ez_setup.py,下载该脚本后运行
    python ez_setup.py
    即可。脚本会自动判断python的版本,自动下载,安装。

    如果是Linux环境的话,可能稍微麻烦一点,可能是笔者能力不够吧。下面简单说一下Linux下setuptools的安装过程。同样是在http://pypi.python.org/pypi/setuptools这个地方下载setuptools-0.6c11-py2.7.egg文件到本地,使用chmod +x setuptools-0.6c11-py2.7.egg命令使文件成为可执行文件。然后运行sudo sh setuptools-0.6c11-py2.7.egg命令完成安装。
    上述方法经笔者测试可行。

來源:http://blog.sina.com.cn/s/blog_3fe961ae0100zgav.html

2017年10月5日 星期四

[SQL Server][Issue]Rebuild Index 造成 transaction log full的異常

[SQL Server][Issue]


[錯誤訊息]
The transaction log for database 'xxx' is full due to 'ACTIVE_TRANSACTION'. 
错误: 9002,严重性: 17,状态: 4。


    因設置排程於夜間Rebuild Index造成系統負載過大,根據網路上與官網的資訊可以理解是 Transaction執行時間過久,造成的問題,也可以看成是因為系統效能不夠,導致交易無法如期完成而Time out掉了。
    就我所遇到的Case,在設置Rebuild Index 時,因為設定了 sort_in_temp = ON ,由於Temp太過忙碌而造成的錯誤,經測試驗證,已將sort_in_temp = OFF後,即順利完成,缺點是會缺用Index的空間。


[Python]常用網站整理

[Python]常用網站整理 

        最近在學習Python這個新興的程式語言,想透過Python罔路上爬蟲,收集資訊,來做一些分析應用,由於還在構思的階段,這邊先整理一些之前常用的網站。

2017年9月12日 星期二

[BLOG] Blogger入門技巧整理

   [Web][Blog][Blogger][CSS][HTML][JavaScript] 
        Grass原本是想把BLOG 當成是IT 技術的一個備忘錄,雖然從事IT工作多年,Web的技術因為久沒接觸,相不到有這麼大的演變,加上搜尋Blog相關技術的時候,中文的網站實在不多,因此做個整理,也方便對BLOG經營有興趣的同好一起研究。

2017年8月9日 星期三

Linux 常用指令整理 / Useful commands

[Linux][CentOS][RHEL][Shell][Script][Command] 

☆系統管理指令 / System Manage Command
☆使用者管理指令 / User Manage Command
☆檔案系統管理指令 / File System Manage Command
☆Shell腳本 / Shell Script
基礎指令 / Basic Command
☆服務管理 / Service Manage