![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ORACLE_Admin
文章平均质量分 67
IT农夫
古人学问无遗力,
少壮工夫老始成。
纸上得来终觉浅,
绝知此事要躬行。
展开
-
在Linux AS 5中配置Dataguard
记录一下在windows里用VMware虚拟机安装Oracle Dataguard的过程。1,在VMWare安装两台Linux AS 5虚拟机,不用安装两次,在一台安装完成后(Linux 5以及Oracle后) ,拷贝这个虚拟机的文件修改部分内容作为第二台虚拟机的文件直接打开。参照http://www.5ienet.com/note/html/srac/rac_step_setup_sec原创 2012-01-28 13:49:29 · 1562 阅读 · 0 评论 -
Oracle 表空间
转载http://bbs.tacsoft.cn/表空间(table space)是Oracle数据库中最大的逻辑结构。从逻辑上说,Oracle数据库是由若干个表空间组成的。表空间与数据库的物理结构有着十分密切的关系,它与磁盘上若干个数据文件相对应。从物理上说数据库的数据被存放在数据文件中,从逻辑上说数据是被存放在表空间中。表空间是个重要的概念,因为它提供了一套有效组织数据的方法。数转载 2012-01-20 14:40:11 · 5152 阅读 · 0 评论 -
Oracle文件,表空间
一般来讲,Oracle文件分以下几个类型: 数据文件: 真实数据 [一般放在oradata/SID/文件名.DBF] 重做日志文件: 联机日志、归档日志 控制文件: 包含物理文件到数据字典中的逻辑表空间之间的映射 [oradata/SID/文件名.CTL] 初始化参数文件: 参数文件主要用于保存数据库启动例程所需要的初始化参数原创 2009-03-01 11:25:00 · 1648 阅读 · 0 评论 -
ORA-01555模拟与解释
当执行一个查询时间非常长的时候,可能碰到ora-01555错误,本文来模拟并解释一下原因.013555是因为查询的数据在执行查询的过程中,被修改了,同时在undo表空间中已经找不到了造成的.首先来了解一下Oracle在执行一个查询的时候,在开始查询后其根据条件本该查询出来的数据发生变化的时候,Oracle是将变化之前的数据查询出来的.模拟如下:1,有一张表的数据如下:SQL> se原创 2012-06-05 17:49:11 · 1927 阅读 · 0 评论 -
Oracle中诊断阻塞的session
由于锁的机制,当某一条DML或者DDL SQL语句执行被阻塞的时候,需要找出是什么原因导致这条SQL被阻塞了,下面介绍一下通常的诊断方法:假设有这样一个表: table t(id int primary key,val int);数据为:idval11221,在一个Session,这里把它叫做Session A,做原创 2012-06-01 15:12:05 · 2178 阅读 · 1 评论 -
Oracle的索引在数据库中的存储
Oracle的索引是以平衡树的方式组织存储的:保存的是索引列的值,以及该行的rowid的一部分(文件号,块号,行号)下面我们通过例子来了解一下:1,create table test(id int,name varchar2(20))insert into test values(1,'A');insert into test values(2,'B');beginfo原创 2012-01-05 14:30:42 · 2685 阅读 · 0 评论 -
Oracle中用sys用户建表权限不足
过程如下:SQL> show user;USER is "SYS"SQL> create user test identified by test;User created.SQL> create table test.t(id int);create table test.t(id int)*ERROR at line 1:ORA-01950: n原创 2012-01-04 17:53:02 · 3697 阅读 · 0 评论 -
Oracle 中的一些重要V$ 动态性能视图,系统视图和表
v$database:数据库的信息,如数据库名,创建时间等。v$instance 实例信息,如实例名,启动时间。v$parameter 参数信息,select * from v$parameter where name like '%name' ----> show parameter name(sqlplus中执行)v$process 运行的进程的信息,如PID,SPID,以及原创 2011-12-29 20:42:04 · 4716 阅读 · 0 评论 -
DB DAY DAY UP
数据库设计的实用原则是:在数据冗余和处理速度之间找到合适的平衡点.-------------------------------------------------------------------------------------------------------------Oracle中SQL语句中两个单引号之间的字符数不能大于4000.Oracle表名称限制在30内。原创 2009-03-09 10:03:00 · 1215 阅读 · 0 评论 -
JAVA客户端传递对象数组到Oracle存储过程做大数据量插入
最近在项目中用到了JAVA客户端传递对象数组到Oracle存储过程做大数据量插入,比如10万级别.下面做一个插入10万条记录的示例步骤,,为了容易理解,表的结果很简单.1,假设表结构如下:CREATE TABLE UKBNOVCTCORDER(LosingLEName varchar2(200),LosingLECode varchar2(200))2,在数据库建立一个type,对应原创 2012-02-01 17:37:38 · 8880 阅读 · 12 评论 -
Linux中模拟诊断Oracle高CPU占用
下面是模拟过程1,在一个session中模拟CPU高使用率,如下:declarenum int:=0;beginloopnum:=num+1;end loop;end;/2,在shell窗口用top命令查看CPU使用情况: PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 7913原创 2012-01-24 16:47:14 · 3809 阅读 · 0 评论 -
如何理解Oracle中"通过角色授权"需要用户重新登陆
我们经常听到在Oracle中,通过角色授予用户权限的时候需要用户重新登陆才能获得授予的权限,这句话到底怎么理解呢?通过下面的步骤我们来理解这句话的含义.1,DBA做如下的操作:create user u1 identified by u1create role r1;grant create session to r1;grant r1 to u1;通过查询 selec原创 2012-06-08 17:06:18 · 2301 阅读 · 0 评论 -
sqlplus中define定义的常量和variable定义的变量已经column给变量赋值的区别
前两天看到有人在pub上问在sqlplus中通过define和variable定义,以及column定义的变量的区别。其实define定义的我理解不是变量而是字符常量,通过define定义之后,在通过&或者&&引用的时候不需要输入了,仅此而已。oracle在执行的时候自动用值进行了替换;而variable定义的是绑定变量。C:>sqlplus xys/managerSQL*Plus: Re转载 2012-06-20 12:35:55 · 3640 阅读 · 0 评论 -
利用putty的SSH tunnel连接Oracle
1,在localhost的putty上设置SSH tunnel如下图:这样连接本机的1511端口就会转到remoteIP的1521端口。点击"Add",然后SSH登录到remoteIP,SSHtunnel就建立了。在本机netstat -a | find "1511",可以看到1511端口有linstener监听。TCP 127.0.0.1:1511 CN原创 2013-03-11 12:31:10 · 4879 阅读 · 1 评论 -
Oracle数据库通过undo保证一致性读和不发生脏读
不发生脏读,用户A对表更新了,没有提交,用户B对进行查询,没有提交的更新不能出现在用户的查询结果中。实例模拟:表test中的数据如下1,用户A查询:SQL> select * from test; ID NAME---------- ---------- 1 A 2 B2,用户B:update test set na原创 2012-01-07 19:01:35 · 2664 阅读 · 0 评论 -
Linux中SQLplus上下键不能显示历史命令的问题
在Linux的sqlplus中运行SQL语句之后,想用上下键把历史命令找出来,发现不支持。按照下面的步骤可以设置1,从http://download.csdn.net/user/kkdelta下载 rlwrap2,安装rlwrap[root@localhost]# tar -zxvf rlwrap-0.30.tar.gz[root@localhost]# cd rlwrap-0.原创 2012-01-22 16:53:23 · 4646 阅读 · 0 评论 -
在Oracle中利用SQL_TRACE跟踪SQL的执行
当你在执行一条SQL语句非常慢的时候,你是不是想问Oracle怎么执行这条语句的呢?Oracle提供的SQL_TRACE工具可以让你知道你执行的SQL究竟做了什么.执行的过程会被输出到trace文件中.下面用例子来跟踪一个SQL语句的执行情况:SQL> create table t as select rownum as id,object_name from dba_object原创 2012-09-14 17:28:23 · 7960 阅读 · 0 评论 -
Oracle中利用10053事件来分析Oracle是如何做出最终的执行计划
我们都知道Oracle从10g开始SQL语句选择什么样的执行方式,是全表扫描,还是走索引的依据是执行代价.那么我们怎么可以去看执行代价的信息呢?通过10053事件可以Oracle依据的执行代价和如何做出执行计划的.如果我们发现某一条SQL语句的执行计划和想像的不一样,我们就可以去看看Oracle所使用的统计分析数据是否准确,是不是统计信息太久没有分析了,重新分析有问题的对象,最终让Or原创 2012-09-18 15:27:43 · 5208 阅读 · 0 评论 -
oracle 物理读 逻辑读的理解
oracle 物理读 逻辑读的理解 逻辑读是指从内存中读,物理读是指从磁盘上读取数据;如果内存中存在相应的读取数据,那么直接从内存中读取,逻辑读的次数加1,如果不存在,则从磁盘上读到内存中,再从内存中读取,逻辑度次数加1,物理读次数也加1。需要注意的是,物理读非常消耗系统资源,一个物理读需要消耗8ms,而一秒可以处理20万个逻辑读。1.物理读(physical read)当数据块第一次转载 2012-08-24 16:54:09 · 3033 阅读 · 0 评论 -
初识Oracle执行计划
1,先建立测试表和数据,CREATE TABLE EMP AS SELECT LEVEL EMPL_ID, (MOD (ROWNUM, 20)+1) DEPT_ID, SUBSTR(DBMS_RANDOM.STRING ('X', DBMS_RANDOM.VALUE (20, 50)),0,10) EMPNAME,原创 2012-02-02 17:10:44 · 1785 阅读 · 0 评论 -
执行计划中的access 与 filter
access:和访问表的方式有关,access标识访问表的方式是索引。filter:只起过滤的作用。今天看到几个explain 改变了我对这点的理解。上面的理解也对,但是不完整,我理解的有些生硬。SQL> create table t 2 as select rownum r,object_name 3 from dba_objects 4 /Table转载 2012-09-03 16:34:54 · 6440 阅读 · 0 评论 -
表空间对应文件的AUTOEXTEND ON NEXT指定的值对性能的影响
创建表空间的时候指定的数据文件可以设为自动扩展,以及每次扩展多少容量,如果发现在大数据量插入的时候非常慢,可能的原因是NEXT指定的值太小.下面来模拟一下这个过程:1,创建一个表空间:CREATE TABLESPACE "T" DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\T.DBF' SIZE 5M默认的话是不自动扩展的:SQ原创 2012-08-30 14:50:21 · 11320 阅读 · 0 评论 -
查找oracle比较慢的session和SQL
一、如何找到消耗资源大的Oracle的session及其执行的SQL语句 HP-UX可以用glance,top、IBM- AIX可以用topas、另外可以使用PS命令查看进程。 通过这些程序我们可以找到用系统资源特别大的这些进程的进程号,我们就可以通过以下的sql语句发现这个pid正在执行哪个sql,这个sql最好在pl/sql developer,toad等软件中执行, 把S转载 2012-08-15 10:51:55 · 2608 阅读 · 0 评论 -
Oracle在Windows安装后的服务和数据库的关系
在Windows中安装好Oracle后,会在Windows中创建一些服务,如OracleOraDb10g_home1TNSListener用来监听服务端口,以及和实例相关的OracleServiceORCL用来启动实例,OracleDBConsoleorcl是用来启动EM的。OracleOraDb10g_home1TNSListener可以用lsnrctl start命令来启动,只有它启动后才原创 2011-12-31 19:51:27 · 2671 阅读 · 0 评论 -
Oracle的口令文件
Oracle的口令文件的作用是存放所有以sysdba或者sysoper权限连接数据库的用户的口令,如果想以sysdba权限远程连接数据库,必须使用口令文件,否则不能连上,由于sys用户在连接数据库时必须以sysdba or sysoper方式,也就是说sys用户要想连接数据库必须使用口令文件,因此我认为在数据库中存放sys用户的口令其实没有任何意义!使用口令文件的好处是即使数据库不处于open状态原创 2012-01-01 11:50:55 · 1562 阅读 · 0 评论 -
Oracle 连接出错最常见的原因
1,ERROR:ORA-12560: TNS:protocol adapter errorlistener没有启动,在数据库所在的服务器上启动listener: lsnrctl start2,ERROR:ORA-01033: ORACLE initialization or shutdown in progressOracle没有处于open状态,只能以sysdba原创 2012-01-12 10:15:25 · 1507 阅读 · 0 评论 -
在windows中搭建虚拟ASM环境创建Oracle 10G数据库
本文分四部分,1,创建虚拟的ASM磁盘,2在虚拟的ASM磁盘上创建数据库,3,asmcmd工具,4为磁盘组增加磁盘第一部分:创建虚拟的ASM磁盘:(本例中Oracle安装在D:\oracle\product\10.2.0)1,利用Oracle提供的asmtool创建ASM虚拟磁盘,asmtool在D:\oracle\product\10.2.0\db_1\BIN目录下,在CMD中执行:原创 2012-01-11 20:37:00 · 2162 阅读 · 0 评论 -
ORA-16179: incremental changes to "log_archive_dest_1" not allowed with SPFILE 错误解决
Oracle很多参数都是 参数='值'的形式而log_archive_dest_1的值是里面带上'location=目录'SQL> alter system set log_archive_dest_1='D:\oracle\product\10.2.0\flash_recovery_area\BUT\archivedlog\';alter system set log_archi原创 2012-01-12 16:44:38 · 5314 阅读 · 0 评论 -
ORA-00119: invalid specification for system parameter 错误解决办法
如果不小心将系统的参数改错了,重新启动就会得到ORA-00119错误。例子:一次不小心改DISPATCHERS参数:ALTER SYSTEM SET dispatchers='(PROTOCOL=TCP) (SERVICE=orcl‘ SCOPE=spfile;少写了一个括号。启动时候得到如下错误:ORA-32004: obsolete and/or deprecated原创 2012-01-07 10:51:30 · 10680 阅读 · 0 评论 -
SQlPlus常用设置,命令
转自http://baike.baidu.com/view/1239908.htmSql*plus是一个最常用的工具,具有很强的功能,主要有: 1. 数据库的维护,如启动,关闭等,这一般在服务器上操作。 2. 执行sql语句执行pl/sql。 3. 执行sql脚本。 4. 数据的导出,报表。 5. 应用程序开发、测试sql/plsql。 6. 生成新的sql转载 2012-01-05 17:06:34 · 5571 阅读 · 0 评论 -
关于 shared cursor,parent cursor,child cursor
Oracle 中的父cursor子cursor和什么时候能够共享转载 2011-01-29 21:03:00 · 3051 阅读 · 0 评论 -
不要乱动dual表
在删除用户,表空间,表的时候出现问题:SQL> drop user test1 cascade;drop user test1 cascade*ERROR at line 1:ORA-00604: error occurred at recursive SQL level 2ORA-01422: exact fetch returns more than requested number of rows原创 2011-01-11 11:06:00 · 1447 阅读 · 0 评论 -
Oracle 中如何删除一个用户拥有的所有对象
下面的脚本在oracle中如何将一个用户所拥有的所有对象,表,sequence,procedure。。。全部删掉。 1,drop 对象的方式,注意要先将所有的外键约束删掉。 DECLARETYPE cst_table_list IS TABLE OF VARCHAR2(40);TYPE cst_list IS TABLE OF VARCHAR2(40);TYPE name_list原创 2009-07-24 16:07:00 · 5297 阅读 · 0 评论 -
数据库范式1NF 2NF 3NF BCNF(转)
数据库范式1NF 2NF 3NF BCNF(转)设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第转载 2009-04-11 15:57:00 · 4547 阅读 · 1 评论 -
Oracle 加在表上的锁类型
下表是在Oracle文档里里面列出的操作会对表加上什么类型的lock,以及该锁和其他类型的操作的兼容性。Table 13-3 Summary of Table LocksSQL StatementMode of Table LockLock Modes Permitted?RSRXSSRXXSELE原创 2012-01-08 12:25:59 · 2079 阅读 · 0 评论 -
ORA-12520 TNS:Listener count not find available handler for requested type of server错误解决办法
专有服务器进程是与客户端进程是一对一映射,即时生成,即时消失。用户会话数据和游标状态放在PGA里共享服务器进程是已经存在的,分为2部分,一种是dispatch进程,一种是共享服务器进程。dispatch进程与user进程建立连接,把用户请求放入SGA的请求队列里,共享进程取出请求进行处理,处理完后放入SGA响应队列,dispatch进程取出处理结果给用户进程。一个dispatch可以和原创 2012-01-07 10:54:01 · 14916 阅读 · 2 评论 -
Oracle 服务器端客户端字符集设置对应用程序的影响
在Oracle数据库中如果服务器端客户端字符集设置不当,就会造成保存到数据库的数据不会正常保存,或者数据库里的数据在客户端不能正常显示,出现烂码的现象。尤其是以SQLPLUS操作的时候,由于SQLPLUS的"bug"(或者叫用户使用不当),会造成一些看起来不’正常‘的烂码现象,下面来解释一下:1,查看数据库的字符集:SQL> select * from database_propert原创 2012-01-14 11:15:39 · 3104 阅读 · 2 评论 -
Oracle 中的rowid
Oracle中的每个表都有一个rowid,它是一个18位字符组成字符串,例:AAANgBAABAAAO/KAAA.它包含的字符串由A-Z,a-z,0-9,+,/这些字符组成.是64进制.其中A-Z对应0-25,a-z对应26-51,0-9对应52-61,+对应62,/对应63.这个18位的字符串分成4段分别表示不同的意思(6,3,6,3),1-6位表示对象数据ID(段编号),7-9位代表数原创 2011-12-29 18:00:58 · 2440 阅读 · 0 评论 -
如何修复被设置为UNUSED的字段
如何修复被设置为UNUSED的字段,以下的方法可以恢复(以下步骤执行前要做好备份)。1、创建实验表TTTASQL> CREATE TABLE TTTA ( A INTEGER,B INTEGER,C VARCHAR2(10),D INTEGER);表已创建。SQL> INSERT INTO TTTA VALUES (1,2,'3',4);已创建 1 行。SQL> INSER转载 2012-01-28 20:43:59 · 2301 阅读 · 0 评论 -
alter system set events
alter system set events格式:alter system|session set events ‘[eventnumber|immediate] trace name eventname [forever] [, level levelnumber] : …….’ 通过:符号,可以连续设置多个事件,也可以通过连续转载 2012-01-23 14:29:04 · 3998 阅读 · 0 评论