oracle 课程笔记

2007-12-22 00:24 来源: 作者: 网友评论 0 条 浏览次数 254
CHAPTER 1 Networking Overview
1. 网络结构

 
BS结构
CS结构
架构
Client -à Server     2
Client -à Middle tier -à Server     3
特点
客户端和服务器端使用相同的网络协议
客户端可以为瘦客户端或PC
 
 
中间层实现负载均衡,一台可面对多台服务器。作用是在clientserver中起到一个翻译的作用,比如两端的网络协议不同等
 
 
服务器端存储真实数据
举例
 
ie -à iis(web server) -à database server

 
2. oracle网络方案 --- connectivity连接
oracle net services特点:
a. 使得clientserver的连接与网络协议无关,oracle net services使用API针对不同协议提供不同的适配器,因此只要物理上可以连通,那么oracle实现连接不存在问题。
b. 使得clientserver的连接与所在平台无关
c. 提高了GUI图形用户界面工具简化管理且有多种配置选项 tnsnames.ora
d. 提供了跟踪和诊断工具,且有最基本的安全保证
 
oracle的连接还可使用IIOP/HTTP协议实现,比如使用isqlplus web上直接连oracle server。因此在使用isqlplus时,需要输入的连接串名不是tnsnames.ora中配置的name servers而是指定服务器上监听到的instance name
HTTPHYPERTEXT TRANSFER PROTOCOL
IIOP:INTERNET INTER-ORB PROTOCOL
 
3. oracle网络方案 --- Directory Services
Directory naming 目录命名:是使支持足LDAP协议的目录服务器来为网络命名的一种方法。它要求服务器端有兼容LDAP的目录服务器,客户端也要有LDAP的相关配置。
 
目录服务:就是OID(oracle internet directory).是兼容了LDAP的目录服务。集成在oracle9i,简化了网络管理,且提供了安全可依赖的目录结构
 
LDAPLightweight Directory Access Protocol 轻量级目录访问协议
 
4. oracle网络方案 --- scalability可量测性
法一:使用oracle shared server,以前称为:MTS多线程服务器。这个是针对系统资源有限仍可支持过多用户访问的方法,即多个用户共享同一个服务器进程,多个连接被一个适配器路由,提高了资源的利用率,降低了用户的使用效果
 
法二:使用CM(connection manager),就是所谓的中间服务器,oracle缺省是不安装的,若要使用需要增加额外的组件。CM的优点是:a.多功,即多个用户连接转化为一个连接访问数据库
                       b.使得clientserver可以跨协议连接,即连接与协议无关
                       c.可以设置网络限制,控制可以访问数据库的用户有哪些
1成功连接CM产生到server2后,client产生的所有对 server的访问,通过CM的全部使用2。有效的降低了数据库的连接数
 
5. oracle网络方案 --- Advanced Security
条件:
clientserver端都要安装 Advanced Security组件
特点:
A.加密传输数据:client -à data -à加密 -à network transfer -à解密 -à服务器
B.授权用户访问:通过第三方的设备和SSL(Secure Sockets Layer)确定用户的访问权限
C.数据完整性:在网络传输过程保证数据的完整性
 
Oracle的普通安全保证来自于:oracle net and firewalls。放火墙有2种,一种是基于供应商的防火墙,条件是需要使用CM(connect manager),另外一种是stateful packet的防火墙
 
6. oracle网络方案 --- accessibility
不同数据库系统间的访问:使用透明网关,实现在不同数据库系统下,用户可以无缝透明的相互访问
外部程序的访问:
A.      oracle的监听器可以监听外部程序的呼叫,在listen.ora文件中,”KEY = EXTPROC”来实现oracle服务
    器对外部程序呼叫的监听。如果客户端需要调用外部程序,也需要开启监听
B. PLSQL可以调用外部程序3GL(第三代编程语言),比如JAVA
 
知识点:
Oracle net services      / IIOP and HTTP connectivity    / oracle internet directory
oracle shared server    / connection manager              / oracle advanced security
heterogeneous services
 
 
 
CHAPTER 2 Basic Oracle Net Architecture
1.      oracle的连接类型有2种:
client-server application:可使用任意网络协议
web application connection:使用TCP/IP协议
 
2.      Client-Server Application ConnectionNo Middle-Tier
Forms/sqlplus 发出命令,用OCI(oracle调用接口)传给TTC
TTC(two tasks command)完成字符集和数据类型的转换,传到oracle net
Oracle net对刚才的命令打成逻辑包,传到OPS
OPS为协议适配器,将刚才的逻辑包转化为物理包,通过网络协议船给server
 
上面图执行的顺序是个U型,由clientserver,再由serverclient
 
3.      Web Application Connections2种实现方法:
A.   使用web server作为中间层与JDBC oracle call interface驱动或瘦JDBC配置
B.   直接连接database server,通过IIOPHTTP协议。比如isqlplus
 
4.      Web Application Connection

JAVA Application Client
JAVA Applet Client
   

这个与client-server application connection几乎一样,只是把SQLPLUS工具改为了JAVA工具放在中间层,而用户使用是从WEB上调JAVA。而在JAVA与数据库连接中需要一个JDBC接口
相对于oracle server而言,middle-tier为一个client端,因此连接方式很多,比如TCP/IP等。中间层的作用就是:翻译,负载均衡,网关
 
5.      Web Application ConnectionNo Middle-Tier
使用该类连接方式的条件是:服务器端必须支持HTTPIIOP。即在数据库上启动相应的服务
该类连接典型的例子就是:isqlplus
 
使用isqlplus
Windows上:启动ORACLEHTTP服务
Linux上:启动isqlplus服务,即敲入:[oracle@sating bin]$isqlplusctl start
 
然后在web browser上敲入地址:http://数据库服务器IP:isqlplus的端口号/isqlplus
注:isqlplus的端口号可以在$ORACLE_HOME/install/portlist.ini中查看到,该文件是oracle提供的所有默认端口号的列表,isqlplus默认是:5560
 
CHAPTER 3 Basic Oracle Net Server-Side Configuration
1.      sqlnet.ora:网络配置概要文件,在服务器端和客户端都有
tnsnames.ora:以local name本地命名方式实现数据库连接时,在客户端存在的用来解析service_name的文件
listener.ora:是个耳朵的功能,监听客户端的连接请求,在服务器端存在的,记录 server端登记的service_name
 
2.      监听的实现方式
client端发出一个连接请求,且client发送的service_nameserver端登记的service_name匹配时,listener会根据情况实现2种监听方式:
A.   启动一个独占服务器进程process   “Bequeath Session”
B.   把该连接重定向到一个已经启动了的process,(processDB启动时启动),常用于MTS  
 “Redirect Session”
A,B两种方式的第1步和client端配置的命名方法有关,常用的都是服务名service_name解析,。A类从第4步开始通讯,B类从第5步开始通讯。
 
3.      配置listerner:静态配置法动态配置法

 
static service configuration
Dynamic service configuration
 
特点
A.   应用与8和更早的版本
B.   需要服务器端有listener.ora文件
C.   需要OEM和其他一些oracle提供的配置工具
A.   不需要服务器端有listener.ora文件
B.   该类监听使用PMON进程监控进程,
C.   参数instance_nameservice_name必须指定

 
4.      静态配置法的listener.ora文件
LISTENER
 (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST =sating)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
 )
 
SID_LIST_LISTENER =
 (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = BOSS)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
      (SID_NAME = BOSS)
    )
 )
 
---LISTENERoracle默认的监听名称
–--HOST为主机名,如果使用的是TCP/IP协议,也可写服务器IP地址
---PORT=1521oracle默认分配的标准监听器的端口号,也可使用别的端口号
---SID_LIST_LISTENER代表名为LISTENER的监听器所服务的DB,可同时服务多个DB
---GLOBAL_DBNAME的值可以任意定,因为它是作为别名存在的,代表服务器端的service_name,只要client端在配置tnsnames.oraservice_name的值是这个listener上的global_name的值,连通就没问题。一般写 SID.DOMAINNAME。但ORACLE_HOMEORACLE_SID必须写准确信息
---ORACLE_HOME就是ORACLE_SID指定DB$ORACLE_HOME参数值
 
5.      动态配置listener
步骤一:输入lsnrctl,查看输出的缺省监听名。(如果要查看非缺省监听器的状况命令是:lsnrctl+监听器名)
STATUS of the LISTENER
------------------------
Alias                     LISTENER
步骤二:A. 如果缺省的监听器名为:LISTENER,则确定参数service_nameinstance_name设置了正确的值
        B. 如果缺省的监听器名不为:LISTENER,则不但要确定参数service_nameinstance_name设置了正确的值,还要指定local_listener参数。如果当前是共享服务器,还需要指定参数dispatchers
步骤三:重起数据库即可
 
注意:
A. 此时没有listener.ora文件,也没有手动输入lsnrctl start,因为oracle在启动时通过PMON直接启动监听器,可使用lsnrctl status查看监听器的状况  
B. client端配置相应的tnsnames.ora,此时service_nameserver端指定的参数service_name的值
C. service_nameinstance_name可以任意指定,但必须这2个参数的值相同。在连接时tnsnames.ora,中service_name给相应值即可
D. 无论动态注册还是静态注册,client端都需要有相应的内容记录在tnsnames.ora
E. 动态注册,在数据库启动后每一分钟注册一次
 
6.      listener的注意事项
A.    listener只在发出连接时有用,一旦连接上了,就不再起任何作用,此时client-server的连接只和服务器分配的process有关。
B.    一个listener可以服务多个DB。多个listener也可以服务一个DB,此时起到负载均衡的作用当一个listener忙的时候可使用另外一个
C.    oracle网络这一块,有2个别名,可任意给值。一个就是listener.ora中的global_name,只要与tnsnames.ora中的service_name值相同即可。另外一个就是tnsnames.ora中指定的连接串的串名,只要在连接数据库时@后写该串名即可(eg.sqlplus s/s@satingphoenix)
D.    listener.ora文件只在启动listener时有用,一旦启动后,删除该文件也不影响oracle的连接,但无法重起listener
E.     静态配置监听器需要在数据库启动后,手工启动监听器,数据库关闭时,手动关闭监听器
动态配置监听器,在数据库启动时自动启动监听器,数据库关闭时自动关闭监听器
 
7.      JVMJAVA的虚拟机
 
8. LSNRCTL命令
LSNRCTL>help
LSNRCTL>show + 参数名
LSNRCTL>set + 参数名 +
 
总结:
监听的实现方式有2种,一个是有监听启动独立进程,另一种是有监听使用共享进程
 
监听的配置方法有2种,一个是有动态配置,使用参数service_nameinstance_name来解析服务名,使用PMON
进程管理监听进程。另一个是静态配置,使用listener.ora文件配置监听,其中的global_name来用于解析服
务名,需要DBA手动开启和关闭监听进程             
 
 
 
 
 
 
 
 
 
 
 
 
CHAPTER 4 Basic Oracle Net Client-Side Configuration
1. 客户端的网络配置有很多方法,常见的有2种配置方法:host naming local service name(tnsnames)。当前客户端可使用的方法,定义在sqlnet.ora ”name.directory_path = (HOSTNAME,TNSNAMES)”
 

 
Host naming
Local service name(tnsnames)
区别
主机名解析法,在server端实现解析
本地服务器名解析法,在client端实现解析
实现条件
A.client端和server端的连接协议为TCP/IP,且端口号为1521
B.主机名是通过DNS或者是客户端上/etc/hosts文件中记录的服务器IP地址来解析的
C.不可使用CM和一些oracle的高级安全设置
 
 
连接
conn s/s@”主机名
Conn s/s@tnsnames.ora中配的串名
要求
A.    在客户端和服务器端的sqlnet.ora中指明解析方法为name.directory_path = (HOSTNAME)
B.    client端不需要tnsnames.ora文件,但需要在/etc/hosts文件中写请IP和主机名的对应关系
C.    server端的listner.ora文件中,必须指明主机名 (global_dbname = 主机名)
 
A. 在客户端和服务器端的sqlnet.ora中指明解析方法为name.directory_path = (TNSNAMES)
B.      client端需要tnsnames.ora文件,该文件中service_name需要与server端的listener.ora中的global_name相对应,因为是根据这个名字进行的解析。而连接串名可自己定义
C.      补充,在oracle 8前,tnsnames.ora中的service_nameDB_SID
D. Tnsname.ora中配置的端口需要与server端的listener.ora中一致

 
 
总结:
oracle的网络配置策略需要从3个方面进行定义,首先确定监听是静态的还是动态的,其次确定命名的解析方法是主机名解析方法还是本地解析方法,如果是本地解析方法需要再去配置本地解析的命名文件(tnsnames.ora)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CHAPTER 5 Usage And Configuration Of The Oracle Shared Server
1. oracle shared server9I前被叫做MTS,多线程服务器。作用是在同等的资源下,支持更多的并发访问
 
2. 独占服务器模式共享服务器模式比较

 
共享服务器模式 shared server
独占服务器模式 dedicated server
连接方式
User process -à dispatcher
-à shared server process
-à SGA + background process
 
Oracle服务器通过dispatcher调配器为用户进程分配一个共享的服务器进程
User process -à server process
-à SGA + background process
 
Oracle服务器为每个用户连接分配一个专用的服务器进程
SGA
 
shared pool and other memory structure
+ user session data
+ cursor state
shared pool and other memory structure
 
用户连接的数据保存在PGA
PGA
statck space
用户连接的数据保存在SGA中,因此该模式需要更大的SGA内存
statck space
+ user session data
+ cursor state

 
3. 共享服务器模式优点:
减低访问instance的进程数量,增加用户的并发数,使数据库服务器负载均衡,减少空间的服务器进程,减少内存的消耗和系统负担
 
4. connecting
1发出connect连接请求到listenerlistener确定连接是否合法
2listener返回关于dispatcher的信息,指明那个dispatcher是可使用的
3连接dispatcher,只有再由dispatcher分配shared server process
注意:若listener为配置为共享服务器模式,但没有启动dispatcher,则连接失败。
5. Processing a request
1连接到空闲的dispatcher
2dispatchercommand放到请求队列里,等待空闲的server process
3command被空闲的server process 接受并处理
4把处理结果传给响应队列
5响应队列再传给空闲的dispatcher
6dispatcher把结果返回给用户
注意:请求队列对于server process是共享的
      响应队列对于server process是独占的
 
6. 配置共享服务器
服务器端定义dispatchersshared_servers参数
SQL>alter system set
dispatchers=’(PROTOCOL=TCP)(SERVICE=SS)(PROTOCOL=TCP)(DISPATCHERS=2)’;
service_name=’SS’的监听服务启动2个可以使用TCP/IP协议连接的dispatchers
 
SQL>alter system set dispatchers=’(PROTOCOL=TCP)(DISPATCHERS=2)’;
为所有监听服务启动2个可以使用TCP/IP协议连接的dispatchers
 
SQL>alter system set shared_server=6;
为共享服务器分配6shared server processes
 
客户端修改tnsnames.ora的连接解析方式
当用户使用SS连接串连接时,使用的是共享服务器进程
当用户使用SATING连接串连接时,使用的是独占服务器进程
这样,一个service_name,根据tnsnames.ora中的解析方式不同,所使用的服务器使用方式也不一样
 
SS =
 (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.8.177)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = ss)
    )
 )
 
SATING =
 (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.8.177)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ss)
    )
 )
 
7. server端还有一些其他的参数可以设定
max_dispatchers:最多的dispatchers数量,上面dispatchers参数设定的是启动了多少dispatchers,如果max_dispatchers5,那么最多可启动4个,若试图启动5个则报错ORA-00112
max_shared_server
circuits:内路和外路可使用的网络连接的总共虚拟路线的条数
shared_server_sessions:作为共享服务器方式连接上的session的最大数,
参数sessions - 参数shared_sever_sessions = 可以独占方式登陆的总session
 
相关的一些参数:
large_pool_size:在共享服务器中,独立分配出的一块内存区域
session:控制可用独占方式登陆的session数量
 
8. 查看登记到listenersdispatchers的情况:lsnrctl service
 
9. 可查看的数据字典

v$circuuit
有几个共享服务器的连接,该view就有几条记录
v$shared_server
v$dispatcher
v$shared_server_monitor
v$queue
v$queue
v$session

 
4. 注意:
A.共享服务器模式和独占服务器模式是可以同时存在的
B.在使用as sysdba选项连接数据库服务器时,只能使用独占服务器模式登陆
CS001,S002… … 代表shared server processes D001,D002… … 代表着dispatchers
CHAPTER 6 Backup And Recovery Overview
1. MTBF:mean-time-between-failures --- 出错的频率
   MTTR:mean-time-to-recovery --- 恢复所需要的时间
 
2. 注意:
A.当大量IMP数据时,将选项resumeable=Y,保证当表空间不足时,还可继续导入数据
B. 对于用户进程产生的错误,PMON进程会自动去处理,回滚+释放锁和资源
Calter system kill session ’SID,Serial#’;
D. point-in-time recovery:不完全的时间点恢复
Elogminer 确定误操作的时间点,执行对象级的恢复
Fflashback 借助于回滚段的data产生快照,该data保留时间是undo_retention参数设定,单位秒,恢复时借助dbms_flashback
G.实例失败的恢复:不需要DBA特别的做什么,在重起DB时,DB自动进行recovery。重起DB后应查看alert.ora文件,确定实例失败原因,background_dump_dest参数定义该文件路径
H.媒体失败的恢复:依据备份策略
 
3. 要制定针对备份的,周期性测试,保证备份是有效的
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CHAPTER 7 Instance And Media Recovery Structures
Large pool
如果不特别配置,该区域来自SGA,但可通过large_pool_size来指定其独立存在于内存之中。用来进行oracle的一些备份和恢复的操作。同时也负担部分I/O服务进程和存放共享服务器的session
 
Control file
应该放在instancedatabase之间,她起到桥梁的作用。控制文件应进行备份,做多个镜像
 
Database buffer cache, DBWn, datafile
DBWn中的n可为0--9,a--j,可启动最多20个数据库写进程,具体启动了几个可查看v$bgprocessPADDR!=0的,与参数db_writer_processes有关,缺省为1
 
Redo log buffer, LGWR, Redo log file:
LGWR只有1个进程,不能多分配。Redo log files应分成多个groupLGWR是一个group一个group的写日志文件的,每个组中的日志文件互为镜像大小一致,应尽量把每组的镜像放到不同的硬盘上。见下图
 
CKPT Process
datafile头和control file写入SCN
1. alter system checkpoint;
2. 设置参数log_checkpoint_interval, log_checkpoint_timeout, fast_start_io_target,
fast_start_mttr_target (mttr:mean-time-to-recovery)
3. 一些SQL,比如:alter tablespace … …
 
ARCn process, archived log file
ARCn中的年n可以是0--9,a--t,可同时启动30个归档进程。启动的进程可查看v$bgprocessPADDR!=0,或是v$archive_processesstatus=’ACTIVE’
 

DBWn
Database buffer cache à DBWn à datafiles
CKPT
Datafile header + control file + redo log file
LGWR
Redo log buffer à LGWR àredo log files
ARCn