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_;