/*
*标 题: Sybase IQ for Data Warehouse 培训总结(三)
*作 者: xuwedo
*文章属性: 原创
*时 间: 2007-03-11
*来 源: http://blog.csdn.net/xuwedo2003/
*链 接: http://blog.csdn.net/xuwedo2003/
* Copyright (c) 2007
* All rights reserved.
* 如有转载,请注明作者及本信息
* 文件名称:
* 文件标识:
* 摘 要: Sybase IQ, Data Warehouse
* 开始时间: 2007-03-11
*
* 当前版本: 1.0
* 作 者: xuwedo2001@sohu.com
* 相关信息:
* 完成日期: 2007年3月11日
*/
正文:
(一)
从文件中加载数据
1
、有三种方法向IQ table中加入数据:
(1)、用LOAD TABLE命令,从命名管道或文件中将数据导入表中。(速度是最快的)
(2)、用INSERT FROM SELECT 命令,将其他表中的数据加入当前表中。
(3)、用INSERT VALUES命令,“手动”地向表中加入数据。
2
、关于数据加载和锁:
(1)、当一个用户正在装载、插入或修改一个表中的数据时,其他用户可以对该表进行查询操作。(原理是:版本控制)
(2)、多个用户可以并发地执行DML语句,但必须针对不同的表。
(3)、如果多个用户试图修改同一个表,则第一个用户获得DML锁。
3
、从文件中装入数据的例子:
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
、删除表中的数据有三种方法:
(1)、用DELETE 命令:
DELETE FROM customer
DELETE FROM customer
WHERE customer_id IN( SELECT cutomer_id FROM customer
WHERE postno =
‘
250001
’
)
(2)、用DROP TABLE命令
(3)、用TRUNCATE TABLE命令
5
、删除后再增加数据有两种方式:
(1)、插入到删除后留下的空隙中。
(2)、追加到现有表的最后一行后面。(速度再快一些,但要更大的存储空间)
由APPEND_LOAD=‘ON’来控制。
6
、UPDATE 命令:
UPDATE employee
SET dept_id = 400
WHERE emp_id = 111
(二)
用INSERT语句加载数据
例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
因为本章节均为图形化操作,比较简单。略
(四)
用户的管理和安全
1.
系统预置的两个组:SYS和PUBLIC组。
想知道系统中共有多少组,用以下命令:
SELECT * FROM Sys.sysgroups
想知道系统中共有多少组,用以下命令:
SELECT * FROM Sys.sysgroups
2.
系统管理员的用户名:DBA,默认密码为:SQL
3.
向系统中加入用户有三种方法:
(1)、“GRANT CONNECT”命令,
GRANT CONNECT TO userid [, … ]
INDENTIFIED BY password [, … ]
注:更改用户的密码也是上面的命令,这可能导致管理员无意识地改变现有用户的密码,而其目的是增加用户。此操作没有警告提示。
(2)、Sybase Central 向导,图形化操作。
(3)、sp_iqaddlogin存储过程,
(1)、“GRANT CONNECT”命令,
GRANT CONNECT TO userid [, … ]
INDENTIFIED BY password [, … ]
注:更改用户的密码也是上面的命令,这可能导致管理员无意识地改变现有用户的密码,而其目的是增加用户。此操作没有警告提示。
(2)、Sybase Central 向导,图形化操作。
(3)、sp_iqaddlogin存储过程,
4.
与系统中用户管理有关的两个系统表:
IQ_User_Login_Info_Table和IQ_System_Login_Info_Table
如果想查看该系统表中的内容,则可以用以下语句:
SELECT * FROM IQ_User_Login_Info_Table
IQ_User_Login_Info_Table和IQ_System_Login_Info_Table
如果想查看该系统表中的内容,则可以用以下语句:
SELECT * FROM IQ_User_Login_Info_Table
5.
与管理用户有关的几个存储过程:
sp_iqmodifyadmin
sp_iqaddlogin
sp_iqprocess_login
sp_iqdroplogin
sp_iqmodifyadmin
sp_iqaddlogin
sp_iqprocess_login
sp_iqdroplogin
sp_iqlistexpiredpasswords
sp_iqlistlockedusers
sp_iqlistpasswordexpirations
sp_iqlocklogin
sp_iqmodifylogin
sp_iqpassword
sp_iqlistlockedusers
sp_iqlistpasswordexpirations
sp_iqlocklogin
sp_iqmodifylogin
sp_iqpassword
(五)
事务管理和锁
1
、与事务有关的几个命令:
(1)、开始一个事务:
BEGIN TRANSACTION [transaction_name]
BEGIN TRANSACTION [transaction_name]
(2)、提交一个事务:
COMMIT [work]
COMMIT [work]
(3)、回滚一个事务:
ROLLBACK [work]
ROLLBACK [work]
(4)、在当前事务中建立一个保存点:
SAVEPOINT [savepoint_name]
SAVEPOINT [savepoint_name]
(5)、回滚到一个保存点:
ROLLBACK TO SAVEPOINT [savepoint_name]
ROLLBACK TO SAVEPOINT [savepoint_name]
(6)、将改变保存到磁盘上:
CHECKPOINT
CHECKPOINT
(7)、执行完一条语句后,自动提交:
WITH CHECKPOINT ON
WITH CHECKPOINT ON
(六)
监控和问题解决
1、
可以在Sybase Central中监控用户
2、
存储过程:sp_iqconnection可以显示用户连接的信息。包括connection_handle,User_ID,最后的请求的时间,最后IQ命令时间等。
3、
用drop connection connection_handle可以让服务器主动断开与某用户连接。
4、
用sp_iqcontext来显示服务器上执行SQL语句的情况,包括哪个用户正在执行哪条SQL语句,是否提交等信息。
5、
将服务器执行SQL情况写入日志:
方法1:
-zr SQL ;表明要收集SQL语句信息
-zo c://sqllog.txt ;重定向请求级别信息到文件中
方法2:
方法1:
-zr SQL ;表明要收集SQL语句信息
-zo c://sqllog.txt ;重定向请求级别信息到文件中
方法2:
call
sa_server_option (
‘request_level_logging’ , ‘SQL’);
call sa_server_option(
call sa_server_option(
‘
request_level_log_file
’
,
’
sqllog.txt
’
);
关闭将SQL信息写入日志文件中:
call
sa_server_option (
‘request_level_logging’ , ‘’);
call sa_server_option(
call sa_server_option(
‘
request_level_log_file
’
,NONE);
6、
用sp_iqtransaction查看系统中事务的相关信息。
7、
错误处理:
(1)、UNIX 下有一脚本:getiqinfo.sh
(2)、Windows下为getiqinfo.bat
来得到服务器的相关信息,然后将生成的报告发送给Sybase即可。
(七)
管理DBspace 和索引
1、
改变DBSPACE的模式或改变DBSPACE的大小:
ALTER DBSPACE
2、
卸载一个空的DBSPACE:
DROP DBSPACE
3、
报告DBSPACE的一般信息和模式:
Sp_iqdbspace
4、
报告DBSPACE中的OBJECTS和它们的大小信息。
Sp_dbspaceinfo
5、
将一个DBSPACE中的OBJECTS移动到另一个DBSPACE中:
Sp_iqrelocate
6、
Sp_iqrebuildindex
存储过程重新建立某列的索引。
7、
管理DBspace 和索引的操作均可以在Sybase Central中操作,比较简单。
(八)
备份和恢复
1
、Sybase IQ server有三种备份类型:
(1)、完全备份
(2)、增量备份
(3)、完全备份的基础上增量备份
注:增量备份和完全备份的基础上增量备份都会对Catalog Store 进行完全备份。
默认情况下为完全备份。
2
、Sybase IQ server的顺序:
(1)、Catalog Store
(2)、Transaction log File
(3)、IQ Store
3
、当IQ server正在备份时:
(1)、默认情况下操作员必须在现场,挂持接备份介质。
(2)、操作员可以不在场,但必须正确地估算出备份的数据量大小,并且在安装备份设备时,要选“高级”安装方可。
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不支持裸设备
5
、系统级别的备份:
如果IQ server运行时进行系统级别的备份,则会导致服务崩溃或丢失数据。所以,必须确定IQ server是停止状态时,方可进行系统级别备份。
6
、备份的恢复:
(1)、必须连接到utility_db数据库后才可以进行恢复操作,并且在恢复数据时不能有用户连接到数据库。
(2)、如果有完全恢复,Catalog Store 和Transaction Log(即.db 和.log文件)必须从目标文件夹下删除。
(3)、如果为增量恢复,Catalog Store 和Transaction Log(即.db 和.log文件)必须存在于目标文件夹中。
7
、恢复的命令:
RESTORE DATABASE
‘c://newdir//mydb.db
’
FROM
‘
c://asiq//backup1’
FROM
‘
c://asiq//backup2’
在进行恢复时,必须注意恢复的顺序和备份时的顺序完全一致。
8
、数据库备份后,配置文件和日志文件是没有被备份的,所以如果恢复时要单独对这两种文件进行恢复。配置文件可以直接拷贝即可,但日志文件是不能用原来的.log文件的。
如果恢复到原来的目录中,则不用新建.log文件。如果没有恢复到原目录,则必须用dblog工具手动生成.log文件。
如果恢复到原来的目录中,则不用新建.log文件。如果没有恢复到原目录,则必须用dblog工具手动生成.log文件。
9
、dblog工具的命令语法:
Dblog [option] database_file
Option
:
-t log-name
,指定事务log文件名。
-m mirror-name
,设置事务日志镜象名。
-r
,停止事务日志的镜象。
-o
,输出日志信息到文件。
-q
,安静模式,不打印信息。
例:dblog
–
t demolog.log asiqdemo
(九)
Sybase IQ
的多元架构
(十)
创建一个多元架构的数据库
在Sybase Central中完成。略。
(全文完)