ALTIBASE常用命令和脚本1.一般应用命令 (1)1.1.isql介绍 (1)1.2.使用isql连接数据库 (2)1.3.查看altibase数据库中所有的表 (2)1.4.查看所有的sequence (2)1.5.查看表结构和索引、主键 (2)1.6.创建主键 (3)1.7.查询数据的前N条 (3)1.8.修改表结构 (3)1.9.退出altibase的iSQL (3)1.10.在shell脚本中使用isql命令 (3)1.11.使用isql执行文件中的sql语句 (4)1.12.导入导出数据 (4)1.13.Perl中altibase的DBI的使用 (5)2.管理类命令 (6)2.1.查询当前占用或等待锁资源的操作 (6)2.2.altibase锁的解锁办法 (6)2.3.使用aexport进行数据备份和恢复 (6)2.4.启停数据库使用server (7)2.5.连接会话查询 (7)2.6.关闭session (7)2.7.查询SQL的执行时间 (7)2.8.查询表占用空间大小 (8)1.一般应用命令1.1. isql介绍Altibase使用ISQL连接数据库,默认连接方式为TCP/IP,isql的使用帮助如下:cxyt@ocstest[/home/cxyt]> isql -h================================================================== ===ISQL HELP Screen================================================================== ===Usage : isql [-h][-s server_name] [-u user_name] [-p password][-port port_no] [-silent] [-v][-f in_file_name] [-o out_file_name] [-NLS_USE nls_name] -h : This screen-s : Specify server name to connect-u : Specify user name to connect-p : Specify password of specify user name-port : Specify port number to communication-f : Specify script file to process-o : Specify file to save result-v : Print command once more-silent : No display Copyright1.2. 使用isql连接数据库isql -s 127.0.0.1 -u ocs_rf -p ocs_rf使用isql连接数据库时,默认连接IP:127.0.0.1,还有一些默认选项,如端口号、字符集等,都是在配置文件中指定,配置文件一般存在于路径:$ALTIBASE_HOME/conf/altibase.properties在使用时,在个人profile中配置好所使用altibase数据库的环境变量即可。
1.3. 查看altibase数据库中所有的表select * from tab;使用此命令即可查到所登陆用户所有的表。
1.4. 查看所有的sequence查看altibase的sequence都是通过altibase的系统表查询Select * from v$seq;常用的视图可以通过如下sql查询:Select * from v$tab;1.5. 查看表结构和索引、主键通过如下SQL可以一并查出Desc tableName也可以从系统表查看表字段:select a.TABLE_NAME , b.COLUMN_NAMEfrom SYSTEM_.SYS_TABLES_ a, system_.SYS_COLUMNS_ bwhere a.TABLE_ID = b.TABLE_ID and a.TABLE_NAME='I_USER_RELATION';1.6. 创建主键alter table CSERVER_PARA add primary key(PARA_NAME) using index tablespace SYS_TBS_MEMORY; --指定表空间1.7. 查询数据的前N条Select * from tableName limit n; 查询tablename中前N条数据。
Select * from tableName limit m,n;查询tablename,从第M行开始查询N行。
1.8. 修改表结构alter table RAS_FREE_RESOURCE alter column (FREEZE_FREE_RES not null);alter table test alter column (c1 set DEFAULT 0);使用SQL语句可以修改表结构,具体使用方法,请参考altibase官方文档,需要注意的是,在生产环境中,如果主备机开了复制,需要停复制,才可以修改表结构。
1.9. 退出altibase的iSQL使用exit或quit退出。
1.10. 在shell脚本中使用isql命令#!/usr/bin/shisql -s 127.0.0.1 -u ocs_rf -p ocs_rf << EOFselect * from counter_tariff;EOF在我们平时连接altibase数据库时,需要输入一大段的字符串,才能成功连接到数据库,可以将命令写到脚本中,方便执行,假设用户名和密码相同,如下: isql.sh#!/usr/bin/shif [ $# -lt 1 ]thenecho "USAGE: $0 DSN .."exit 1fiDSN=$1shiftfor param in $@doparamlst="$paramlst $param"doneisql -s 127.0.0.1 -silent -u $DSN -p $DSN $paramlst1.11. 使用isql执行文件中的sql语句-bash-4.0$ cat ab.sqlselect * from v$seq;使用命令: isql -s 127.0.0.1 -u ocs_rf -p ocs_rf -f ab.sql 就可以执行,因此可以在文件中写入批量的SQL,用isql来批量执行。
1.12. 导入导出数据使用isql命令命令格式为: iloader { in | out | formout | structout | help }[-T table_name] [-d datafile][-f formatfile] [-F firstrow][-L lastrow] [-t field_term][-r row_term] [-U|-u login_id][-P|-p password] [-S|-s servername][-mode mode_type][-commit commit_unit] [-bad badfile] [-log logfile][-e enclosing][-array count][-replication true/false][-noexp]例子:表格格式文件的生成,可以生成表结构。
iLoader> formout -T employee -f employee.fmtiLoader> exitshell> lsemployee.fmtexp: iloader formout -T COUNTER_TARIFF -f COUNTER_TARIFF.fmt -s127.0.0.1 -u ocs_rf -p ocs_rf数据下载iLoader> out -f employee.fmt -d employee.datDATE FORMAT : YYYY/MM/DD HH:MI:SS..Total 20 record downloadDOWNLOAD: 56936iLoader> exitshell> lsemployee.dat employee.fmtexp: iloader out -f COUNTER_TARIFF.fmt -d COUNTER_TARIFF.dat -s127.0.0.1 -u ocs_rf -p ocs_rf数据上传iLoader> in -f employee.fmt -d employee.dat -mode replaceDATE FORMAT : YYYY/MM/DD HH:MI:SSUPLOAD: 13880Load Count : 20Exp: iloader in -f COUNTER_TARIFF.fmt -d COUNTER_TARIFF.dat -mode replace -s 127.0.0.1 -u ocs_rf -p ocs_rf1.13. Perl中altibase的DBI的使用使用方法如下:现在altibase-perl-dbd 只能支持32位,所以,需要用32位perl.dbd 需要32位的altibase 的odbc库:libodbccli_sl.so 已经将这个库copy到$ALTIBASE_HOME/lib/libodbccli_sl_32.so编译dbd 时指定perl, 和odbc库的位置。
已经链接到32位的perlperl 脚本连接字串如:#!/usr/bin/perluse DBI();my $dbh = DBI->connect("dbi:altibase:DSN=127.0.0.1;UID=SYS;PWD=MAN AGER;CONNTYPE=1;NLS_USE=US7ASCII;PORT_NO=20300", "", "", {'RaiseEr ror' => 1, 'AutoCommit' => 0});2.管理类命令2.1. 查询当前占用或等待锁资源的操作1、等待锁的query (就是查询哪些操作正等待锁资源被hold住)select m_name , a.client_pid , b.queryfrom v$session a , v$LOCK_STATEMENT b, v$lock_wait cwhere a.id = b.session_idand b.TX_ID = c.TRANS_ID;2 占用锁的query (就是查询哪些操作正占用着锁资源)select m_name , a.client_pid , b.queryfrom v$session a , v$LOCK_STATEMENT b, v$lock_wait cwhere a.id = b.session_idand b.TX_ID = c.WAIT_FOR_TRANS_ID;3 查询当前的更新锁select m_name , a.client_pid , b.query from v$session a , v$LOCK_STATEMENT b, v$lock cwhere a.id = b.session_idand b.TX_ID = c.TRANS_IDand c.LOCK_DESC = 'IX_LOCK';2.2. altibase锁的解锁办法通过在锁视图V$LOCK_STATEMENT和V$LOCK中查到相应的锁信息,再通过如下命令解锁。