作 者: xuwedo
(一) 從文件中加載數(shù)據(jù)
1、有三種方法向IQ table中加入數(shù)據(jù):
(1)、用LOAD TABLE命令,從命名管道或文件中將數(shù)據(jù)導(dǎo)入表中。(速度是最快的)
(2)、用INSERT FROM SELECT 命令,將其他表中的數(shù)據(jù)加入當(dāng)前表中。
(3)、用INSERT VALUES命令,“手動(dòng)”地向表中加入數(shù)據(jù)。
2、關(guān)于數(shù)據(jù)加載和鎖:
(1)、當(dāng)一個(gè)用戶正在裝載、插入或修改一個(gè)表中的數(shù)據(jù)時(shí),其他用戶可以對(duì)該表進(jìn)行查詢操作。(原理是:版本控制)
(2)、多個(gè)用戶可以并發(fā)地執(zhí)行DML語(yǔ)句,但必須針對(duì)不同的表。
(3)、如果多個(gè)用戶試圖修改同一個(gè)表,則第一個(gè)用戶獲得DML鎖。
3、從文件中裝入數(shù)據(jù)的例子:
LOAD TABLE customer(customer_id ‘|’
,cust_type ‘|’
,organization ‘|’
,contact_name ‘|’
,contact_phone ‘|’
,address ‘|’
,city ‘|’
,country ‘\x0a’)
FROM ‘/work/data/cutomer1.dat’
ESCAPES OFF
QUOTES OFF;
4、刪除表中的數(shù)據(jù)有三種方法:
(1)、用DELETE 命令:
DELETE FROM customer
WHERE customer_id IN( SELECT cutomer_id FROM customer
WHERE postno = ‘250001’)
(2)、用DROP TABLE命令
(3)、用TRUNCATE TABLE命令
5、刪除后再增加數(shù)據(jù)有兩種方式:
(1)、插入到刪除后留下的空隙中。
(2)、追加到現(xiàn)有表的最后一行后面。(速度再快一些,但要更大的存儲(chǔ)空間)
由APPEND_LOAD=‘ON’來(lái)控制。
6、UPDATE 命令:
UPDATE employee
SET dept_id = 400
WHERE emp_id = 111
(二) 用INSERT語(yǔ)句加載數(shù)據(jù)
例1:
INSERT INTO dept_head(name,dept)
NOTIFY 20
SELECT emp_fname ||‘ ’||emp_lname AS name
,dept_name
FROM employee JOIN department
ON emp_id = dept_head_id;
commit
例2:
INSERT INTO lineitem(shipdate,orderkey)
LOCATION‘servername.dbname’
PACKETSIZE 512
{SELECT l_shipdate,l_orderkey FROM lineitem};
commit
(三) 使用Sybase IQ
因?yàn)楸菊鹿?jié)均為圖形化操作,比較簡(jiǎn)單。略
(四) 用戶的管理和安全
1. 系統(tǒng)預(yù)置的兩個(gè)組:SYS和PUBLIC組。
想知道系統(tǒng)中共有多少組,用以下命令:
SELECT * FROM Sys.sysgroups
2. 系統(tǒng)管理員的用戶名:DBA,默認(rèn)密碼為:SQL
3. 向系統(tǒng)中加入用戶有三種方法:
(1)、“GRANT CONNECT”命令,
GRANT CONNECT TO userid [,…]
INDENTIFIED BY password [,…]
注:更改用戶的密碼也是上面的命令,這可能導(dǎo)致管理員無(wú)意識(shí)地改變現(xiàn)有用戶的密碼,而其目的是增加用戶。此操作沒(méi)有警告提示。
(2)、Sybase Central 向?qū)?,圖形化操作。
(3)、sp_iqaddlogin存儲(chǔ)過(guò)程,
4. 與系統(tǒng)中用戶管理有關(guān)的兩個(gè)系統(tǒng)表:
IQ_User_Login_Info_Table和IQ_System_Login_Info_Table
如果想查看該系統(tǒng)表中的內(nèi)容,則可以用以下語(yǔ)句:
SELECT * FROM IQ_User_Login_Info_Table
5. 與管理用戶有關(guān)的幾個(gè)存儲(chǔ)過(guò)程:
sp_iqmodifyadmin
sp_iqaddlogin
sp_iqprocess_login
sp_iqdroplogin
sp_iqlistexpiredpasswords
sp_iqlistlockedusers
sp_iqlistpasswordexpirations
sp_iqlocklogin
sp_iqmodifylogin
sp_iqpassword
(五) 事務(wù)管理和鎖
1、與事務(wù)有關(guān)的幾個(gè)命令:
(1)、開(kāi)始一個(gè)事務(wù):
BEGIN TRANSACTION [transaction_name]
(2)、提交一個(gè)事務(wù):
COMMIT [work]
(3)、回滾一個(gè)事務(wù):
ROLLBACK [work]
(4)、在當(dāng)前事務(wù)中建立一個(gè)保存點(diǎn):
SAVEPOINT [savepoint_name]
(5)、回滾到一個(gè)保存點(diǎn):
ROLLBACK TO SAVEPOINT [savepoint_name]
(6)、將改變保存到磁盤上:
CHECKPOINT
(7)、執(zhí)行完一條語(yǔ)句后,自動(dòng)提交:
WITH CHECKPOINT ON
(六) 監(jiān)控和問(wèn)題解決
1、 可以在Sybase Central中監(jiān)控用戶
2、 存儲(chǔ)過(guò)程:sp_iqconnection可以顯示用戶連接的信息。包括connection_handle,User_ID,最后的請(qǐng)求的時(shí)間,最后IQ命令時(shí)間等。
3、 用drop connection connection_handle可以讓服務(wù)器主動(dòng)斷開(kāi)與某用戶連接。
4、 用sp_iqcontext來(lái)顯示服務(wù)器上執(zhí)行SQL語(yǔ)句的情況,包括哪個(gè)用戶正在執(zhí)行哪條SQL語(yǔ)句,是否提交等信息。
5、 將服務(wù)器執(zhí)行SQL情況寫入日志:
方法1:
-zr SQL ;表明要收集SQL語(yǔ)句信息
-zo c:\\sqllog.txt ;重定向請(qǐng)求級(jí)別信息到文件中
方法2:
call sa_server_option (‘request_level_logging’ , ‘SQL’);
call sa_server_option(
‘ request_level_log_file ’,’sqllog.txt’);
關(guān)閉將SQL信息寫入日志文件中:
call sa_server_option (‘request_level_logging’ , ‘’);
call sa_server_option(
‘ request_level_log_file ’,NONE);
6、 用sp_iqtransaction查看系統(tǒng)中事務(wù)的相關(guān)信息。
7、 錯(cuò)誤處理:
(1)、UNIX 下有一腳本:getiqinfo.sh
(2)、Windows下為getiqinfo.bat
來(lái)得到服務(wù)器的相關(guān)信息,然后將生成的報(bào)告發(fā)送給Sybase即可。
(七) 管理DBspace 和索引
1、 改變DBSPACE的模式或改變DBSPACE的大小:
ALTER DBSPACE
2、 卸載一個(gè)空的DBSPACE:
DROP DBSPACE
3、 報(bào)告DBSPACE的一般信息和模式:
Sp_iqdbspace
4、 報(bào)告DBSPACE中的OBJECTS和它們的大小信息。
Sp_dbspaceinfo
5、 將一個(gè)DBSPACE中的OBJECTS移動(dòng)到另一個(gè)DBSPACE中:
Sp_iqrelocate
6、 Sp_iqrebuildindex存儲(chǔ)過(guò)程重新建立某列的索引。
7、 管理DBspace 和索引的操作均可以在Sybase Central中操作,比較簡(jiǎn)單。
(八) 備份和恢復(fù)
1、Sybase IQ server有三種備份類型:
(1)、完全備份
(2)、增量備份
(3)、完全備份的基礎(chǔ)上增量備份
注:增量備份和完全備份的基礎(chǔ)上增量備份都會(huì)對(duì)Catalog Store 進(jìn)行完全備份。
默認(rèn)情況下為完全備份。
2、Sybase IQ server的順序:
(1)、Catalog Store
(2)、Transaction log File
(3)、IQ Store
3、當(dāng)IQ server正在備份時(shí):
(1)、默認(rèn)情況下操作員必須在現(xiàn)場(chǎng),掛持接備份介質(zhì)。
(2)、操作員可以不在場(chǎng),但必須正確地估算出備份的數(shù)據(jù)量大小,并且在安裝備份設(shè)備時(shí),要選“高級(jí)”安裝方可。
4、備份命令:
BACKUP DATABASE [CRC ON|OFF]
[Attended ON|OFF]
[BLOCK FACTOR integer]
[{FULL|INCREMENTAL|INCREMENTAL SINCE FULL}]
TO ‘archive_device’ [SIZE # of KB integer]
例子:
BACKUP DATABASE TO ‘dev/rmt/0n’
注:BACKUP不支持裸設(shè)備
5、系統(tǒng)級(jí)別的備份:
如果IQ server運(yùn)行時(shí)進(jìn)行系統(tǒng)級(jí)別的備份,則會(huì)導(dǎo)致服務(wù)崩潰或丟失數(shù)據(jù)。所以,必須確定IQ server是停止?fàn)顟B(tài)時(shí),方可進(jìn)行系統(tǒng)級(jí)別備份。
6、備份的恢復(fù):
(1)、必須連接到utility_db數(shù)據(jù)庫(kù)后才可以進(jìn)行恢復(fù)操作,并且在恢復(fù)數(shù)據(jù)時(shí)不能有用戶連接到數(shù)據(jù)庫(kù)。
(2)、如果有完全恢復(fù),Catalog Store 和Transaction Log(即.db 和.log文件)必須從目標(biāo)文件夾下刪除。
(3)、如果為增量恢復(fù),Catalog Store 和Transaction Log(即.db 和.log文件)必須存在于目標(biāo)文件夾中。
7、恢復(fù)的命令:
RESTORE DATABASE ‘c:\\newdir\\mydb.db’
FROM ‘c:\\asiq\\backup1’
FROM ‘c:\\asiq\\backup2’
在進(jìn)行恢復(fù)時(shí),必須注意恢復(fù)的順序和備份時(shí)的順序完全一致。
8、數(shù)據(jù)庫(kù)備份后,配置文件和日志文件是沒(méi)有被備份的,所以如果恢復(fù)時(shí)要單獨(dú)對(duì)這兩種文件進(jìn)行恢復(fù)。配置文件可以直接拷貝即可,但日志文件是不能用原來(lái)的.log文件的。
如果恢復(fù)到原來(lái)的目錄中,則不用新建.log文件。如果沒(méi)有恢復(fù)到原目錄,則必須用dblog工具手動(dòng)生成.log文件。
9、dblog工具的命令語(yǔ)法:
Dblog [option] database_file
Option:
-t log-name,指定事務(wù)log文件名。
-m mirror-name,設(shè)置事務(wù)日志鏡象名。
-r,停止事務(wù)日志的鏡象。
-o,輸出日志信息到文件。
-q,安靜模式,不打印信息。
例:dblog –t demolog.log asiqdemo
(九) Sybase IQ的多元架構(gòu)
(十) 創(chuàng)建一個(gè)多元架構(gòu)的數(shù)據(jù)庫(kù)
在Sybase Central中完成。略。