oracle系统

Oracle数据库SQL优化的最佳思路

断了今生、忘了曾经 提交于 2020-03-10 10:33:42
如何在 Oracle数据库里写出高质量的SQL语句,如何在Oracle数据库里对有性能问题的SQL做诊断和调整,这是DBA们在ORACLE数据库实践中不可避免的难题。下面就让我们来分析一下拿到一条问题sql后DBA可以如何去开始优化思路。 对于有问题的SQL做SQL优化的具体步骤一般为: 1、查看该SQL语句的执行计划,并结合其资源消耗情况和相关统计信息、Trace文件来分析其执行计划是否合理; 2、通过修正措施(如调整该SQL的执行计划等)来对该SQL做调整以缩短其执行时间,Oracle数据库里SQL优化的终极目标就是要缩短目标SQL语句的执行时间。要达到上述目的,我们通常只有如下三种方法可以选择: 1、降低目标SQL语句的资源消耗; 2、并行执行目标SQL语句; 3、平衡系统的资源消耗。 方法1:降低目标SQL语句的资源消耗”以缩短执行时间,这是DBA们最常用的SQL优化方法。这种方法的核心是要么通过在不更改业务逻辑的情况下改写SQL来降低目标SQL语句的资源消耗,要么不改SQL但通过调整执行计划或相关表的数据来降低目标SQL语句的资源消耗。 方法2:并行执行目标SQL语句”,这实际上是以额外的资源消耗来换取执行时间的缩短,很多情况下使用并行是针对某些SQL的唯一优化手段。 方法3:平衡系统的资源消耗” 可以避免不必要的资源争用所导致的目标SQL语句执行时间的增长

Oracle体系架构 和 导入/导出

僤鯓⒐⒋嵵緔 提交于 2020-03-09 17:23:12
Oracle体系架构 和 导入/导出 服务名,实例名,orcl 1.Oracle通过数据库实例来加载和管理数据库,每个运行的Oracle数据库都对应一个Oracle实例(Instance),也可以称为例程。 2.当数据库服务器上的一个数据库启动时,Oracle将为其分配一块内存区间,叫做系统全局区(SGA),然后启动多个进程。 3.SGA和Oracle进程结合在一起,就是一个Oracle实例。 4.为了区分不同的实例,每个Oracle实例都有一个系统标识符SID,通常SID与数据库同名。 监听文件 服务器端 E:\oracle11g\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora TNS文件 客户端 E:\oracle_client\product\11.2.0\dbhome_1\network\admin\tnsnames.ora 表空间 表的存储文件,E:\oracle11g\oradata\orcl 默认USERS.DBF 文件 权限和角色 1.CONNECT:临时用户,特别是那些不需要创建表的用户,通常赋予该角色。 2.RESOURCE:更为可靠和正式的数据库用户可以授予该角色,可以创建表、触发器、过程等。 3.DBA:数据库管理员角色,拥有管理数据库的最高权限

简单介绍之数据库历史与市场

◇◆丶佛笑我妖孽 提交于 2020-03-09 00:12:06
我知道你一定听过Mysql,听过oracle,也可能听过redis,hive和mariaDB等等,他们都被人们称作数据库。但是你知道为什么数据库要分这么多种么?这么多数据库存在的价值是什么?这篇我们放轻松,浅略一下数据库的种类和各自特性。 一,从数据库的历史说起 我之前在 技术面试 中区分过数据库和DBMS的区别,这里指的数据库概念要自己区分好。 数据库是用来存储数据的,随着计算机技术的发展,数据库被赋予了更多的功能并作为后端不可缺少的一部分。数据库的发展历史大致可以分为: 磁盘文件存储->导航类型数据库(层次结构模型->网络结构模型)->关系结构模型数据库->后关系模型数据库 导航类型数据库 上世纪60年代的数据库模型有点类似于传递指针,命令请求数据就像导航一样在存储介质中快速进行查找,由此人们终于可以抛弃基于磁带系统的批处理的方式进行数据查找,而是可以通过数据库共享交互式使用数据。 关系型数据库 转眼到了70年代,导航型数据库得到改进,因为他缺乏了很多紧缺的功能,比如搜索,事务的安全性,存储数据的规范等等。抛弃链接和指针,一个关键的概念“表”产生了,从此,慢慢开始为关系型数据库演化出查询语言SQL,建设关系型数据库的关系模型,表和表之间的运算,增加索引等等,关系型数据库的演化周期很长,到今天仍然不断更新来适用人们的需求。从而市场上开始涌现越来越多的数据库

共享池中保留池的调整(shared_pool_reserved_size)

为君一笑 提交于 2020-03-08 18:28:31
--************************************************* -- 共享池中保留池的 调 整 (shared_pool_reserved_size) --************************************************* 1 . 何 谓 保留池 简 言之,保留一部分 内 存空 间 以 备 不 时 之需。通常情 况 下, Oracle 会将 大的 内 存 请 求分割成小的 内 存 块来满 足需求。而 对 于大的 内 存且 为连续 的 内 存空 间请 求,如果在共享池中未找到, 则会动 用 共享池中的保留池。 当 然,共享池在 内 存 压 力的情 况 下,也 会 使用到 保留池中的部分。保留池部分 满 足 较 大的 内 存需求更高效。缺省情 况 下, Oracle 会 配置 较 小的保留池, 这 部分可以用作 PL/SQL 或 触发 器 编译 使用或用于装 载 JAVA 对 象的 临时 空 间 。 这 些分配出去的 内 存一旦 释 放后 将 返回 给 保留池。 任意大于 "_shared_pool_reserved_min_alloc = 4400" 字 节 的 连续内 存分配 请 求,如果 shared_pool 中分配不能解 决 ,且 当 前 shared_pool 中 没 有可用的 块 能 够 aged

Java jdbc操作oracle数据库的两种方式

淺唱寂寞╮ 提交于 2020-03-08 18:15:15
本文由广州疯狂软件java培训分享:   第一种应该是比较古老的方法了。   Windows下采用JDBC-ODBC Bridge连接oracle数据库   1、 安装oracle客户端程序,在tnsnames.ora中配置好相应的数据库连接串文件,此处设连接串名为“dbora”。   2、 在windows的控制面板->“数据库源ODBC”中,建立相应的用户或者系统DSN,具体方法:在安装的数据源的驱动程序选择“Microsoft ODBC for Oracle”。   点击“完成”,在弹出的对话框中,填入如下信息:   数据源名称:dbjdbc   描述:jdbc数据源   用户名称:manager -此为数据库用户名   服务器:dbora -此即为连接串名   其中“dbjdbc”是在java程序中要引用的名字,至此数据源dbjdbc已建立。   3、 建立如下的java程序   // 使用本地的jdbc连接串,查询oracle数据库表   import java.sql.*;   public class lookup {   public static void main(String[] args)   throws SQLException, ClassNotFoundException {   //定义了数据库连接串   String dbUrl = "jdbc

Oracle64位问题(ODAC112021Xcopy_x64)

久未见 提交于 2020-03-08 12:38:11
Cd F:\Software\DBSoft\ODAC112021Xcopy_x64 F: F:\Software\DBSoft\ODAC112021Xcopy_x64\install.bat all D:\app\Administrator\product\11.2.0\client_1 OraClient11g_home1 -------------------------------------------------------------------------------------------------------------------- 4. Add the install directory and install directory's bin subdirectory to the system PATH environment variable before any other Oracle directories. Otherwise, the products that are installed may not work properly as it will not be able to load the necessary DLLs. for example, if c:\oracle was provided as the install

【实战经验】64位Win7安装+32位Oracle + PL/SQL 解决方法

我只是一个虾纸丫 提交于 2020-03-08 11:22:43
  软件环境:64位win7、32位Oracle 10g、 PL/SQL 9.0.4.1644   前言:以前开发用的都是32位系统,突然换到64位上,安装环境真的有点麻烦了,尤其对于PL/SQL只支持32位等。看了很多的资料,但一些问题并不能直接解决。花了一天时间终于安装成功了,下文将安装过程中遇到的问题记录下,以便作为以后的参照,也希望对大家解决类似问题有用。 情景:安装完win7后,新建了一个用户,但在安装完Oracle后,点击Net Configuration Assistant,,没有任何反应 。     原因: 权限问题,需要有高级管理员权限;     解决方法: win7系统内置administor高级管理员账户。开启后在此账户下安装即可。 开启方法:右键【我的电脑】-【管理】-【计算机管理】-【系统工具】-【本地用户和组】-【用户】-右键【Administrator】-【属性】-取消【账户已禁用】选中状态-重启电脑即可,如图:   2. 情景:安装pl/sql,连接不到Oracle,出现异常:Oracle-12154     原因: pl/sql是32位的,不能加载64位的oci.dll(oracle的文件) 解决方法:   去Oracle官网下载instantclient-basiclite-win32-10.2.0.4.zip 或instantclient

一台主机同时支持x86与x64客户端安装

空扰寡人 提交于 2020-03-08 11:20:42
上一篇写如何免安装Oracle来使用PL/SQL Developer, http://www.cnblogs.com/volnet/archive/2012/05/22/2513728.html 这一篇则需要在一台主机上同时支持.net程序,不论编译成x86还是x64都要OK。 1、下载Oracle Data Access Components(ODAC) Xcopy的两个版本: x86: http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html x64: http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html 2、阅读里面的readme。 以其中一个为例,另一个操作步骤一致。 3、解压到任意文件夹(临时的,一会可以删掉) 3.1 开始->运行->cmd->cd 该文件夹 3.2 运行命令 install.bat all {目标路径:也就是最后要被安装的目录} odac 其他参数请参考readme。 3.3 将其加入到系统环境变量中: PATH的值中增加:C:\Oracle\ODAC112030Xcopy_32bit;C:\Oracle\ODAC112030Xcopy_32bit

linux中文显示为乱码

时间秒杀一切 提交于 2020-03-08 02:38:50
linux文档打开后显示中文为乱码,问题展示: export ORACLE_BASE = /data/oracle #oracle�~U��~M���~S��~I��~E�~[���~U export ORACLE_HOME = $ORACLE_BASE /product/11.2.0/db_1 #oracle�~U��~M���~S路��~D export ORACLE_SID = orcl #oracle�~P��~J��~U��~M���~S��~^��~K�~P~M export ORACLE_TERM = xterm #xterm��~W�~O�模��~O��~I��~E export PATH = $ORACLE_HOME /bin:/usr/sbin: $PATH #添�~J| 系��~_�~N���~C�~O~X�~G~O export LD_LIBRARY_PATH = $ORACLE_HOME /lib:/lib:/usr/lib #添�~J| 系��~_�~N���~C�~~ O~X�~G~O export LANG = C #�~X�止��~I��~E��~G��~K�~G��~N�乱�| ~A export NLS_LANG = AMERICAN_AMERICA.ZHS16GBK #设置Oracle客�~H�端��~W符�~[~F\ ~L��~E须��

RAC配置(启停库)

天大地大妈咪最大 提交于 2020-03-07 17:37:19
关库顺序 :先关闭数据库 然后关闭节点资源 [root@rac1 ~]# srvctl stop database -d 数据库名 [root@rac1 ~]# srvctl stop instance -d 数据库名 -i 实例1 [root@rac1 ~]# srvctl stop instance -d 数据库名 -i 实例2 [root@rac1 ~]# srvctl stop nodeapps -n 节点1 [root@rac1 ~]# srvctl start nodeapps -n 节点2 启库顺序相反 [root@rac1 ~]# srvctl start nodeapps -n 节点1 [root@rac1 ~]# srvctl start nodeapps -n 节点2 [root@rac1 ~]# srvctl start instance -d 数据库名 -i 实例1 [root@rac1 ~]# srvctl start instance -d 数据库名 -i 实例2 [root@rac1 ~]# srvctl start database -d 数据库名 [root@rac1 ~]# srvctl stop database -d prod root用户关库命令 [root@rac1 ~]# srvctl start database -d prod