您的位置:首页 > 其它

altibase常用语句

2015-11-26 10:57 204 查看
1. 给某个字段设置默认值

alter table 表名 alter column (字段名 set default '01');

2. 查看altibase各表使用空间,分配空间及使用率

SELECT C.USER_NAME,B.TABLE_NAME TABLE_NAME,

A.MEM_SLOT_SIZE SLOT_SIZE,

trunc((( FIXED_ALLOC_MEM+VAR_ALLOC_MEM) / 1024/1024),2) ALLOC_BYTE,

trunc((( FIXED_USED_MEM+VAR_USED_MEM) / 1024/1024),2) USED_SIZE ,

ROUND( (FIXED_USED_MEM+VAR_USED_MEM)/(FIXED_ALLOC_MEM+VAR_ALLOC_MEM)*100,2) EFFICIENCY

FROM V$MEMTBL_INFO A ,SYSTEM_.SYS_TABLES_ B, SYSTEM_.SYS_USERS_ C

WHERE A.TABLE_OID = B.TABLE_OID AND B.USER_ID = C.USER_ID

AND C.USER_ID != 1

AND B.TABLE_TYPE = 'T'

ORDER BY efficiency desc;

3. altibase表空间大小

SELECT c.user_name,B.TABLE_NAME, ( A.MEM_PAGE_CNT * 32 / 1024) + ( A.MEM_VAR_PAGE_CNT * 32 / 1024 ) AS ALLOC_SIZE

FROM V$MEMTBL_INFO A,

SYSTEM_.SYS_TABLES_ B,

SYSTEM_.SYS_USERS_ C

WHERE A.TABLE_OID = B.TABLE_OID

AND B.USER_ID = C.USER_ID

order by alloc_size desc ;

4. 查看所有序列的视图

select * from v$seq;

5. 查看所有表的视图

select * from system_.sys_tables_;

6. 查看所有用户的视图

select * from system_.sys_users_ ;

7. 启停altibase

su到altibase用户,直接在命令行输入 server start可以启动altibase

su到altibase用户,直接在命令行输入 server stop可以停止altibase

8. 会话相关

--查询应用程序执行的是哪些sql语句

select a.query, count(*) num from v$statement a

where a.session_id = 30926

group by a.query order by num desc;

--查看各个session有多少个连接

select count(*) num, session_id

from v$statement

group by session_id

order by num desc;

--查看altibase一共有多少个会话

select count(*) from v$session;

select count(*) num, comm_name, client_pid

from v$session

group by comm_name,client_pid

order by num desc

limit 5;

--查看连接数最多的5个进程

select a.session_id,b.comm_name, b.client_pid,count(*) num from v$statement a,v$session b

where a.session_id =b.id

group by a.session_id,b.comm_name, b.client_pid

order by num desc

limit 5;

9. 复制

启动复制:ALTER REPLICATION 复制名称 START ;

停止复制:ALTER REPLICATION 复制名称 STOP;

复制分为单向复制和双向复制。

如果A主机到B主机有复制,B主机到A主机也有复制,那么就是双向复制。

如果只有A主机到B主机的复制或者只有B主机到A主机的复制,那么就是单向复制。

双向复制,如果停止A主机到B主机复制,期间如果A主机数据有变化,那么B主机会丢失这些复制的数据。

反过来,如果停止B主机到A主机复制,期间如果B主机数据有变化,那么A主机也会丢失这些复制的数据。

单向复制,如果停止复制,那么对端会丢失复制停止期间的变化数据。

如果把A主机altibase停掉,那么B主机的复制会积压,等A主机altibase启动后会自动将积压的复制数据同步到A主机。

反过来,如果把B主机altibase停掉,那么A主机的复制会积压,等B主机altibase启动后会自动将积压的复制数据同步到B主机。

如果是需要更改复制表的表结构,那么需要停掉复制,双向复制,AB主机的复制都需要停掉,

然后更改表结构并启动复制,如果是双向复制,那么AB主机的复制都需要启动

如果期间A主机数据有变化,那么需要将B主机的复制表数据清空,然后在A主机使用如下命令将数据同步到B主机:

alter system set REPLICATION_SYNC_TUPLE_COUNT=800000;

ALTER REPLICATION 复制名称 SYNC PARALLEL 15;

alter system set DDL_LOCK_TIMEOUT=0;

如果停止复制期间AB主机数据都有变化,神仙也救不了你。。。

查看复制名

select * from system_.sys_replications_;

查看复制的是哪些表

select * from system_.sys_repl_items_;

查看同哪台主机进行复制

select * from system_.sys_repl_hosts_;

查看复制积压

select rep_gap from v$repgap;

删除复制

alter system set DDL_LOCK_TIMEOUT=10;

DROP REPLICATION 复制名称 ;

创建复制

create replication 复制名称

with '192.168.0.22' , 30301

from TEST.TEST1 to TEST.TEST1 ,

from TEST.TEST2 to TEST.TEST2 ,

from TEST.TEST3 to TEST.TEST3 ;

查看复制状态

select

replication_name,

decode(is_started,0,'复制暂停',1,'复制启动'),

item_count||'张表建立了复制',

conflict_resolution

from system_.sys_replications_;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: