表空间的状态(一) - ONLINE和OFFLINE
前几天问一个表空间状态的问题,也暴露了自己基础知识的薄弱,之所以总结如下两篇博文,主要还是让自己静下心来,补一下相关知识点,并通过实践强化自己的理解。主要参考:《11g Concept》《11g Administrator's Guide》表空间的ONLINE和OFFLINE状态1. 只要数据库处于OP...
Oracle用户的创建和删除
1. 创建用户:SQL> create user user01 identified by user01;User created.但登录提示01045的错误,缺少CREATE SESSION权限。ERROR:ORA-01045: user USER01 lacks CREATE SESSION privilege; logon deniedEnter user-name:此时需要赋予connect权限给用户(原因见(2)),登陆后创建表提示01...
11g的延迟段功能
11gR2之前的版本中,当创建一张表时,会自动分配段空间,这样做有几个弊端:1. 初始创建表时就需要分配空间,自然会占用一些时间,如果初始化多张表,这种影响就被放大。2. 如果很多表开始的一段时间都不需要,那么就会浪费这些空间。为此,从11gR2开始,有一种新特性,叫延迟段,即延迟分配段空...
安装Oracle时可能碰到的常见问题-1
安装Oracle可能有些人认为是一件很简单的事情,但其实是在安装的过程中蕴含着丰富的知识点,尤其安装在Linux平台,可能会碰到这样或那样各种诡异的问题,透过问题看到本质,这才是从深处理解Oracle的精髓,至少我是这样认为的,欢迎拍砖。。。下面就分几个场景,说明下安装过程中可能碰到的一些问题或知识点,也...
merge更新或插入同一张表
一段业务逻辑,需要先判断一条记录在数据库中是否有存在,若存在则更新该记录,若不存在则插入记录。应用之前的做法是:1、先用条件判断记录在数据库中的个数。2.1、若count(*)>0,则执行UPDATE操作。2.2、若count(*)=0,则执行INSERT操作。或1、先插入记录。2.1、若报ORA-001主键错误,则存在记录,此时执行UPDATE...
如何彻底删除Oracle数据库,以创建相同实例名称的库
今天建库时选择了OMF方式,结果文件名称采用Oracle自动命名的方式,看不懂啊,于是乎决定删除再重建。Oracle提供了删除数据库的指令:drop database。需要数据库处于mount状态,然后alter system enable restricted session;,网上有帖子说还需要exclusive,由于我是VM装的,用户只有我一个,所以不用可以。由于当前处于...
用实验方法加深理解Oracle的外连接(left/right/full)和内连接(inner)
总是对Oracle的左连接、右连接以及(+)对应的外连接类型糊涂,通过实验加深对连接类型语法的理解。外连接分为三种:1. 左外连接,对应SQL关键字:LEFT (OUTER) JOIN2. 右外连接,对应SQL关键字:RIGHT (OUTER) JOIN3. 全外连接,对...
相同更改数据量的前提下,单次COMMIT和多次COMMIT对日志空间浪费的影响对比
LGWR进程按照顺序写在线日志,中间不会跳跃,而且LGWR进程不会在同一个日志快写2次,即使一次写入的日志快只占几个字节,下次不会再用了,这就造成日志空间的浪费。Oracle做一次Commit,就会触发LGWR进程进行日志缓冲到日志文件的写入操作,因此可以说更改相同数据量的前提下,如果提交过于频繁,产生的日志可能就会越多...
Windows平台的Oracle使用USE_SHARED_SOCKET的作用
前两天有位朋友在QQ群问了一个问题,背景如下:继续问后,有如下回复:1、对方服务器连接无问题。2、从client可以telnet服务器的1521端口。3、tnsping正常。4、对方服务器没有设置IP信任。5、windows 2003 server,Oracle 10.1.0.2.0但从客户端sqlplus就是超时,无法连接。...
初了解Oracle 11g的Automatic Diagnostic Repository新特性
Oracle 11g之前,当数据库出现问题时,往往第一时间需要看alert日志,看看里面记录了哪些错误,可以给我们提示。alert文件名则是alert_<ORACLE_SID>.log,文件存储路径由参数background_dump_dest决定,例如:SQL> show parameter background_dump_destNAME &n...
解析grant connect, resource to user语句
今天同事问了一个问题:“创建用户分配的权限是:grant connect,resource to user;,但是建立view的时候失败了,错误是权限不够,后来我给这个用户分配了创建view的权限,然后创建view才可以成功。我有个疑问就是为什么用户在自己的空间没办法直接建立view,还得增加创建view的权限才可以?”我们知道,创建一个...
AWR的基本知识
自从Oracle 10g开始支持AWR以后,相比于Statspack,除了有更多新的内容可供参考,HTML保存格式也是为查看文档提供了很多便利。最近在看尼米克,尼大师的著作,从AWR这一章节开始看,虽然没看完,但看过的内容当中,精辟地说明了AWR使用上的一些常用方法,个人感觉非常实用,至少没有废话,所以在这里也汇总下,...
允许进行DML操作的视图条件
视图可以屏蔽某些基表的信息,或是join多个基表组成一个复杂查询,视图本身也是可以进行DML操作,但受一些条件的限制。首先我们看下官方文档对视图进行DML操作的要求说明:The following notes apply to updatable views:An updatable view is one you can use to insert, update, or delete base t...
建立dblink(database link)
database linke是建立一个数据库到另一个数据库的路径的对象,通过database link可以允许查询远程表,我理解可以算作一种分布式数据库的用法。database link是单向连接,既然它是一种对象,那自然可以在xxx_objects表中查询到相关的信息。建立database link前需要明确几个事情:1、确认从建立方的server可以...
sequence的MAXVALUE、NOMAXVALUE和CYCLE、NOCYCLE参数
Oracle的sequence通常可以用来作自增列,例如主键,因为他可以自动累加并且唯一。创建sequence时有几个参数,MAXVALUE、MINVALUE、CYCLE、NOCYCLE、NOMAXVALUE等,这几个参数我们日常使用的时候可能不会太在意,但有些细节问题碰到的时候就需要明确下。1、未定义NOCYCLE,默认是NOCYCLE还是CYCLE?CREATE SE...
新建数据文件的初始大小
问题:为表空间添加一个100M的数据文件,产生的数据文件直接就是100M,还是开始为0,逐渐增大的?实验:为OPEN_TBS表空间增加一个数据文件:alter tablespace OPEN_TBS add datafile '/oracle/oradata_petest/petest/open_tbs02.dbf' size 100m;查看文件大小:ls -lrht-rw-r----- 1 o...
Linux下安装Oracle的过程和涉及的知识点-系列6
16、一路安装后,会提示以下界面,此时需要用root登录以下目录,然后执行这两个脚本。至此,Oracle软件的安装就已经完成了,接下来就可以创建数据库了。17、选择自定义数据库:输入数据库名称和SID,一般两者相同:不配置EM工具:输入数据库文件所在路径(这里的名称可能有些歧义...
Linux下安装Oracle的过程和涉及的知识点-系列5
12、命令行启动由于我是用VM进行安装的,所以首先需要修改默认启动为命令行的方式。使用root登录,编辑/etc/inittab文件,将d:5:initdefault:改为d:3:initdefault:知识点6:Linux的运行级别# 0 - 停机(千万不能把initdefault 设置为0)# 1 - 单用户模式 # s init s = init 1# 2 - 多用户,没有 NFS...
用户之间imp的问题
今天同事说申请了一个从生产导出的dump文件,需要导入测试库进行测试。之前做的基本都是本库导出,本库导入的操作,例如:imp test/***@test tables=tbl_fuel file=H:\dev\data\tbl_fuel.dmp ignore=y这样的指令操作。今天的情况是从一个库的用户导出dump,然后导入到另外一个库的用户中。导出:exp...
Oracle Directory目录的知识
在上一章介绍expdp/impdp时曾使用过DIRECTORY这个概念,下面再简单说明下DIRECTORY的点点滴滴。MOS上对DIRECTORY的解释(266875.1):(1)、基于服务端 vs 基于客户端DIRECTORY变量指出了expdp导出数据泵或impdp导入数据泵将dump文件、log文件以及SQL文件(仅适用于impdp)写到什么路径。因为导出数据泵和导入...