11/08 02
没有评论 3,480 次查看

估计很多人在学习SQL表连接的时候都会被各种类型的表连接搞得稀里糊涂的,现在好了,有了下面的图,就可以很直观的区分各种表连接了。

image

SQL表连接图解
本文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息
作者:马齿苋 | 链接:http://www.dbabeta.com/2011/visual-sql-joins.html
10/07 05
5 条评论 3,516 次查看

通常情况下两个不同的网络之间总会开放某一些特定的端口用于通讯使用,而SSH所使用的22端口通常就在开放之列。基于SSH的端口转发就是利用SSH作为中间的代理,达到绕过两个网络之间的限制,顺利的进行任意的端口的访问。

端口转发可以分为三种,正向端口转发,反向端口转发和动态端口转发。

为了演示这三种端口转发方式的用法我们先假设存在有2个网域Office和Prod,在网域Office中有两个主机A和B,在网域Prod中两个主机C和D,这两个网域之间除了主机A能够访问C的22端口之外,其他所有的访问都被网络规则所禁止,也就是说A机器无法访问C的除22之外的所有其他端口,也无法访问到D主机;而主机C和D根本就无法访问A或者B中的任意一台主机。

阅读全文…

本文采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议发布,转载请保留此信息
作者:马齿苋 | 链接:http://www.dbabeta.com/2010/linux-port-forward-with-ssh.html
分类: Commands, Linux 标签: , ,
10/05 21
2 条评论 3,521 次查看



topUNDO相关统计

在日常管理中,除了要用到上一篇文章中所说的那些数据字典之外,还有一个保存统计信息的数据字典是非常重要的,那就是著名的由V$SYSSTAT、V$SESSTAT、V$MYSTAT组成的系统信息统计家族,系统统计动态视图中所包含的统计信息阵容非常庞大,其中就包含了一些与UNDO相关的统计信息:

SQL> set lines 145 pages 9999
SQL> col name for a60
SQL> SELECT * FROM v$statname WHERE NAME LIKE '%undo%' ;

 STAT# NAME                                                          CLASS    STAT_ID
------ ------------------------------------------------------------ ------ ----------
    89 DBWR undo block writes                                            8  111270822
   216 undo change vector size                                         128 1465971540
   217 transaction tables consistent reads - undo records applied      128 1054055970
   219 data blocks consistent reads - undo records applied             128 2915445793
   228 rollback changes - undo records applied                         128 3616249137
   242 auto extends on undo tablespace                                 128 3140365462
   244 total number of undo segments dropped                           128 3623640507
   262 global undo segment hints helped                                128 1791494885
   263 global undo segment hints were stale                            128 3309048233
   264 local undo segment hints helped                                 128 1047863356
   265 local undo segment hints were stale                             128 2070200837
   266 undo segment header was pinned                                  128  248401831
   271 IMU undo retention flush                                        128 2087226422
   277 IMU undo allocation size                                        128  244193920
   285 SMON posted for undo segment recovery                           128 2117898593
   288 SMON posted for undo segment shrink                             128  579492169

16 rows selected.

阅读全文…

10/05 19
3 条评论 4,088 次查看



topUNDO相关数据字典


topUNDO相关数据字典概览

9i是Oracle UNDO管理上面的一个分水岭,从手工管理到自动管理的分水岭。而与UNDO管理相关的数据字典也从手工UNDO管理的时代延续到了自动UNDO的时代,进入AUM时代之后,Oracle也新增了几个新的数据字典,但是那些延续下来的数据字典依然在UNDO的管理中发挥着重要的作用。

与UNDO相关的数据字典可以分成下面几类:

  1. 与UNDO管理直接相关的数据字典
    • 9i之前手工管理时就存在的数据字典
      • V$ROLLNAME:回滚段名称和回滚段ID对应表。
      • V$ROLLSTAT:在使用AUM时,该视图保存着所有UNDO表空间中每一个已分配的回滚段当前状态以及相关的统计信息,不显示状态在OFFLINE的回滚段。
      • DBA_ROLLBACK_SEGS:此字典显示所有回滚段的当前状态以及与存储空间分配相关的信息。
    • 9i之后新增的数据字典
      • V$UNDOSTAT:保存了某一时间段的整个UNDO表空间使用的统计信息以及UNDO自动优化的结果,默认情况下每10分钟增加一条记录,并只保留最近的576条(4天。在10g及之前版本中此记录为1008,或7天)的信息,超过期限的数据只能在DBA_HIST_UNDOSTAT中找到。此字典仅对自动UNDO管理模式有效。
      • DBA_UNDO_EXTENTS:保存了UNDO表空间中所有已分配的数据区的存储空间分配情况与使用情况,是得到UNDO数据当前存在状态的一个重要的视图。
      • DBA_HIST_UNDOSTAT:保存了所有V$UNDOSTAT所存在的数据的一个历史记录,10g开始新增字典。
  2. 与UNDO管理间接相关的数据字典
    • 事务相关
      • V$TRANSACTION:当前正在进行事务的信息,与UNDO管理相关的是当前事务所涉及的UNDO段,UNDO空间占用等等信息。具体的前面已经有介绍。
    • UNDO表空间相关
      • DBA_EXTENTS:与DBA_UNDO_EXTENTS类似。
      • DBA_SEGMENTS:与DBA_ROLLBACK_SEGS类似。
      • DBA_DATA_FILES:关联计算UNDO表空间大小而用。

UNDO表空间实质上和其他普通表空间一样,因此适用于其他表空间的数据字典都适用于UNDO表空间。

字典V$ROLLSTAT和V$UNDOSTAT在名字上面看起来有点rollback segment与UNDO segment的感觉,但是实际上这两个视图的差别还是很大的,V$ROLLSTAT记录的是整个UNDO表空间各个回滚段使用情况的统计,属于横向的;而V$UNDOSTAT记录的则是各个时间段上面整个UNDO使用情况的统计,属于纵向的

阅读全文…

10/05 17
3 条评论 4,967 次查看


本文主要是对UNDO管理中的一些概念进行强调说明,以及整理了一些UNDO管理中常用的数据字典等等做出详细的介绍。本文不会对UNDO的一些基本概念做详尽的介绍,如果你对于UNDO机制了解的还是不是很清楚的话请先阅读Oracle Concepts, Chapter 9 Data Concurrency and ConsistencyOracle Administrator’s Guide, Chapter 15 Managing Undo以及Oracle9i&10g编程艺术:深入数据库体系结构,第9章 redo与undo


top实验版本

Oracle数据库版本:

SQL> SELECT * FROM V$VERSION;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
CORE    11.1.0.7.0      Production
TNS for Linux: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production

操作系统版本:

SQL> !uname -a
Linux orainst.desktop.mycompany.com 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

阅读全文…

10/05 04
没有评论 3,965 次查看
10/05 04
3 条评论 4,494 次查看



topError Log与Alert Log

SQL Server维护着一个运行期间的操作日志,这个日志包括了启动信息、恢复事件、用户操作、备份信息、配置变更、非法登录、错误、警告信息等等。每次SQL Server服务启动的时候都会生成一个新的日志文件,这个日志就是SQL Server中著名的Error Log

这个日志是DBA进行错误诊断的一个主要的信息来源。默认情况下SQL Server会保留6个日志文件,老的文件先被先行删掉,这个默认值是可以修改的。当前使用错误日志的名字是ERRORLOG(没有扩展名),紧随其后的名字为ERRORLOG.1,接着是ERRORLOG.2,依此类推。

Oracle中与SQL Server Error Log等价的是Alert Log文件,Alert Log包含了数据启动关闭、实例恢复、配置变更、内部错误、初始化参数等等信息。

和SQL Server不一样的是,Oracle Alert Log不会在每次实例启动的时候都创建一个新的文件,不管这个Alert Log文件会增长到多大,Oracle都只会维护这一个文件。Alert Log的名字为alert_<instance>.log,其中的<instance>是Oracle实例名。Oracle DBA和SQL Server DBA一样是通过这么一个Alert Log来获得错误诊断所需要的信息。

SQL Server的Error Log和Oracle的Alert Log都是ASCII文本格式的,可以使用任意的文本编辑器打开(译注:Oracle 11g开始提供XML格式的错误日志文件,需要使用ADR打开查看,此前生成文本格式文件的功能依然保留着)。SQL Server Management Studio(Windows界面)也可以用来查看Error Log,Oracle中则可以通过Enterprise Manager Database Control(Web界面)来查Alert Log的内容。

SQL Server的Error Log文件存放的地方由注册表键值决定,默认的位置通常是SQL Server安装目录中的LOG目录之下。而Oracle中Alert Log的位置由初始化参数
BACKGROUND_DUMP_DEST决定,默认情况下通常是在$ORACLE_HOME下面的bdump目录中。

阅读全文…

10/04 29
没有评论 3,334 次查看



top启动与配置参数

在SQL Server安装的时候,同时也会往Windows注册表里面添加一些记录,这些注册表键值指定了实例所需要的各种参数。比如,有的注册表键值指定了错误日志的保存目录,另外的指定了默认的备份目录等等。SQL Server在运行的过程中会使用到这些注册表键值。另外还能给SQLSERVER.EXE指定一些启动参数,包括追踪标志(trace flags),这些附加的参数决定了实例启动之后的行为。除了注册表键值和启动参数之外,SQL Server还包括大量的内部配置参数,用于对实例进行调优。比如说“max server memory”就属于这些参数之一,它可用来调整实例所能使用的最大内存。不用说了,这些系统配置参数也是保存在系统元数据表(system metadata tables)中的。

下面例举的方法都可以用来修改SQL Server配置参数:

  • 使用系统存储过程sp_configure
  • 使用Management Studio或是Enterprise Manager的服务器属性对话框
  • 使用各种层面(facets)组件(2008)或外围应用配置器(Surface Area Configuration)工具(2005)

Oracle的配置参数来自两个对于启动实例和打开数据库都是非常重要的操作系统文件,第一个文件是初始化参数文件(initialisation parameter file),第二个是控制文件(control file)。初始化参数文件所包含的参数决定怎么样创建实例。记住Oracle实例只包含内存结构和后台进程。参数文件包含的值决定了Oracle要给自己分配多少内存,可以同时有多少用户可以连接到数据库等等。Oracle在读取到这个文件之后才会在内存中建立数据库实例。

参数文件可以是一个纯文本的ASCII文件或者是二进制文件,纯文本参数文件称为pfile,名字为init<SID>.ora,其中的SID就是实例的SID了(参照“实例名与SID”小节)。二进制参数文件称为spfile,名字为spfile<SID>.ora。纯文本参数文件和二进制参数文件之间最大的差别就是当使用pfile的时候,Oracle只在实例启动的时候读取一次,后续对pfile的修改都要等到实例重启之后才能生效。而使用spfile时,Oracle能在实例运行期间修改其内容。在本文写作之时,Oracle 11g已经有超过250个的初始化参数了,不过还好,作为DBA你是不需要挨个的去设置这些参数的,你只需要配置那么十来个参数就可以保证实例正常使用了,大多数参数值都会使用Oracle默认的设定值。你可以通过Oracle Enterprise Manager Database Control(稍后细说)或者是手工的修改这些初始化参数,手工方法即时通过ALTER SYSTEM命令来修改spfile,使用pfile时,DBA可以直接使用文本编辑器进行修改。(译注:不管是使用pfile还是spfile,都能够使用ALTER SYSTEM命令修改这些参数,只是使用pfile时这些参数的修改是无法保存下来的,同时能修改的也只是一些动态的参数,而使用spfile则可以将这些修改保存到spfile文件中永久保留下来。)

控制文件是实例启动之后Oracle第二个要读取的文件。控制文件所存放的位置也是由参数文件中的参数来指定的。控制文件是一个很小的二进制文件,它包含了与数据库相关的关键的信息,其中包括数据文件和重做日志文件的名字与位置、表空间信息以及检查点信息,Oracle使用控制文件来找到数据文件,然后才能打开供用户访问。控制文件损坏或者是不存在的话数据库都是无法打开的。考虑到控制文件的重要性,通常的做法都是设置多份相同的控制文件拷贝以保证容错能力,多路控制文件中的所有控制文件都会同时的被更新。

最后,第三种Oracle数据库要使用的文件就是密码文件(password file)了,这个文件保存了拥有启动和关闭数据库权限的用户帐户的用户名和密码,稍后会细说。

阅读全文…

10/04 26
2 条评论 3,984 次查看



top数据库实例结构

当Oracle实例启动之后,所看到的就是在服务器内存上的一个个不同内存块加上产生的与这些内存交互的后台进程。Oracle文档将这些内存结构和进程收的很详细。

由Oracle实例所占用的内存块成为SGA(System Global Area),它的大小可以通过调整Oracle初始化参数(initialisation parameter)进行修改,在SGA里边至少会创建3个不同的区域,它们分别是:

数据块缓存区(Database Buffer Cache)
这里缓存的是数据块。和SQL Server一样,用户不会直接的访问数据文件上的数据:当读取数据时,相关的数据块会从数据文件中拷贝到内存中;修改数据时也是修改内存中的数据,然后再由单独的进程将数据缓存区中被修改的数据写入到数据库中。
重做日志缓存(Redo Log Buffer)
SGA中的这个区域连续的记录着数据缓存区数据修改的记录,重做日志缓存中的内容会被写入到在线日志文件中去。
共享池(Shared Pool)
SGA中有一大块的内存用作共享池,共享池等价于SQL Server中的执行缓存(Procedure Cache)。它的主要作用就是缓存数据库中最近执行过的SQL语句。共享池由下面的模块组成:

数据字典缓存(Dictionary Cache)
数据字典缓存缓存了Oracle最近使用的数据字典信息。
库缓存(Library Cache)
这个区域包含了最近执行的SQL和PL/SQL语句和对应的执行计划。SQL区还能进一步分成共享区和私有区:共享SQL区保存的语句可以由多个用户使用而私有区保存的则是跟各个连接对应的绑定变量的信息。PL/SQL是Oracle对于行业标准SQL的程序扩展,当PL/SQL程序执行时,它的代码会拷贝到库缓存中的共享PL/SQL区中。除了缓存执行代码和执行计划外,库缓存还包含锁、阀以及字符集等信息。

根据你所使用的组件的不一样,Oracle的SGA中也可能存在其它一些可选的内存区域。在Oracle中使用Java应用时要使用到Java池(Java Pool),Oracle内置的备份恢复工具RMAN(Recovery Manager)要用到大池(Large Pool),当使用Oracle高级队列机制时要用到流池(Steams Pool)

阅读全文…

10/04 22
3 条评论 7,410 次查看


一般的公司通常会在他们的信息系统架构中引入多种数据库平台,同时引入三到四种不同的RDBMS解决方案的中大型公司也并不少见,当然这些公司里面的DBA们通常也需要同时拥有管理多种不同平台的技能了。

只在一种平台上展开工作的数据库专家们也通常会期待着在他们的下一份工作中能学到点不一样的东西,那些有勇气的人们则愿意花时间、金钱和精力去学习新的东西,也有其他因为换了新公司或者是为了找新的工作而去学习新的系统的人们,毋庸置疑的一点就是公司老板和人力专家们会更加青睐于那些拥有多个领域经验的求职者。

依我个人的经验来看,在学习一个新的数据平台的时候,最好的方法就是在新的环境中去发现那些你已知的东西,这样学习起来会简单很多。当然,当中也会遇到一些全新的概念需要去学习,或者是忘掉一些你现在已知的概念,但不管怎么说你不是从零开始的。比如说一个做SQL Server开发人员在要写Oracle存储过程的时候可能会先去找那些内置的函数然后比较它们之间不同点,她也可能会去比较变量声明以及错误处理的异同。

本系列文章中我将尝试对Microsoft SQL Server和Oracle RDBMS(以10g及以后的版本为主)进行一个深入的比较。我会主要集中于这两种数据库之间架构上的比较,当然不要期望我会给你一个详尽的比较清单,但是我会尽我所能的让你看清这两种当今世上应用最广的数据库之间的相同和相异之处。本文是以一个SQL Server DBA的角度去构思和写作的,不过相信这对Oracle专家门了解SQL Server这一面也是很有参考价值的。

废话少说,开工吧。

阅读全文…

无觅相关文章插件,快速提升流量