PostgreSQL 查找需要收集的vacuum 表信息

前言 通常,在PostgreSQL中,由于经常需要对表进行 UPDATE 和 DELETE,因此表会产生碎片空间。在 PostgreSQL中,使用VACUUM 仅仅对需要执行 VACUUM 表将已删除的空间标识为未使用,以便以后重用这些空间,但是不能立即将占用的空间返还给操作系统,因此需要使用 VACUUM FULL,才可以释放空间,并立即将空间返还给操作系统。 实现脚本 记录收集表创建 [cce] CREATE TABLE IF NOT EXISTS tab_vacuum_record (sqltext text); [/cce] 收集需要VACUUM 表函数 [cce] CREATE OR REPLACE FUNCTION f_vacuum_tables() RETURNS void AS $FUNCTION$ DECLARE v_tablename text; v_dead_cond bigint; v_sql text; cur_tablename REFCURSOR; v_vacuum_record text; BEGIN v_vacuum_record := 'tab_vacuum_record'; OPEN cur_tablename FOR SELECT tablename FROM pg_tables WHERE tablename !~ '^pg|^sql'; LOOP FETCH cur_tablename INTO v_tablename; SELECT n_dead_tup INTO v_dead_cond FROM … [Read more...]

PostgreSQL libpq学习指南二

连接状态函数 PQdb 返回连接的数据库名称 PQuser 返回连接的用户名称 PQpass 返回连接的用户密码 如果连接密码没有被提供,那么将会尝试从 password_file 文件中获取。 PQhost 返回连接的服务器主机名称 PQhostaddr 返回连接的服务器IP地址 PQport 返回连接服务器的端口 PQtty 返回连接的DEBUG 终端信息 PQoptions 返回命令行传递的参数信息 PQstatus 返回连接的状态信息 示例: [cce] #include <stdio.h> #include <stdlib.h> #include "libpq-fe.h" int main(int argc, char **argv) { const char *conninfo; //定义连接信息 PGconn *conn; //连接数据库传递参数 if (argc > 1) conninfo = argv[1]; else conninfo = "dbname = postgres"; /* 连接数据库字符串 */ conn = PQconnectdb(conninfo); /*检查数据库是否连接成功 */ if (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "连接数据库失败: … [Read more...]

PostgreSQL libpq 客户端接口(一)

前言 Libpq 是为 C 语言开发这提供的关于 PostgreSQL 的接口。Libpq 由相关库函数组成,可以允许客户端程序通过将查询传递给 PostgreSQL 后台服务器并接收这些查询返回的结果。同时,libpq 也是其它几个 PostgreSQL 应用程序接口的基础引擎,包括 C++,Perl,Python,Tcl和ECPGC编程的嵌入式 SQL。 连接字符串 以下函数处理 PostgreSQL 后台服务器的连接。一个应用程序同时可以有多个打开的连接,这也是 PostgreSQL 服务器能够同时访问多个库的原因。每一个连接都通过 PGconn 对象表示,该对象可以从函数 PQconnectdb,PQconnectdbParams 中或者 PQsetdbLogin 获取信息。需要注意的是,这些对象通常返回一个非空的对象指针。除非由于内存太小导致无法分配 PGconn 对象。PQstatus … [Read more...]

显示Oracle数据库表或行上持有锁的所有会话

今天一位客户说应用运行比较慢,让我看看数据库中锁的相关情况。 那么如何快速的找到持有锁的会话相关信息呢? 请参考如下SQL: [cce_SQL] set term on; set lines 130; column sid_ser format a12 heading 'session,|serial#'; column username format a12 heading 'os user/|db user'; column process format a9 heading 'os|process'; column spid format a7 heading 'trace|number'; column owner_object format a35 heading 'owner.object'; column locked_mode format a13 heading 'locked|mode'; column status format a8 heading 'status'; spool coe_locks.lst; select substr(to_char(l.session_id)||','||to_char(s.serial#),1,12) sid_ser, substr(l.os_user_name||'/'||l.oracle_username,1,12) username, l.process, p.spid, substr(o.owner||'.'||o.object_name,1,35) owner_object, decode(l.locked_mode, 1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share', 5,'Share Row Excl', 6,'Exclusive',null) locked_mode, substr(s.status,1,8) status … [Read more...]

Critical Patch Update (CPU) Program Jul 2020 Patch Availability Document (PAD) (Doc ID 2664876.1)

APPLIES TO: Oracle Database Cloud Exadata Service - Version N/A and later Oracle Database Cloud Service - Version N/A and later Oracle Database - Enterprise Edition - Version 11.2.0.4 and later Oracle Database Backup Service - Version N/A and later Oracle Database - Standard Edition - Version 11.2.0.4 and later Information in this document applies to any platform. PURPOSE This document defines the patches and minimum releases for the Database Product Suite, Fusion Middleware Product Suite, Exalogic, and Enterprise Manager Suite Critical Patch Updates and Patch Set Updates released on July 14, 2020. SCOPE The document is for Database Administrators and/or others tasked with Quarterly Security Patching. DETAILS Database, Fusion Middleware, and Enterprise Manager Critical Patch Update July 2020 Patch Availability Document My Oracle Support Note 2664876.1 Released July 14, 2020 This document contains the following sections: Critical Patch Update July 2020 Patch … [Read more...]

PostgreSQL中的ACID特性介绍

任何关系型数据库中,ACID 是组成数据库的重要部分,是数据库事务的一组属性,该特性目的主要确保数据库在异常情况下保证数据的有效性。 数据库ACID特性 A(Atomicity) 原子性: 事务通常由多个语句组成。原子性保证将每个事务视为单个单元,该事务要么完全成功,要么完全失败。换句话说,如果在一个事务中,任何语句都未能完成,整个事务都会失败,未完成事务中的数据条目在数据库中保持不变。一个原子系统必须保证在任何情况下都具有原子性,包括电源故障,数据库错误和实例奔溃。同时,原子性可以防止在数据库中发生部分数据更新的情况。举一个例子,假设用户USER1 和 USER2 之间进行转账。这之间会进行两个动作,第一个动作,从USER1 账户中划钱;第二个动作,将从USER1账户中划拨的钱保存到 USER2 … [Read more...]

PostgreSQL之SQL函数介绍及实践(二)

RDBMS作为管理数据安全,共享,可靠的软件管理系统,需要按照不同的数据模型组织和存储数据,为了方便用户处理数据,任何数据库为了简化业务开发复杂度,提供了丰富的不同数据类型的处理函数。而PostgreSQL除了支持 SQL 标准所支持的函数外,也可以使用不同的服务器编程接口来实现自定义函数,以针对不同的业务需要进行针对性开发。今天来给大家介绍一下PostgreSQL中的字符串处理函数。 一、字符串处理函数 1.1字符串操作符 PostgreSQL对于字符串的操作符,支持关系型数据库中通用的符号 ||,用来多个字符串之间或者空字符和多个字符串之间的连接。 示例: <strong style="font-family: Verdana, Arial, Helvetica, sans-serif;">[cce_js] <pre class="ql-syntax" spellcheck="false">hrdb=# -- || 为字符串连接操作符 hrdb=# SELECT 'Postgre' || 'SQL' AS result;   result … [Read more...]

重磅重磅,IT类证书能退税啦!!!

[Read more...]

PostgreSQL之SQL操作符介绍及实践

操作符是数据库具有的运算特性,对文本字符和一些标签字符的处理,使用操作符可以简化SQL代码,同时也可以节省开发时间和提高开发效率。比较操作符 在PostgreSQL中,所有的数据类型都可以使用比较操作符,比较操作符运算结果返回一个布尔值。即 TRUE 或者 FALSE。比较操作符为双目操作符,因此被比较的两个值的数据类型必须是相同的数据类型或者在彼此之间可以进行隐式类型转换。在PostgreSQL中,提供的比较操作符有 > 、< 、<= 、>= 、= 、<> 或者 != 。在 PostgreSQL中,类似 a > b > c的操作是非法的,因为布尔值和数值之间无法做比较。示例: <code><span class="code-snippet_outer">hrdb=<span class="code-snippet__comment"># SELECT 1 > 2 AS result;</span></span><span class="code-snippet_outer"> result </span><span … [Read more...]

12c OMS 日志&目录结构

以下是在 OMS 上安装的一些重要的目录:1、Middleware Weblogic home:也称为<MW_HOME>,这是安装10.3.5 Weblogic 软件的目录。2、Oracle Management Service Instance Base:也称为<EM_INSTANCE_BASE>或<EM_CONFIG_HOME>,这是一个目录,默认情况下名为gc_inst,位于<MW_HOME>下。3、Oracle Management Service home:也称为<OMS_HOME>,这是安装12c OMS 软件的位置,是 <MW_HOME> 下的目录4、Oracle Management Service Instance home directory:也称为<EM_INSTANCE_HOME>,是EM实例创建的位置,是 gc_inst 目录下的一个目录5、Middleware Common home directory:该目录包含一些常用工具,如 Opatch、local inventory 等。6、Middleware WebTier Home:包含OPMN和HTTP服务器软件,安装在Middleware Home下的位置。7、Middleware WebTier Instance … [Read more...]