什么是jsonb 由PostgreSQL文档定义的数据类型json和jsonb几乎相同;关键的区别在于json数据存储为JSON输入文本的精确副本,而jsonb以分解的二进制形式存储数据;也就是说,不是...为避免这种情况,您可以考虑存储稍后可能在常规字段上汇总的数据。 有关此问题的进一步评论,您可以阅读Heap的博客文章何时在PostgreSQL架构中避免使用JSONB。...在表中定义列 很简单,我们使用jsonb数据类型指定数据列: CREATE TABLE books ( book_id serial NOT NULL, data jsonb ); 插入JSON数据 要将数据输入...事实上,我们可以 - 并且可能应该在DB大小增加时 - 索引在过滤结果时要在WHERE子句上使用的任何内容。 注意事项 切换到jsonb数据类型时,您需要考虑一些技术细节。...最后,请注意我已经涵盖了指数及其运算符的一些典型用法;有关更多详细信息和示例,请查看官方PostgreSQL文档中的jsonb索引以及JSON函数和运算符。
♣ 题目部分 在Oracle中,Oracle的DBLINK是什么?...♣ 答案部分 当用户要跨本地数据库访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的DBLINK,通过DBLINK可以像访问本地数据库一样访问远程数据库表中的数据。...其实,DBLINK和数据库中的VIEW差不多,创建DBLINK的时候需要知道待读取数据库的IP地址、ORACLE_SID以及数据库用户名和密码。...可以使用SQL语句:SELECT * FROM DBA_DB_LINKS。...PROD1> COL USERNAME FORMAT A10 SYS@PROD1> select * from dba_db_links d WHERE D.db_link LIKE '%PROD2_2%
♣ 题目部分 在Oracle中,参数DB_BLOCK_CHECKSUM和DB_BLOCK_CHECKING的作用是什么? ♣ 答案部分 何时进行数据块的一致性检查呢?...当一个数据块被读或写的时候,将对块的进行一致性检查,检查的内容包括块的版本、比较块在Cache和Block Buffer中的数据块地址,然后根据要求进行校验和(checksum)。...块的一致性检查由DB_BLOCK_CHECKSUM和DB_BLOCK_CHECKING两个初始化参数控制。...如果将其设置为FULL,还会验证内存中的块的CHECKSUM值,避免内存的问题导致块的损坏。即使将DB_BLOCK_CHECKSUM值设置为FALSE,对于SYSTEM表空间也会进行相关的验证。...DB_BLOCK_CHECKING参数(默认值为FALSE)主要用于数据块的逻辑一致性检查,但只是在块内,不包括块间的逻辑检查,用于防止在内存中损坏或数据损坏。
题目部分 如何查找或监控效率低下的SQL语句?在Oracle中,errorstack的作用是什么?...答案部分 在使用Oracle数据库的过程中,可能会遇到各种各样的错误或异常,而且这些错误或异常的提示并不具体,那么这个时候就可以使用Oracle提供的一种对于错误堆栈进行跟踪的方法即errorstack...通过设置跟踪可以将一些错误的后台信息详尽地转储出来,写入跟踪文件,对于错误的研究与诊断非常有效。...2 Level1 + ProcessState l 3 Level2 + Context area(显示所有游标,着重显示当前游标) errorstack可以在实例级或会话级别设置,也可以在参数文件中设置...& 说明: 有关errorstack的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2136457/。
题目部分 SQL*Plus中&与&&的区别是什么? 答案部分 &用来创建一个临时变量,每当遇到这个临时变量时,都会提示输入一个值。...&&用来创建一个持久变量,就像用DEFINE命令或带NEW_VLAUE子句的COLUMN命令创建的持久变量一样。...例如,将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入DEPTNOVAL的值: SELECT COUNT(*) FROM SCOTT.EMP WHERE DEPTNO = &DEPTNOVAL...SELECT COUNT(*) FROM SCOTT.EMP WHERE DEPTNO = &DEPTNOVAL; 将下面三行语句存为一个脚本文件,运行该脚本文件,则只会提示一次,让输入DEPTNOVAL的值
https://www.postgresql.org/ https://yum.postgresql.org/rpmchart.php https://yum.postgresql.org/11/redhat...官网 https://www.postgresql.org/,点击菜单栏上的 Download ,可以看到这里包含了很多平台的安装包,包括 Linux、Windows、Mac OS等 。...各个安装包:https://www.postgresql.org/ftp/source/ Linux 我们可以看到支持 Ubuntu 和 Red Hat 等各个平台,点击具体的平台链接,即可查看安装方法...: 点击上图中的 file browser,我们还能下载 PostgreSQL 最新的源码。...2、Docker中下载创建 Docker Hub的官网地址:https://hub.docker.com/_/postgres GitHub的地址:https://github.com/docker-library
题目部分 SQL*Plus中@和@@的区别是什么? 答案部分 @和@@都可以调用脚本,它们的不同之处如下所示: @等于start命令,用来运行一个SQL脚本文件。...@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。...@@用在脚本文件中,用来指定“@执行的脚本文件”与“@@执行的脚本文件”在同一目录,而不用指定全路径,也不从SQLPATH环境变量指定的路径中寻找文件,该命令一般用在嵌套脚本文件中。
♣ 题目部分 在Oracle中,cluvfy工具的作用是什么?...它的功能是对整个集群系统实施过程的各个阶段以及各个组件进行检查,并验证是否满足Oracle的要求。...将list修改为help可以查看相应的命令。...-fixup 其中, -n 选项表示需要检查的节点列表。...这里需要所有列出的节点之间的用户等效性已经配置成功。 -r 表示需要安装的软件版本,可以使用help查看支持的软件版本。 -verbose 表示列出检查内容的详细信息。
♣题目部分在Oracle中,SELECT ... FOR UPDATE加的是什么锁? ♣答案部分 SELECT ... FOR UPDATE语句的语法如下: SELECT ......若不使用OF指定锁定的表的列,则所有表的相关行均被锁定。若在OF中指定了需修改的列,则只有与这些列相关的表的行才会被锁定。WAIT子句指定等待其他用户释放锁的秒数,防止无限期的等待。...“使用FOR UPDATE WAIT”子句的优点如下: ① 防止无限期地等待被锁定的行 ② 允许应用程序中对锁的等待时间进行更多的控制 ③ 对于交互式应用程序非常有用,因为这些用户不能等待不确定的时间...④ 若使用了SKIP LOCKED,则可以越过锁定的行,不会报告由wait n引发的“资源忙”异常报告 在Oracle 10g之前,SELECT ......FOR UPDATE获取的是2级TM锁,而从Oracle 10g开始,SELECT ... FOR UPDATE获取的是3级TM锁。 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
♣ 题目部分 【DB笔试面试826】在Oracle中,ASH和AWR的关系是什么?...ASH采用的策略是:保存处于等待状态的活动SESSION的信息,每秒从V$SESSION_WAIT中采样一次,并将采样信息保存在内存中。...ASH的采样数据保存在内存中,而分配给ASH的内存空间是有限的,当分配空间占满后,旧的记录就会被覆盖掉,而且在数据库重启后,所有的这些ASH信息都会消失。...这样,对于长期检测Oracle的性能是不可能的。在Oracle 10g中,提供了永久保留ASH信息的方法,这就是AWR。...由于全部保存ASH中的信息是非常耗费时间和空间的,AWR采用的策略是:每小时对VACTIVE_SESSION_HISTORY进行采样一次,并将信息保存到磁盘中。
题目 在Oracle中,SESSIONS和PROCESSES的关系是什么? 答案 在数据库安装完成后,常常需要设置SESSIONS和PROCESSES的大小。...通过查找官方文档,可以知道SESSIONS参数的值在Oracle 10g和11g中是不同的,如下表所示: 属性Oracle 10gOracle 11gR2参数值的类型IntegerInteger默认值Derived...PROCESSES) + 5Derived: (1.5 * PROCESSES) + 22是否可以动态修改NoNo范围1 to 2311 to 216 (即1到65536)注:在Oracle 11gR1中,...该参数值和10g是一样的,修改语句为“ALTER SYSTEM SET PROCESSES|SESSIONS=200 SCOPE=SPFILE;” 由于SESSIONS的值是根据PROCESSES的值计算得到的...在Oracle 11gR2以下版本中,SESSIONS大小的计算公式为:(1.1 * PROCESSES) + 5;在Oracle 11gR2中,SESSIONS大小的计算公式为:(1.5 * PROCESSES
♣ 题目部分 在Oracle中,cvuqdisk包的作用是什么?...♣ 答案部分 在安装RAC的过程中,如果没有安装cvuqdisk包,那么集群检验工具(Cluster Verification Utility,CVU)就不能发现共享磁盘。...而且,如果没有安装该包或者安装的版本不对的话,那么当运行集群检验工具的时候就会报“PRVF-10037 : Failed to retrieve storage type for "的RPM包含在Oracle Grid Infrastructure安装介质上的rpm目录中。...的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2136390/ 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
题目 PL/SQL中的%ROWTYPE和%TYPE的区别是什么?...答案 %TYPE是定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,其使用示例如下所示: DECLARE V_SAL NUMBER(7) ;...,其数据类型和数据库表的数据结构一致。...具体而言,%ROWTYPE有如下优点: ① 可以不必知道数据库中列的数量和类型。 ② 在运行期间,数据库中列的数量和类型可能发生变化,但是却不用修改代码。...③ 在SELECT语句中使用该属性可以有效地检索表中的行。
♣ 题目部分 在Oracle中,RAC中REMOTE_LISTENER的作用是什么?...♣ 答案部分 REMOTE_LISTENER参数主要用于RAC环境中监听器的远程注册,监听器的远程注册主要用于实现负载均衡。...如果此时Remote_Listener中指定的实例负载较小,那么当前的请求会被重定向到负载较小的Instance中来建立连接,派生服务器进程进行相应连接。...在服务器端的连接中,Oracle NET通过remote_listener确定当前RAC中的远程监听和实例,以便分发连接。...SCAN LISTENER:SCAN监听器可以监听到集群中运行的所有数据库,它是实现SCAN负载均衡的原理所在。
♣ 题目部分 在Oracle的OGG中,Logdump工具的作用是什么?...♣ 答案部分 Logdump(Log File Dump Utility)是一个OGG自带的trail文件分析工具,而且能加深对OGG工作原理的理解,非常值得花时间来研究它。...进入Logdump命令行之后,可以直接输入help即可看到每一条命令,其中常用的命令如下: l USERTOKEN 用来显示trail文件的一些标记信息 l GGSTOKEN 显示OGG的一些标记信息...用于指定在trail文件中读的方向(向上|向下) l COUNT DETAIL 会显示当前TRAIL文件总的记录数量 关于详细使用请参考官方文档。...About Me:小麦苗 ● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用 ● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/ ● 本系列题目来源于作者的学习笔记
Q 题目 在Oracle中,ROWID和ROWNUM的区别是什么? A 答案 Oracle有两个著名的伪列ROWID和ROWNUM,下面分别来介绍它们。...ROWID可以分为以下几种类型: l 物理ROWID:存储堆组织表、表簇、表分区、和索引分区中的行地址。 l 逻辑ROWID:存储索引组织表中的行地址。...l 外部ROWID:是外来表(如通过网关访问的DB2表)中的标识符。它们不是标准的Oracle数据库ROWID。 有一种数据类型称为通用ROWID或UROWID,支持各种ROWID。...(二)ROWNUM ROWNUM是一个伪列,不是真正的列,在表中并不真实存在,它是Oracle数据库从数据文件或缓冲区中读取数据的顺序。...DB笔试面试历史连接 http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w About Me:小麦苗 ● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
♣ 题目部分 在Oracle中,全文索引的作用是什么? ♣ 答案部分 Oracle全文索引使Oracle具备了强大的文本检索能力和智能化的文本管理能力。...具有CTXAPP角色的用户可以使用全文索引。全文索引适合于在一些大字段类型中查找匹配关键字,例如搜索引擎(谷歌、百度)常会用到。...--------------------------------------------------------- 137 recursive calls 0 db...当然,Oracle的全文索引远比这个例子复杂,想深入学习Oracle全文索引的读者可以参考Oracle官方文档。...& 说明: 有关全文索引的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2139034/ 本文选自《Oracle程序员面试笔试宝典》,作者
♣ 题目部分 在Oracle中,PFILE和SPFILE的区别是什么?...♣ 答案部分 参数文件(Parameter File)也叫初始化文件,它主要用来记录数据库的配置文件,在数据库启动时,Oracle读取参数文件,并根据参数文件中的参数设置来配置数据库,如内存的分配,允许打开的进程数和会话数等...SPFILE和PFILE的区别参考下表: 表 3-12 SPFILE和PFILE的区别 比较内容SPFILEPFILE格式二进制格式文本格式编辑方式Oracle 9i之后引入的概念,不能用文本编辑工具打开...本题考察的是SPFILE的相关知识。 本题中,对于选项A,SPFILE是一个二进制文件。所以,选项A正确。 对于选项B,SPFILE不能用在客户端。所以,选项B正确。...对于选项D,SPFILE可以永久存储参数的值。所以,选项D正确。 对于选项E,SPFILE可以由数据库进行写入。所以,选项E错误。 对于选项F,DBCA创建的数据库不用手动创建SPFILE。
♣ 题目部分 在Oracle中,存储概要(Stored Outline)的作用是什么?...♣ 答案部分 OUTLINE的原理是将调好的执行计划(一系列的Hint)保存起来,然后使用该效率高的执行计划替换之前效率低下的执行计划,从而使得当系统每次执行该SQL时,都会使用已存储的执行计划来执行...所以,可以在不改变已有系统SQL的情况下达到改变其执行计划的目的。OUTLINE方式是通过存储Hint的方式来达到执行计划的稳定与改变。...Oracle在Outline的表中保存了SQL的Hint,当执行SQL时,Oracle会使用Outline中的Hint来为SQL生成执行计划。...Ø使用OutLine的步骤: (1)生成新SQL和老SQL的2个Outline (2)交换两个SQL的提示信息 (3)ON LOGON触发器设定session的CATEGORY(自定义类别) SQL命令行为
♣ 题目部分 在Oracle中,数据库和实例的关系是什么? ♣ 答案部分 数据库(DATABASE)是一个数据集合,Oracle数据库都将其数据存放在数据文件中。...在物理结构上,Oracle数据库必须的3类文件分别是数据文件、控制文件和联机Redo日志文件。在逻辑结构上,Oracle数据库由表空间、段、区和块组成。数据库名称由DB_NAME来标识。...中没有自己的UNDO表空间时,会使用CDB$ROOT中的公共UNDO表空间。...•参数文件:参数文件中只记录了根容器的参数信息,没有记录PDB级别的参数信息,在根容器中修改初始化参数,会被继承到所有的PDB中,在PDB中修改参数后,PDB的参数会覆盖CDB级别的参数,PDB级别的参数记录在根容器的...在12.1中,CDB和PDB的字符集必须一样,但是在12.2中,CDB和PDB的字符集可以不一样。 •根据应用程序的需要,PDB可以在PDB中创建表空间。
领取专属 10元无门槛券
手把手带您无忧上云