oracle数据库

创建与管理Oracle的分区表和本地索引

ぃ、小莉子 提交于 2020-03-18 19:32:50
在网上看到eygle写的一篇关于分区表和本地索引的文章,感觉总结的挺好,特转了过来。 Oracle 的 分区技术 在某些条件下可以极大的提高 查询 的性能,所以被广泛采用。从产品上说,分区技术是Oracle企业版中独立收费的一个 组件 。以下是对于分区及 本地索引 的一个示例。   首先根据字典表创建一个测试分区表: SQL> connect eygle/eygle   Connected.   SQL> CREATE TABLE dbobjs   2 (OBJECT_ID NUMBER NOT NULL,   3 OBJECT_NAME varchar2(128),   4 CREATED DATE NOT NULL   5 )   6 PARTITION BY RANGE (CREATED)   7 (PARTITION dbobjs_06 VALUES LESS THAN (TO_DATE('01/01/2007', 'DD/MM/YYYY')),   8 PARTITION dbobjs_07 VALUES LESS THAN (TO_DATE('01/01/2008', 'DD/MM/YYYY')));   Table created.   SQL> COL segment_name for a20   SQL> COL PARTITION_NAME for a20  

oracle数据库查看并修改最大连接数

心已入冬 提交于 2020-03-18 19:31:05
作为一个DBA,维护数据库的时候,有时候会遇到数据库连接数够,客户端连接间歇性失败,会报错ORA-12519 TNS:no appropriate service handler found,此时我们需要修改oracle的最大会话数 1/8 步骤一:首先通过sqlplus登陆数据库,sqlplus / as sysdba 2/8 步骤二:查看当前数据库进程的连接数 3/8 步骤三:查询数据库当前会话的连接数 4/8 步骤四:查看数据库设置的最大连接数和最大session数量,show parameter processes命令查看的是汇总的信息,也可以直接select value from v$parameter where name ='processes'; 语句查看,最大进程连接数为4000. 5/8 步骤五:当数据库连接数需要调整时,可以用alter system set processes = 3000 scope = spfile;修改连接数。(修改3000只是示范,大多时候是连接数不够,数值修改的更大) 6/8 步骤六:修改processes和sessions值必须重启oracle服务器才能生效 shutdown immediate;关闭实例 startup启动 7/8 步骤七:步骤重启后再次查看,已经生效 8/8 步骤八:可以用如下命令查看数据库连接的消耗情况

oracle触发器使用总结

只谈情不闲聊 提交于 2020-03-18 13:57:28
1.说明 1)触发器是一种特殊的存储过程, 触发器一般由事件触发并且不能接受参数 ,存储器由语句块去调用 2)触发器分类:   1.DML触发器: 创建在表上,由DML事件引发   2.instead of触发器: 创建在视图上并且只能在行级上触发 ,用于替代insert,delete等操作 (由于oracle中不能直接对有两个以上的表建立的视图进行DML操作,所以给出替代触发器,它是专门为进行视图操作的一种处理方法)   3.DDL触发器: 触发事件时数据库对象的创建和修改   4.数据库事件触发器:定义在数据库或者模式上,由数据库事件触发 3)组成:   1.触发事件:引发触发器被触发的事件 DML语句(INSERT, UPDATE, DELETE语句对表或视图执行数据处理操作)、DDL语句(如CREATE、ALTER、DROP语句在数据库中创建、修改、删除模式对象)、数据库系统事件       (如系统启动或退出、异常错误)、用户事件(如登录或退出数据库)。   2.触发时间:即该触发器是在触发事件发生之前 (BEFORE)还是之后(AFTER)触发   3.触发操作:触发器触发后要完成的事情   4.触发对象:包括表、视图、模式、数据库。只有在这些对象上发生了符合触发条件的触发事件,触发器才会执行触发操作。   5.触发条件:由WHEN子句指定一个逻辑表达式

Oracle数据导入、导出dmp文件

余生长醉 提交于 2020-03-18 12:52:49
某厂面试归来,发现自己落伍了!>>> 数据导出,命令exp,将远程数据库中的数据导入到本地,比如你在windows下可以将Linux中的数据库中数据导出到Windows本地。 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中,将Test数据库中所有数据导出到一个dmp文件中。前提是登录用户即system有导出权限。 exp system/manager @TEST file=d:\daochu.dmp full=y 2 将数据库中system用户与sys用户的表导出,指定导出某些用户的表。 exp system/manager @TEST file=d:\daochu.dmp owner=(system,sys) 3 将数据库中的表table1 、table2导出,指定导出固定的表 exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 数据导入,命令imp 1 将D:\daochu.dmp中的数据导入TEST数据库中。要先删掉将要导入的表,如果是全库导入就删掉所有的表,否则导入过程中会报表已存在的错。 imp system/manager@TEST file=d:\daochu.dmp 2 将d:\daochu.dmp中的表table1导入

RAC环境上搭建DG

杀马特。学长 韩版系。学妹 提交于 2020-03-18 06:07:21
首先RAC要确实是开归档的状态 archive log list; 如果是非归档状态,需要执行下面几步 srvctl stop database -d +数据库实例名 关闭数据库 --节点1(要做DG主库的) sql>startup mount sql> alter database archivelog; sql>alter system set log_archive_dest_1='LOCATION=/oracleapp/arch' scope=spfile sid='prod1'; sql>shutdown immediate srvctl start database -d +数据库实例名 RAC环境上搭建DG 查看当前数据库的日志文件组 select group#,thread#,bytes/1024/1024,status from v$standby_log; 为主库添加几组组standby log文件,以便它们自动被传送到备库。(一般比主库多一组) alter database add standby logfile thread 1 group 11 size 50m; alter database add standby logfile thread 1 group 12 size 50m; alter database add standby logfile

在ORACLE 12C 上安装APEX 19.2

别说谁变了你拦得住时间么 提交于 2020-03-17 15:29:16
安装环境 操作系统:win 10 x 64 中间件:本文尝试了三个安装环境 PL/SQL gateway/ORDS独立模式/Apache + ORDS 数据库版本:采用windowns X64 版本的 oracle db 12.1.0 目标容器:安装在PDB中(已经自建好名字为apexpdb) 提前修改好pdb的sys用户的密码并熟记 参考官方文档:https://docs.oracle.com/en/database/oracle/application-express/19.2/ 安装步骤(通用步骤): 下载apex安装包 并解压到ORACLE_HOME目录下的 apex文件夹中,并切换到apex目录中, sqlplus / as sysdba 登录数据库: PS C:\app\oracle\oracle\product\ 12.1 .0 \dbhome_1\apex > sqlplus / as sysdba SQL * Plus: Release 12.1 .0 .2 .0 Production on 星期日 3 月 1 16 : 43 : 59 2020 Copyright ( c ) 1982 , 2014 , Oracle . All rights reserved . 连接到: Oracle Database 12 c Enterprise Edition

ORA-00742:Log read detects lost writein thread 1 sequence 1202 block 137840

对着背影说爱祢 提交于 2020-03-17 10:29:09
问题背景: 客户数据库环境遭遇断电宕机,启动数据库失败,协助查看。 报错如下: 1 Total System Global Area 6442450944 bytes 2 Fixed Size 8807168 bytes 3 Variable Size 1375735040 bytes 4 Database Buffers 5049942016 bytes 5 Redo Buffers 7966720 bytes 6 Database mounted. 7 ORA-00742: Log read detects lost write in thread 1 sequence 1202 block 137840 8 ORA-00312: online log 18 thread 1: '/u01/app/oracle/oradata/orcl/redo18.log' 9 10 11 alter pluggable database all open 12 * 13 ERROR at line 1: 14 ORA-01109: database not open 问题解决: 宕机过程中redolog丢失 1 SQL> RECOVER DATABASE UNTIL CANCEL; //尝试recover 2 ORA-01547: 警告: RECOVER 成功但 OPEN

Oracle表空间(tablespaces)

夙愿已清 提交于 2020-03-17 08:33:42
http://www.cnblogs.com/fnng/archive/2012/08/12/2634485.html   我们知道oarcle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 捻在一起就成为一个表空间。 表空间属性: 一个数据库可以包含多个表空间,一个表空间只能属于一个数据库 一个表空间包含多个数据文件,一个数据文件只能属于一个表空间 表这空间可以划分成更细的逻辑存储单元 Oracle数据库的存储结构:   从逻辑的角度来看,一个数据库(database)下面可以分多个表空间(tablespace);一个表空间下面又可以分多个段(segment);一个数据表要占一个段(segment),一个索引也要占一个段(segment )。 一个段(segment)由多个 区间(extent)组成,那么一个区间又由一组连续的数据块(data block)组成。这连续的数据块是在逻辑上是连续的,有可能在物理磁盘上是分散。   那么从物理的角度上看,一个表空间由多个数据文件组成,数据文件是实实在在存在的磁盘上的文件。这些文件是由oracle数据库操作系统的block 组成的。 Segment(段) :段是指占用数据文件空间的通称

oracle递归函数

两盒软妹~` 提交于 2020-03-17 05:39:46
oracle start with connect by 使用方法 oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句使用方法 connect by 是结构化查询中用到的,其基本的语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from table start with org_id = 'HBHqfWGWPy' connect by prior org_id = parent_id; 简单说来是将一个树状结构存储在一张表里,比方一个表中存在两个字段: org_id,parent_id那么通过表示每一条记录的parent是谁,就能够形成一个树状结构。 用上述语法的查询能够取得这棵树的全部记录。 当中: 条件1 是根结点的限定语句,当然能够放宽限定条件,以取得多个根结点,实际就是多棵树。 条件2 是连接条件,当中用PRIOR表示上一条记录,比方 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。 条件3 是过滤条件,用于对返回的全部记录进行过滤。 简介例如以下:

oracle自动备份

冷暖自知 提交于 2020-03-17 01:38:01
本文章详细介绍备份过程中遇到的坑。 导出: expdp vids/vids123 @orclvids directory=dpdata dumpfile=db20200311214001.dmp logfile=20200311214001.log 删除线部分非必须,可以不要 导出常见错误: 连接到: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production ORA-39002: 操作无效 ORA-39070: 无法打开日志文件。 ORA-29283: 文件操作无效 ORA-06512: 在 "SYS.UTL_FILE", line 536 ORA-29283: 文件操作无效 错误原因:目录授权问题,如果备份目录是自定义目录,必须拥有oracle用户的权限和权限组。这种情况在root和oracle用户混用的情况下比较常见 解决: #备份目录查询(目录拥有者都在sys下,需要对expdp导出用户进行授权) select * from dba_directories; #创建并授权 create directory dpdata as '/data/backup/'; grant create any directory to vids; 导入: impdp vids/vids123@xe