星期五, 12月 21, 2012

CentOS 6.x 移除預設安裝的圖形界面

1. 修改 /etc/inittab 的 id:5:initdefault: 改成 id:3:initdefault: (開機用文字模式啟動),並 REM x:5:respawn:/etc/X11/prefdm -nodaemon。

2. 執行 yum groupremove "GNOME Desktop Environment"、yum groupremove "X Window System" 將圖形視窗界面程式移除。

星期四, 12月 20, 2012

CentOS Linux Software RAID 救援

1.用 CentOS 光碟用 linux recure 模式開機

2. 執行 fdisk -l 查詢磁碟分割區是否有正常掛載。

3. 執行 mdadm --examine --scan >> /etc/mdadm.conf 由原 RAID 分割區產生 RAID 定義檔。

4. 執行 cat /etc/mdadm.conf 查出原先有哪些 RAID 分割區。

5. 依照第 3 步驟查詢結果,執行 mdadm --assemble --scan /dev/md0。

6. 將 RAID 分割區全部載入後,請先執行 cat /proc/mdstat 查看是否有 RAID 卷冊在進行工作。

7. 在 /mnt 執行 mkdir 建立各 RAID 卷冊要掛載的資料夾。

8. 執行 mount /dev/md0 /mnt/md0 將 RAID 卷冊掛載到資料夾。

9. 此時就可以抓取到 RAID 卷冊裡的資料。

* 如果掛載 RAID 卷冊出現有【... invalid argument】的錯誤訊息,請執行 fsck /dev/md0 對 RAID 卷冊做檔案系統檢查。


星期二, 9月 25, 2012

MSSQL 2008 如何清空交易記錄檔(*_Log.LDF)

在 MSSQL 2000 可以下 T-SQL 指令

backup log database_name with TRUNCATE_ONLY

dbcc shrinkdatabase (database_name, TRUNCATEONLY)

“database_name”是資料庫檔案的實際名稱。

來清空交易記錄檔(*_Log.LDF)。

但在 MSSQL 2005 以後,此 T-SQL 指令就不能使用了,必須改用其他方法,以下是方法之一。
(提醒您執行處理之前,務必先備份原來的資料庫。)

一、將資料庫切換至【簡單】復原模式。
use master
go
ALTER DATABASE 【database_name】 SET RECOVERY SIMPLE WITH NO_WAIT


二、查詢資料庫交易記錄檔的邏輯名稱(如果已經知道【database_log_name】的名稱可以省略 select 那一行指令 )。
use 【database_name】
go
select name from sys.database_files where type_desc = 'log'

三、將交易記錄檔還原成 1MB。
DBCC SHRINKFILE(【database_log_name】, 1)

四、將資料庫切換回【完正】復原模式。
use master
go
ALTER DATABASE 【database_name】SET RECOVERY FULL WITH NO_WAIT

最後再次提醒您,在執行任何處理之前,請務必先備份原來的資料庫。

用 yum 將 CentOS 5.x 的 php 5.1.x 升級到 5.3.x - Part II

發現一種官方提供的 yum 安裝方法。

做更新動作之前還是提醒請先備份(網管千古名言:【沒事多備份,多備份沒事。】)。

一、先停止 apache 服務。
#service httpd stop

二、查詢已經有安裝了哪些 php 相關的程式記錄下來(後面安裝 php 5.3 模組時會用到)。
#rpm -qa | grep php

三、移除原先安裝的 php(包含 php 模組)。
#yum remove php php-*
(如果不移除 php-*,會導致後面安裝 php 5.3 的錯誤)

四、安裝 php 5.3。
#yum install php53

五、安裝 php 5.3 模組。
#yum install php53-gd php53-pdo php53-mbstring php53-mysql php53-ldap php53-devel php53-odbc
(上述是我安裝的 php 模組,您可以依照步驟二查詢結果的去安裝)

六、啟動apache 服務。
#service httpd start

七、查詢 php 版本是否正確更新。
#php -v

打完收工。
備註: 似乎從 5.2 開始 php 的 date() 函數會因為預設時區的問題而出現錯誤。
所以網頁 php 要加上一行(date_default_timezone_set("Asia/Taipei");)來解決。

星期一, 4月 16, 2012

MSSQL SQL-Injection 時的資料復原

單一Table單一欄位的復原法:

UPDATE tableName SET columnName = REPLACE ( convert(varchar(8000), columnName ) , '要被取代的字串', '取代的字串' ) WHERE columnName LIKE '%要被取代的字串%' ;


改寫為 Stored Procedure (只使用單引號):
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE procedureName
AS
BEGIN
DECLARE cursor_T CURSOR FOR
(SELECT obj.name AS tableName,
clum.name AS colName
FROM dbo.sysobjects AS obj INNER JOIN
dbo.syscolumns AS clum ON obj.id = clum.id INNER JOIN
dbo.systypes AS sType ON clum.xusertype = sType.xusertype
WHERE (obj.xtype = 'U') AND (clum.xusertype IN (35, 99, 167, 231))
)
DECLARE @tableName nvarchar(255),
@col nvarchar(255)
OPEN cursor_T
FETCH NEXT FROM cursor_T INTO @tableName,@col
WHILE (@@FETCH_STATUS = 0)
BEGIN EXEC('UPDATE ' + @tableName +
' SET ' + @col + ' = REPLACE( convert(varchar(8000),' + @col + ') , ''要被取代的字串'', ''取代的字串'' )
WHERE ' + @col + ' LIKE ''%要被取代的字串%''')
FETCH NEXT FROM cursor_T INTO @tableName,@col
END
CLOSE cursor_T
DEALLOCATE cursor_T
END


Stored Procedure 執行指令:

exec procedureName




星期五, 3月 16, 2012

用 yum 將 CentOS 5.x 的 php 5.1.x 升級到 5.3.x

做更新動作之前請先備份。
網管千古名言:【沒事多備份,多備份沒事。】
一、下載 yum 更新資料檔並安裝之。
#wget http://repo.webtatic.com/yum/centos/5/latest.rpm
#rpm -Uvh latest.rpm

二、編輯 yum 更新索引檔內容。
#vi /etc/yum.repos.d/webtatic.repo
將每個段落都加上一行 priority=1(如果沒加上這行,yum 更新時就只會依原 yum 內建的更新索引檔為主。)

三、開始執行 yum 更新 php。
#yum --enablerepo=webtatic update php
 
四、重新啟動 apache。
#/etc/rc.d/init.d/httpd restart
 
五、查詢 php 版本是否正確更新。
#php -v
 
備註:
發現當由 CentOS 內建的php 5.1.x 升級到 5.3.x 後,php 的 date() 函數會因為預設時區的問題而出現錯誤。
建議在網頁 php 主 include 檔中加上一行(date_default_timezone_set("Asia/Taipei");)來解決。