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

altibase常用语句

微生毅
2023-12-01
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_;


 类似资料: