2022-01-26 15:15:07    1    0    0
system_stats是Postgres的扩展,它提供了访问系统级统计信息的功能,这些统计信息可用于监控。它支持Linux、macOS和Windows。
git https://github.com/EnterpriseDB/system_stats.git

Linux and macOS:
    tar -zxvf system_stats-1.0.tar.gz
    cd system_stats-1.0
    PATH="/usr/local/pgsql/bin:$PATH" make USE_PGXS=1
    sudo PATH="/usr/local/pgsql/bin:$PATH" make install USE_PGXS=1
功能:
    提供以下函数来获取所有平台的系统级统计信息。
    pg_sys_os_info 此界面允许用户获取操作系统统计信息。
        名字
        版本
        主机名
        域名
        句柄计数
        进程计数
        线程计数
        建筑
        上次启动时间
        正常运行时间(以秒为单位)
        
    pg_sys_cpu_info 此接口允许用户获取 CPU 信息。
        供应商
        描述
        型号名称
        处理器类型
        逻辑处理器
        物理处理器
        内核数
        建筑
        时钟速度(以赫兹为单位)
        处理器类型
        中央处理器系列
        字节顺序
        L1d 高速缓存大小
        L1i 高速缓存大小
        L2 高速缓存大小
        L3 高速缓存大小
        
    pg_sys_cpu_usage_info 此接口允许用户获取 CPU 使用率信息。值是 CPU 在所有操作上花费的时间的百分比。
        处理用户模式正常进程所花费的时间百分比
        处理用户模式 niced 过程所花费的时间百分比
        在内核模式进程中花费的时间百分比
        在空闲模式下花费
2022-01-24 15:52:49    41    0    0
本次自定义安装在/home/pg12/pgsql下
*linux最好dash该bash,可见http://ivan.gold/blog/post/ivan/Debian%E7%B3%BBdash%E6%94%B9bash
1、pg源码下载
   https://www.postgresql.org/ftp/source/
   下载postgresql-12.7.tar.gz
   [root@centos home]# wget -c https://ftp.postgresql.org/pub/source/v12.7/postgresql-12.7.tar.gz
2、解压
   [root@centos home]# tar -zxvf postgresql-12.7.tar.gz
   [root@centos home]# cd postgresql-12.7
3、指定安装目录
   [root@centos postgresql-12.7]# ./configure --prefix=/home/pg12/pgsql
   [root@centos postgresql-12.7]# make
   [root@centos postgresql-12.7]# make install
   #在执行configure或make过程中,可能会有依赖错误,需要自己改正
   [root@centos postgresql-12.7]# cd /home/pg12/pgsql
   [root@centos pgsql]# ll
    rwxr-xr-x 2 postgres12 postgres12 4096 10月 27 10:04   bin
    drwxr-xr-x 6 postgres12 postgres12 4096 10月 27 10:04 include
    drwxr-xr-x 4 postgres12 postgres12 4096 10月 27 11:27 lib
    drwxr-xr-x 7 postgres12 postgres12 4096 10月 27 11:27 share
   #以上是主程序安装完毕,由于PostgreSQL是插件可扩展的,主程序安装完后,其实有好多实用功能是没有的,源码中自带了,但是没有安
2022-01-18 10:07:02    1    0    0
postgres=# help
You are using psql, the command-line interface to PostgreSQL.
Type:  \copyright  for distribution terms
       \h          for help with SQL commands
       \?          for help with psql commands
       \g          or terminate with semicolon to execute query
       \q          to quit
postgres=# \?
General
  \copyright             show PostgreSQL usage and distribution terms
  \crosstabview [COLUMNS] execute query and display results in crosstab
  \errverbose            show most recent error message at maximum verbosity
  \g [FILE] or ;         execute query (and send results to file or |pipe)
  \gdesc                 describe result of query, without executing it
  \gexec                 execute query, then execute each value in its result
  \gset [PREFIX]         execute query and store results in psql variables
  \gx [FILE]             as \g, but forces expanded output mode
  \q                     quit psql
  \watch [SEC]           execute query every SEC seconds
2021-11-04 17:20:41    21    1    0

1、数据库建表

        CREATE TABLE test_tab_jdbc_cursor (
            c_id varchar,
            c_name varchar,
            c_type varchar
        );
        INSERT INTO test_tab_jdbc_cursor VALUES ('c1', '1-name1', '1');
        INSERT INTO test_tab_jdbc_cursor VALUES ('c2', '1-name2', '1');
        INSERT INTO test_tab_jdbc_cursor VALUES ('c3', '1-name3', '1');
        INSERT INTO test_tab_jdbc_cursor VALUES ('c4', '2-name1', '2');
        INSERT INTO test_tab_jdbc_cursor VALUES ('c5', '2-name2', '2');
        INSERT INTO test_tab_jdbc_cursor VALUES ('c6', '2-name3', '2');

2、数据库建函数

CREATE OR REPLACE FUNCTION test_fun_jdbc_cursor(IN p_type varchar, INOUT re_code varchar, INOUT re_message varchar, INOUT re_cur refcursor)
RETURNS record
AS $BODY$
DECLARE v_r_code VARCHAR(30) DEFAULT 'PG-00000';
                 v_r_msg VARCHAR(2000) DEFAULT 'Success';
BEGIN
        open re_cur for SELECT c_id,c_name,c_type from test_tab_jdbc_cursor where c_type = p_type;
            re_code:=v_r_code;
            re_message:=

2021-10-27 15:17:52    52    0    0

书接上文:pg>编译安装-自定义安装目录 (ivan.gold)

1、下载

    https://pgxn.org/dist/orafce/

    这里使用最新版orafce-3.16.2.zip

2、安装

    root:

        1)解压

        unzip orafce-3.16.2.zip

        2)移动到pg安装目录的extension目录下

        mv -f orafce-3.16.2 /home/pg12/pgsql/share/extension

        3)这里使用postgres12用户编译,因此将pg安装目录属组给postgres12用户

        chown -R postgres12:postgres12 /home/pg12/pgsql

    su - postgres12

        cd /home/pg12/pgsql/share/extension/orafce-3.16.2

        make

        make install

        psql postgres postgres12

            postgres-# \dn

                   List of schemas

                  Name  |   Owner   

                --------+------------

                 public | postgres12

           

            postgres=# create extension orafce;

           

            postgres=# \dn

                      List of schemas

                     Name     |   Owner   

                --------------+------------

                 dbms_alert   | postgres12

                 dbms_assert  | postgres12

                 dbms_output  | postg

2021-10-27 14:06:39    10    0    0

    查看当前文件夹在的文件使用ls -l,我们一般习惯了简写执行ll,但有时会报ll命令不存在,这是因为我们没配置自定义命令或自定义命令不生效导致的。    

    我们只需要在环境变量里添加一下内容即可:

    alias ls='ls $LS_OPTIONS'

    alias ll='ls $LS_OPTIONS -l'

    alias l='ls $LS_OPTIONS -lA'

    alias su='sudo su'

    同样其他命令也可以这样做,但是具体加到那个环境变量的配置文件里,需要根据自己的操作系统实际多尝试几次才行。

     如果是添加到系统级,则环境变量配置文件一般是:/etc/profile   /etc/bash.bashrc   /etc/bashrc;不同的操作系统可能需要放的文件不一样。

     如果是用户级,则环境变量配置文件一般是:~/.bash_profile   ~/.bashrc;当然不同的操作系统可能需要放的文件不一样。

2021-10-25 11:20:57    7    0    0

    ---------------------------------------------------------------------------

    --

    -- syscat.sql-

    --    sample queries to the system catalogs

    --

    --

    -- Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group

    -- Portions Copyright (c) 1994, Regents of the University of California

    --

    -- src/tutorial/syscat.source

    --

    ---------------------------------------------------------------------------

 

    --

    -- Sets the schema search path to pg_catalog first, so that we do not

    -- need to qualify every system object

    --

    SET search_path TO pg_catalog;

 

    -- The LIKE pattern language requires underscores to be escaped, so make

    -- sure the backslashes are not misinterpreted.

    SET standard_conforming_strings TO on;

 

    --

    -- lists the names of all database owners and the name of their database(s)

    --

    SELECT rolname, datname

      FROM pg_roles, pg_database

      WHERE pg_roles.oid = datdba

      ORDER BY rolname, datname;

 

    --

    -- l

2021-10-25 10:57:24    40    0    0

1、自定义postgresql安装目录

    默认安装在/usr/local/pgsql下,configure 时加上 --prefix参数

2、查看\d开头命令执行的sql

    1)源码src/bin/psql/describe.c下有执行sql的描述

    2)  psql登陆时加-E参数

3、部分可从数据库系统表中获取的信息

    src/tutorial/syscat.source

2021-09-26 14:09:57    51    0    0
Hibernate使用PostgreSQL序列生成主键。
第一步:数据库创建表、序列
    CREATE TABLE users ( id int, firstname text ) ;
    CREATE SEQUENCE SEQ_USER_ID;
第二步:实体类配置
    @Entity
    @Table(name = "users")
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_gen")
        @SequenceGenerator(name = "seq_gen", sequenceName = "seq_user_id", allocationSize = 1)
        private Long id;
        private String firstname;
    }
第三步:测试
    @Test          
    public void save(){
        User u = new User();
        u.setFirstname("name");
        userRepository.save(u);
    }
     注意:使用@SequenceGenerator时,由于allocationSize值默认是50,如果序列INCREMENT属性值为1(不设置默认是1),则需要设置allocationSize属性为1;或者设置序列属性INCREMENT的值为50。​
2021-09-26 14:09:57    35    0    0

CREATE TABLE  users ( id serial, firstname text, lastname text );

1、 Mybatis返回postgresql自增主键值

第一步:java对象

public class Users {

    private int id;

    private String firstname;

}

第二步:Mybatis xml

    <insert id="insert_user_return_id" parameterType="Users" useGeneratedKeys="true" keyProperty="id">

    INSERT INTO users (firstname, lastname) VALUES (#{firstname},#{lastname})

    </insert>

第三步:测试

    @Test

    public void f2() {

        Users u = new Users();

        u.setFirstname("firstName");

        u.setLastname("lastName");

        userDao.insert_user_return_id(u);

        System.out.println("key>>>>>>:" +u.getId());

    }

注意:这里获取自增的主键值是通过传输的对象获取;建表时自增字段必须是第一个字段。


2、 使用returning返回数据

INSERT:

第一步:Mybatis接口中使用@Select注解

     @Select("INSERT INTO users (firstname, lastname) VALUES ('Joe', 'Cool') RETURNING * ")

      Users insert_user_return_all();

第二步:测试

    @Test

    public void f1() {

        Users user = userDao.insert_user_return_all();

        System.out.println( "user id: "+user.getId() +", firstname: "+user.get

1/4