当前位置: 首页 > 工具软件 > Altibase > 使用案例 >

Altibase常用命令和脚本

濮阳宏硕
2023-12-01

ALTIBASE常用命令和脚本

1.    一般应用命令... 1

1.1.     isql介绍... 1

1.2.     使用isql连接数据库... 2

1.3.     查看altibase数据库中所有的表... 2

1.4.     查看所有的sequence. 2

1.5.     查看表结构和索引、主键... 3

1.6.     创建主键... 3

1.7.     查询数据的前N条... 3

1.8.     修改表结构... 3

1.9.     退出altibase的iSQL. 3

1.10.       在shell脚本中使用isql命令... 4

1.11.       使用isql执行文件中的sql语句... 4

1.12.       导入导出数据... 4

1.13.       Perl中altibase的DBI的使用... 6

2.    管理类命令... 6

2.1.     查询当前占用或等待锁资源的操作... 6

2.2.     altibase锁的解锁办法... 7

2.3.     使用aexport进行数据备份和恢复... 7

2.4.     启停数据库使用server. 7

2.5.     连接会话查询... 7

2.6.     关闭session. 7

2.7.     查询SQL的执行时间... 8

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 toconnect

           -u  : Specify user name to connect

           -p  : Specify password of specifyuser name

           -port : Specify port number to communication

           -f  : Specify script file toprocess

           -o  : Specify file to save result

           -v  : Print command once more

           -silent : No display Copyright

 

1.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_NAME

  fromSYSTEM_.SYS_TABLES_ a, system_.SYS_COLUMNS_ b

 wherea.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 setDEFAULT 0);

 

使用SQL语句可以修改表结构,具体使用方法,请参考altibase官方文档,需要注意的是,在生产环境中,如果主备机开了复制,需要停复制,才可以修改表结构。

 

1.9. 退出altibase的iSQL

使用exit或quit退出。

1.10.  在shell脚本中使用isql命令

#!/usr/bin/sh

isql  -s127.0.0.1   -u ocs_rf   -p ocs_rf << EOF

select * from counter_tariff;

EOF

在我们平时连接altibase数据库时,需要输入一大段的字符串,才能成功连接到数据库,可以将命令写到脚本中,方便执行,假设用户名和密码相同,如下: isql.sh

#!/usr/bin/sh

if [ $# -lt 1 ]

then

        echo"USAGE: $0 DSN .."

        exit 1

fi

DSN=$1

shift

for param in $@

do

       paramlst="$paramlst $param"

done

isql  -s 127.0.0.1 -silent   -u $DSN  -p $DSN $paramlst

 

1.11.  使用isql执行文件中的sql语句

-bash-4.0$ cat ab.sql

select * from v$seq;

使用命令: isql -s 127.0.0.1 -uocs_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.fmt

iLoader> exit

shell> ls

employee.fmt

exp: iloaderformout -T COUNTER_TARIFF -f COUNTER_TARIFF.fmt -s 127.0.0.1  -u ocs_rf  -p ocs_rf

数据下载

iLoader> out -f employee.fmt -d employee.dat

DATE FORMAT : YYYY/MM/DD HH:MI:SS

..

Total 20 record download

DOWNLOAD: 56936

iLoader> exit

shell> ls

employee.dat employee.fmt

exp: iloader out -fCOUNTER_TARIFF.fmt -d COUNTER_TARIFF.dat -s 127.0.0.1  -u ocs_rf  -p ocs_rf

数据上传

iLoader> in -f employee.fmt -d employee.dat -modereplace

DATE FORMAT : YYYY/MM/DD HH:MI:SS

UPLOAD: 13880

Load Count : 20

Exp: iloader in -fCOUNTER_TARIFF.fmt -d COUNTER_TARIFF.dat -mode replace  -s 127.0.0.1 -u ocs_rf   -p ocs_rf

 

1.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位的perl

perl 脚本连接字串如:

 

#!/usr/bin/perl

 

use DBI();

my $dbh = DBI->connect("dbi:altibase:DSN=127.0.0.1;UID=SYS;PWD=MANAGER;CONNTYPE=1;NLS_USE=US7ASCII;PORT_NO=20300", "", "", {'RaiseError' => 1, 'AutoCommit' =

> 0});

2.  管理类命令

2.1.查询当前占用或等待锁资源的操作

1、等待锁的query (就是查询哪些操作正等待锁资源被hold住)

select a.comm_name , a.client_pid , b.query

 from v$session a , v$LOCK_STATEMENT b, v$lock_wait c

 where a.id = b.session_id

  and b.TX_ID = c.TRANS_ID;

2 占用锁的query (就是查询哪些操作正占用着锁资源)

select a.comm_name , a.client_pid , b.query

 from v$session a , v$LOCK_STATEMENT b, v$lock_wait c

 where a.id = b.session_id

  and b.TX_ID = c.WAIT_FOR_TRANS_ID;

3 查询当前的更新锁

select a.comm_name , a.client_pid , b.queryfrom v$session a , v$LOCK_STATEMENT b, v$lock c

where a.id = b.session_id

and b.TX_ID = c.TRANS_ID

and c.LOCK_DESC = 'IX_LOCK';

 

2.2. altibase锁的解锁办法

通过在锁视图V$LOCK_STATEMENT和V$LOCK中查到相应的锁信息,再通过如下命令解锁。

alter database mydbsession close 3606;

 

2.3. 使用aexport进行数据备份和恢复

在命令行运行aexport命令,生成相应的shell脚本

run_il_out.sh为导出数据的脚本

run_il_in.sh 为导入数据的脚本

run_is.sh 为建立用户的脚本

run_is_index.sh 为建立索引的脚本

run_is_fk.sh 为建立外键的脚本

注意:在使用后面四个脚本时,请注意修改相应的IP地址等等,防止在源数据库上执行了相应的脚本,破坏源数据库的数据。

 

2.4. 启停数据库使用server

实际为一个shell脚本,调用数据库命令实现。

    Server start 开始数据库

Server stop 正常结束数据库

 

2.5.连接会话查询

set linesize 150

set colsize 50

select comm_name , db_username , count(*)from v$session group by comm_name , db_username;

 

2.6. 关闭session

sysdba用户才有权限,普通用户没有该权限。

alter database mydb session closesession_id;

 

2.7. 查询SQL的执行时间

例如查看当前已执行SQL中最慢的前10位:

select

   session_id,

   execute_flag,

   execute_time/1000||' ms' exec_msec,

   fetch_time/1000||' ms' fetch_msec,

   rpad(substr(query,1,80),80,' ') qry

   --, query

from v$statement

where execute_flag = 1

order by execute_time desc, execute_flagdesc

limit 10;

 

2.8. 查询表占用空间大小

select

   --b.user_name||'.'||a.table_name table_name,

   a.table_name table_name,

   (c.FIXED_ALLOC_MEM+c.VAR_ALLOC_MEM) allocsize,

   (c.FIXED_USED_MEM+c.VAR_USED_MEM) usedsize,

   round((c.FIXED_USED_MEM+c.VAR_USED_MEM)*100/(c.FIXED_ALLOC_MEM+c.VAR_ALLOC_MEM),2)

   efficency

from system_.sys_tables_ a,

   system_.sys_users_ b,

   v$memtbl_info c

where a.user_id = b.user_id

   and a.table_oid = c.table_oid

   and a.tbs_id=0

   and a.user_id != 1

   and a.table_type='T'

order by allocsize desc, usedsize desc;

 

如需了解更多内容,请参考altibase的详细文档。

 

修改记录:

序号

修改内容描述

更新时间

修改人

1

初稿

2010-1-20

尹涛

2

增加可能用到的查询死锁以及与查询性能相关的部分sql语句

2010-1-25

莫高习

 

 类似资料: