Oracle由两大块组成:
1. oracle数据库软件
2. oracle数据库
在生产环境中:
oracle数据库软件通常放在服务器本地硬盘上;
oracle数据库则放在存储上;
在学习环境中:
Oracle数据库软件和oracle数据库都放在同一台电脑上。
查看oracle数据库软件:
[oracle@redhat4 db_1]$ cd $ORACLE_HOME [oracle@redhat4 db_1]$ pwd /u01/app/oracle/product/10.2.0/db_1 [oracle@redhat4 db_1]$ ls assistants cfgtoollogs crs dbs has install.platform jdbc jre lib32 mesg nls olap oracore oui plsql rdbms redhat4_jiagulun root.sh sqlj srvm tg4ingr uix bin clone css demo hs inventory jdk ldap log mgw oc4j OPatch oraInst.loc owm precomp redhat4_cgh redhat4_test root.sh.old sqlnet.log sysman tg4sybs wwg cdata config ctx diagnostics install javavm jlib lib md network odbc opmn ord perl racg redhat4_demo relnotes slax sqlplus tg4ifmx tg4tera xdk
查看oracle数据库:
[oracle@redhat4 oracle]$ cd/u01/app/oracle/oradata/ [oracle@redhat4 oradata]$ pwd /u01/app/oracle/oradata [oracle@redhat4 oradata]$ ls CGH DEMO JIAGULUN TEST [oracle@redhat4 oradata]$ ls JIAGULUN/ controlfile datafile onlinelog
oracle数据库有三类文件:*.ctl、*.log、*.dbf
oracle数据库和oracle实例之间的关系:
oracle数据库是存储在硬盘上的三类文件。oracle数据库启动起来以后会在内存中划出一块区域,同时启动一堆进程。这块内存区域和一堆进程就叫做oracle实例。
只有在oracle数据库启动起来以后才有oracle实例,oracle数据库关闭之后oracle实例就不存在了。
一般而言一个数据库对应一个实例,特殊情况是一个数据库对应N个实例(N为偶数),特殊情况就叫做oracle的RAC技术,RAC技术可用作负载均衡。用户通过实例访问数据库。
数据库启动之后的情况:
1.在内存中划出一块空间给oracle
[oracle@redhat4 ~]$ ipcs ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x36010028 425995 oracle 640 287309824 17 ------ Semaphore Arrays -------- key semid owner perms nsems 0x7df2e688 98304 oracle 640 154 ------ Message Queues -------- key msqid owner perms used-bytes messages
2.有一堆的oracle进程被启动:
oracle数据库启动以后有两大块内存结构,一大块叫SGA,一大块叫PGA。SGA是所有进程共享的,PGA是给进程使用的。
Oracle数据库启动之后会产生两大类的进程:前台进程和后台进程。每一个连接都会产生一个前台进程。在生产环境中前台进程的数量要远远大于后台进程。
一个oracle的进程可以访问SGA,同时进程还有自己独有的内存空间,独有的内存空间在PGA中。进程把公有信息写入SGA,把私有信息写入PGA。
Oracle有六大内存、五大进程、三大文件。
五大进程:CKPT、SMON、PMON、DBWR、LGWR;
控制文件:存放整个数据库的物理结构、数据库当前运行时的信息。控制文件很小。
数据文件:oracle的数据,如表信息。数据文件很大。
重做日志文件:对数据文件所做的修改都会记录在日志文件中,记录着数据文件的每一个数据块的所有变化过程。