Oracle

ORACLE 数据字典

随声附和 提交于 2021-02-17 19:34:00
数据字典是ORACLE数据库重要的组成部分,是元数据(matedata)的存储地点,ORACLE RDBMS使用数据库管理对象信息和安全信息。 数据库管理员可以通过数据字典来得到数据库的信息 。 数据字典是由 内部RDBMS(X$)表,数据字典表,数据字典视图,动态性能表(v$)组成。 1.内部表 该部分是ORACLE核心组成部分。用于跟踪数据库内部信息,维护数据库的正常运行。x$是加密命名的,是ORACLE 技术机密。通过X$建立大量视图,提供用户查询管理数据库之用,是ORACLE 数据库 运行的基础。 通过set autotrace trace explain 来跟踪x$表内部信息 2. 数据字典表 该表主要用于存储表,索引,约束以及其他数据库结构信息。一般以$结尾。例如tab$,obj$,ds$,在创建数据库时通过运行sql.bsq脚本创建。 3.动态性能表 在数据库启动的时候,数据库创建X$表,在此基础上,oracle创建gv$ v$视图。v$对于一个gv$,其中的差别是v$在gv$使用了whrer instance_id=的条件,主要用于当时数据库运行状态。 v_$,gv_$是基于gv$,v$创建的,创建脚本是catelog.sql 4.数据字典视图 数据字典视图是居于X$创建的视图,在创建数据库的时由catelog.sql创建。按照前缀不同,分为三类。 user

Oracle session相关数据字典(一)

陌路散爱 提交于 2021-02-17 19:04:24
(一)session相关视图 (1)视图 v$session v$active_session_history dba_hist_active_session_history 如果是多节点数据库,v$session和v$active_hist_session_history仅获得单节点的信息,可以使用gv$sessiongv$active_session_history来获取所有节点的信息。 (2)三个视图介绍 (2.1)v$session v$session视图记录了当前连接到数据库的session信息,记录的是实时的数据,当有新的会话连接到数据库时,v$session就会产生一条新的session记录,一旦会话断开,记录消除,所以v$session的信息是实时动态变化的。 视图结构如下: 链接: v$session视图介绍 ,其它2个视图与其类似,不再介绍。 (2.2)v$active_session_history   v$active_session_history是记录了数据库活跃会话的采样,如果是多节点,则用gv$active_session_history来查看所有节点的信息。每隔1秒钟,数据库会进行一次采样,将活跃会话记录到该视图,每个活跃会话记录一行。该视图是ASH的核心,用以记录活动SESSION的历史等待信息,这部分内容记录在内存中,期望值是记录一个小时的内容

事务特性,事务的隔离级别,并发事务可能出现的问题,spring事务 数据库锁

六眼飞鱼酱① 提交于 2021-02-17 18:48:25
1.0 事务特性(ACID) Atomicity:原子性,一个事务不可以被拆分 Consistency:一致性,在事务执行前数据库的数据处于正确的状态,而事务执行完成后数据库的数据还是处于正确的状态,即数据完整性约束没有被破坏;比如我们做银行转账的相关业务,A转账给B,要求A转的钱B一定要收到。如果A转了钱而B没有收到,那么数据库数据的一致性就得不到保障,在做高并发业务时要注意合理的设计。 Isolation:隔离性,并发事务执行之间无影响,在一个事务内部的操作对其他事务是不产生影响,这需要事务隔离级别来指定隔离性; Durability:持久性,事务一旦执行成功,它对数据库的数据的改变必须是永久的,不会因各种异常导致数据不一致或丢失。 1.1 事务的隔离级别   READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )   READ_COMMITTED 会出现不可重复读、幻读问题(锁定正在读取的行)   REPEATABLE_READ 会出幻读(锁定所读取的所有行)   SERIALIZABLE 保证所有的情况不会发生(锁表) 大多数数据库的默认隔离级别为: Read Commited,如Sql Server , Oracle . 少数数据库默认的隔离级别为Repeatable Read, 如 MySQL InnoDB存储引擎 1

How to force oracle to use index range scan?

时光怂恿深爱的人放手 提交于 2021-02-17 15:23:33
问题 I have a series of extremely similar queries that I run against a table of 1.4 billion records (with indexes), the only problem is that at least 10% of those queries take > 100x more time to execute than others. I ran an explain plan and noticed that the for the fast queries (roughly 90%) Oracle is using an index range scan; on the slow ones, it's using a full index scan. Is there a way to force Oracle to do an index range scan? 回答1: To "force" Oracle to use an index range scan, simply use an

How to force oracle to use index range scan?

此生再无相见时 提交于 2021-02-17 15:23:03
问题 I have a series of extremely similar queries that I run against a table of 1.4 billion records (with indexes), the only problem is that at least 10% of those queries take > 100x more time to execute than others. I ran an explain plan and noticed that the for the fast queries (roughly 90%) Oracle is using an index range scan; on the slow ones, it's using a full index scan. Is there a way to force Oracle to do an index range scan? 回答1: To "force" Oracle to use an index range scan, simply use an

Error (single-row subquery returns more than one row)

孤街浪徒 提交于 2021-02-17 06:54:06
问题 What is wrong with this query? select en.*, (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf ) from data1 en; I have error ORA-01427: single-row subquery returns more than one row 01427. 00000 - "single-row subquery returns more than one row" 回答1: This is your query: select en.*, (select sf.red, sf.blue, sf.green, sf.yellow from data2 sf ) from data1 en; A subquery in the select used like this is called a scalar subquery . Such a subquery can be used where a scalar value (i.e.

PostgreSQL免费公开课第18期-控制文件管理与恢复

江枫思渺然 提交于 2021-02-17 06:52:42
十八、PostgreSQL控制文件管理与恢复 1、控制文件的结构 2、如何维护控制文件 3、有备份控制文件损坏恢复 4、无备份控制文件损坏恢复 PG的控制文件与Oracle的控制文件一样重要,如果缺少直接影响数据库的启动与备份恢复,本次计算沙龙对PG控制文件的内容和结构进行详细的阐述,并介绍如何如何在没有备份控制文件的环境下恢复控制文件,是对数据库进行恢复的利器。 PG控制文件卡 通通告诉你方法 主讲:CUUG陈卫星老师 时间:2020-07-18 20:00-21:00 地址:腾讯课堂搜索‘cuug’ 来源: oschina 链接: https://my.oschina.net/u/3902946/blog/4403666

Oracle query logic to identify email addresses across the dwh schemas

百般思念 提交于 2021-02-17 06:46:12
问题 I was performing an activity to identify eMail addresses based on certain pattern (@xyz.de). I initially tried checking the DBA_TAB_COLS [data dictionary] view but this just finds email column names and I manually need to check the big list of tables. Instead of doing that, is there is a more effective way to just fetch the the pattern value @xyz.de ? Database - oracle 11g Query used SET SERVEROUTPUT ON 100000 DECLARE lv_count number(10):=0; l_str varchar2 (1000); lv_col_name varchar2(255) :=

Create Table Error - Oracle SQL

萝らか妹 提交于 2021-02-17 06:19:04
问题 I need help with this it keeps giving the same error in Oracle SQL Developer. Error starting at line : 15 in command - CREATE TABLE B_BOOKING ( booking_number int NOT NULL PRIMARY KEY, date_booked date, performance_order int, base_pay int, band_number int, concert_number int, FOREIGN KEY REFERENCES B_CONCERT(concert_number) ) Error at Command Line : 21 Column : 34 Error report - SQL Error: ORA-00906: missing left parenthesis 00906. 00000 - "missing left parenthesis" *Cause: *Action: 回答1: You

Select columns of table index

强颜欢笑 提交于 2021-02-17 05:41:05
问题 Oracle has a query that selects the existing indexes of a table. For example: SELECT * FROM user_indexes WHERE table_name = 'CM_WCEL'; But I need to recreate the index creation statement. How can I get the remaining information like the affected columns, etc? 回答1: To get the complete DDL for each index, use dbms_metadata.get_ddl() : select index_name, dbms_metadata.get_ddl('INDEX', index_name) as ddl from user_indexes where table_name = CM_WCEL'; The DDL is returned as a CLOB. Depending on