一个要努力的人
能力说明:
了解变量作用域、Java类的结构,能够创建带main方法可执行的java应用,从命令行运行java程序;能够使用Java基本数据类型、运算符和控制结构、数组、循环结构书写和运行简单的Java程序。
暂时未有相关云产品技术能力~
阿里云技能认证
详细说明pgbouncer install
postgres-xc 安装
linux vnc install
Oracle dba是指拥有sysdab,sysoper权限登录的用户默认为sys,system Sysdba > sys > root Sysoper > system ...
linux kettle greenplum 远程 两个参考文件中发现可以在etl服务器中加载gpload文件,通过文件将数据传送到远程的gp服务器中。
greenplum 分析函数 开窗函数(每一行返回结果)区分于聚合函数,聚合函数统计的是汇总后的结果,没有明细数据,如果统既要计结果又要明细,开窗函数就比较简单 tutorial=> select * fr...
问题: 11-30,压缩程度不同,压缩后的空间大小是否空间空间不同 11-30,压缩后,空间与压缩前的空间大小是否不同 不同的压缩率,数据空间一样 ...
单表查询 1)seq scan 顺序扫描 数据文件从头读到尾,greenplum中压缩表尤为突出 2)index scan:索引扫描,对于查询小数据量而言,速度很快 3)bitmap hea...
假设需要两张表A,B关联,其中A表中关联键不是分布键,那么对于a表而言就会发生如下两种情况 1 广播 2 重分布 分布式的关联有两种 单库关...
greenplum 外部表 第一次听到外部表,后来查了一下,oracle也有外部表(孤陋寡闻) greenplum 外部表:一张表的数据指向数据库之外的数据文件 外部表需要指定gpfdist的ip和端口,还有详细的目录地址,其中文件名支持通配符。
greenplum 分区表,索引 greenplum 分区按照类型可以分为 #列表分表 create table gh_par_list( id1 integer, id2 varchar(10)) distribute...
gp表空间依赖于filespace,filespace需要自己首先设置文件路径 首先为其创建文件路径 master,slave1,slave2.
gh 加油 最近公司在做项目时,使用oracle采集底层数据,使用greenplum分析加工数据,数据交换使用的是kettle。
gh 加油 greenplum install for linux 1、实验环境 硬件环境 ORACLE virtualbox(5.
操作系统: rhel-server-6.4-x86_64-dvd.iso 数据库版本:linuxamd64_12c_database_1of2.zip;linuxamd64_12c_database_2of2.
oracle oracle 8.0中没有行移动功能,在这个版本中,必须先删除该行,再重新将其插入 测试环境oracle 11.
背景: 数据库建设到现在,一致在做逻辑备份,考虑到后期维护人员现场情况,建议最近就将归档日志打开 过程 因为之前没有在rac开启过归档,现在在虚拟rac下测试下如果归档路径放到某个节点,或者放到存储中...
oracle 11g 增加了新的分区类型,总结一下目前之前的分区表 区间分区 散列分区 列表分区 区间分区: create table gh_range_example( id varchar2(100), range_date date not n...
背景: 同事不小心创建了一个ts_xx_temp物理文件,导致其他同事经常问我这个是否可以作为临时表空间,为了不引起歧义,删除表空间及物理文件 过程 在测试环境中 创...
背景: 数据较多,切考虑到后期维护,希望能够自动添加分区 过程 间隔分区 oracle 11g 新的特性 CREATE T...
背景: 用户将一批数据通过ftp的方式提供给我方,我方需要按照数据的不同类型抽取到不同业务表中。 思路: 通过ftp登陆到对方文件库中,将对方的文件名称拷贝过来 与我...
ORA-30926: 无法在源表中获得一组稳定的行 同时要求在一张表中添加一个字段,由于数据量较大,想使用merge into update的方式将数据 meger into xxx1 t1 using(select * from xxx2 )t2 on(t1.
数据库本身可以访问,但是在本机却是如下状态,11g都是这样子吗? 参考网页文档http://blog.itpub.
sqlite 本身没有太多研究,因此总结可能会有问题,希望大家能够提出错误,并加以修改。 背景: 用户需要的数据存放到sqlite数据库文件,拷贝数据库文件,安装客户端可以访问具体数据(oracle应该不可以) ...
背景: 用户在自己的电脑上做了一台数据库,将下载的数据文件全部存入到数据库中,之前给的方案是exp/imp导入导出的方式,发现比较慢。 思路: 使用exp/imp的方式,主要是在客户端就可以操作,但是中间还是需要...
windows版本的datastage某个方案被锁住,如何解锁? 解决方案 可以打开Datastage Adminitrator --> Project --> 选择JOB所在项目 -->command按钮 -->输入命令LIST.READU, 从该命令中找到被锁定的作业,以及其对应的编号; 再输入命令:UNLOCK USER “编号” ALL,其中编号是前个命令中你查询出来的。
20151024-1连接到ORACLE数据库(20151024) 解决方案: 之前R版本为64位,无法加载成功rJava,后面使用版本为32位,就可以了 网上查找资料发现:win64安装r64,可能无法安装rJava包,下载32为安装包测试通过,下面具体过程 > install.
WB空间大小分析 --表分析 select T.segment_name,T.tablespace_name,T.
问题描述: 第一:磁盘空间共有450g,数据表空间、索引所占空间为350g,临时表空间60g,undo自增长到35g,包括其他空间以及安装所用空间,磁盘空间还剩3g左右。
UNDO:oracle在undo段中记录的信息 测试一下dml语句undo生成率 思路如下 重启数据库并检查undo段的表空间 insert 10万条数据,查看数据插入前后的undo之变化。
两个会话互相持有对方想要的资源。 下面word就是我测试文档。 1.doc 查看双方会话所持有的事务 查看死锁的事务 create table S_T ( username VARCHAR...
测试表空间压缩是否可行 select t.*,t.TABLESPACE_NAME,(t.BYTES)/1024/1024/1024 from dba_data_files t; 之前表空间为2g; ...
确定表含义,字段含义,字典表,和他表是否有关联关系 确定对方数据总量,每日/周/月增长量 确定对方时间戳(递增序列戳) 小知识1:抽取对方1000~2000条数据将其存入新建的txt中,查看所占空间大小,通过等比约估表所...
查看数据库模式: SQL> connect /as sysdba Connected. SQL> select name,log_mode from v$database; N...
在建设zyk中,经常遇到大字段的数据。 1、建立和对方结构一致的临时表 create global temporary table sjzyk_clob_temp (id varchar2(10),clob_1 clob) on commit delete ...
oracle 测试rollbakce 存储空间是否发生变化 1、执行 create table sjzhk_objects as select * from all_objects t...
在自己的测试中发现
创建表是对于该表来说是最小的xid,那么relfrozenxid的值就是创建表的xid,不论后面更新插入删除,relfrozenxid都不会变,当age(relfrozenxid)>阀值时,就是强制调用vacuum freeze table;其实age()只是相对数,就是当前的事务id-表的最小事务id,随着当前事务id的增大,表被freeze后,relfrozenxid也会变大,只是中间的间隔变小。
而对于行来说,如果是vacuum table时,只要自己行的xid与最新的事务id相距不超过vacuum_freeze_min_age阀值时,就不会发生变化,如果超过这个阀值,行的xid就会变为freezeid(2),但是表的relfrozenxid取得的是除了2之外的最小值;就是有点难理解
不知道这样测试对不对,依据这个测试得出的结论不知道对不对
测试
osdba=# create table t_1(id int);
CREATE TABLE
osdba=# select pg_relation_filepath('t_1');
base/16384/16392
(1 row)
osdba=# dt+ t_1;
List of relations
Schema | Name | Type | Owner | Size | Description |
---|---|---|---|---|---|
public | t_1 | table | osdba | 0 bytes |
(1 row)
这是查看路径下的文件大小
[osdba@pg41 16384]$ ls -ls 16392 && ls -ls 1639
0 -rw-------. 1 osdba osdba 0 Feb 4 02:24 16392
0 -rw-------. 1 osdba osdba 0 Feb 4 02:24 16392
下面开启一个事务A:存入100数据并回滚
osdba=# begin;
BEGIN
osdba=# insert into t_1 (id) select generate_series(1,100);
INSERT 0 100
osdba=# rollback;
ROLLBACK
osdba=# dt+ t_1;
List of relations
Schema | Name | Type | Owner | Size | Description |
---|---|---|---|---|---|
public | t_1 | table | osdba | 16 kB |
(1 row)
在另外一个窗口发现
[osdba@pg41 16384]$ ls -ls 16392 && ls -ls 1639
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:27 16392
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:27 16392
下面开启一个事务B:存入100数据并提交
osdba=# begin;
BEGIN
osdba=# insert into t_1 (id) select generate_series(1,100);
INSERT 0 100
osdba=# commit;
COMMIT
osdba=# dt t_1;
List of relations
Schema | Name | Type | Owner |
---|---|---|---|
public | t_1 | table | osdba |
(1 row)
在另外一个窗口发现
[osdba@pg41 16384]$ ls -ls 16392 && ls -ls 1639
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:32 16392
16 -rw-------. 1 osdba osdba 16384 Feb 4 02:31 16392_fsm
0 -rw-------. 1 osdba osdba 0 Feb 4 02:31 16392_vm
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:32 16392
16 -rw-------. 1 osdba osdba 16384 Feb 4 02:31 16392_fsm
0 -rw-------. 1 osdba osdba 0 Feb 4 02:31 16392_vm
下面开启一次事务C:truncate table 后插入100数据,先不要提交或者回滚
osdba=# begin;
BEGIN
osdba=# truncate table t_1;
TRUNCATE TABLE
osdba=# insert into t_1 select generate_series(1,100);
INSERT 0 100
osdba=# select pg_relation_filepath('t_1');
base/16384/16395
(1 row)
在另外一个窗口发现
[osdba@pg41 16384]$ ls -ls 16392 && ls -ls 1639
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:32 16392
16 -rw-------. 1 osdba osdba 16384 Feb 4 02:31 16392_fsm
0 -rw-------. 1 osdba osdba 0 Feb 4 02:31 16392_vm
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:32 16392
16 -rw-------. 1 osdba osdba 16384 Feb 4 02:31 16392_fsm
0 -rw-------. 1 osdba osdba 0 Feb 4 02:31 16392_vm
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:33 16395
通过测试发现truncate table 后,其实并没有真正的删除该文件,而是重新创建一个文件,当新的数据入库时,存入的是新的文件,但是对于上层访问的表来说,表的结构等并没有发生变化。也就是可以理解为什么在postgres事务内,truncate table 这种ddl语句可以支持回滚的原因。
事务C回滚后,就会发现事务中的操作都会撤销。
osdba=# rollback;
ROLLBACK
$ ls -ls 16392 && ls -ls 1639
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:35 16392
16 -rw-------. 1 osdba osdba 16384 Feb 4 02:31 16392_fsm
0 -rw-------. 1 osdba osdba 0 Feb 4 02:31 16392_vm
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:35 16392
16 -rw-------. 1 osdba osdba 16384 Feb 4 02:31 16392_fsm
0 -rw-------. 1 osdba osdba 0 Feb 4 02:31 16392_vm
而新出现的文件名16395就被彻底删除
事务C提交后,文件16392存在一段时间后,之后被回收。
osdba=# begin;
BEGIN
osdba=# truncate table t_1;
TRUNCATE TABLE
osdba=# select pg_relation_filepath('t_1');
base/16384/16396
(1 row)
osdba=# insert into t_1 select generate_series(1,100);
INSERT 0 100
osdba=# commit;
COMMIT
[osdba@pg41 16384]$ ls -ls 16392 && ls -ls 1639
0 -rw-------. 1 osdba osdba 0 Feb 4 02:48 16392
0 -rw-------. 1 osdba osdba 0 Feb 4 02:48 16392
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:48 16396
事务C如果提交,就会发现16392其他后缀文件被删除,_fsm的文件记录每个数据块的空闲空间,_vm的文件用来标记数据块中是否存在需要清理的行。
在过一段时间再次执行查看文件名
[osdba@pg41 16384]$ ls -ls 1639*
8 -rw-------. 1 osdba osdba 8192 Feb 4 02:50 16396
只有一个t_1的最新文件16396存在。
那么现在新的问题出现了,在刚开始创建表时,空间大小是0kb,在文件里面也是,那么表的结构约束不占用空间吗?还是存在了其他地方?还有一个问题,数据存入到文件中,只是数据存入到文件,而表的字段是否也跟着数据一条一条存入到数据文件中呢?
猜测
1、bgwriter写入数据
2、wal切换时要求写入数据
3、wal切换通知checkpoint,要求将data buffer写入到磁盘中
4、data buffer不足,写入磁盘
这是上面的那一种情况呢?
在A点 做完基础备份后,分别在B点切换xlog日志,在C点切换xlog日志,现在恢复到B点后,在D点切换xlog日志,在E点切换xlog日志,现在模拟数据库被删除,从基础备份A点开始,恢复到D,E点失败,恢复到B点,C点成功,问题如下,是否在第一次恢复到B点时,就要做一个基础备份,才能恢复D点和E点?
问题应该是找到了recovery_target_timeline,重新恢复到B点时,timeline切换了,而recovery.conf文件默认的recovery_target_timeline='lastest',在文章中timeline写到The default behavior of recovery is to recover along the same timeline that was current when the base backup was taken. If you wish to recover into some child timeline (that is, you want to return to some state that was itself generated after a recovery attempt), you need to specify the target timeline ID in recovery.conf,就是说默认按照基础备份时间线来处理,我们就需要在recovery.conf的recovery_target_timeline来制定其他时间线。本次我的方案切换的时间刻度线是00000002,修改参数recovery_target_timeline = '00000002'
后面还有一种测试环境是standby数据库异常挂掉,但是主机正常,standby网络正常,当主机大批量入数据时,standby一直在做归档,之后启动standby的postgres数据库,是有归档日志恢复的
这个问题也有遇到,基本是大量的数据(千万级)量在同步,没有找到解决办法
是这样一个情况,我在部署安装greenplum时,gp封装了ssh,可以对着远程执行很多命令,包括时间统一,关闭机器,我就想着是否这一直接使用ssh这种方式来关闭机器等一系列可以同时执行的操作
当新的会话(事务)对其数据修改默认值重新变成0,对吗?请教一个问题,在配置日志文件时,其中syslog,stderr,其中一个标准错误,但是syslog是什么?如果我将log_statement设置为all,那么是否使用外部表或者copy方式插入数据,日志会变得更大?