涂抹Oracle笔记1-创建数据库及配置监听程序

一、安装ORACLE数据库软件及创建实例
OLTP:online transaction processing
指那些短事务,高并发,读写频繁的数据库系统。--DB_BLOCK_SIZE通常设置较小。
OLAP:online analysis processing
指那些处理长事务,低并发,多读少写的数据库系统。---DB_BLOCK_SIZE通常设置较大,如32K.

ASM:automatic storage management
自动存储管理系统,独立于操作系统的一种存储管理系统,直接通过操作系统看不到存储的数据。

Raw Device:裸设备
没有文件系统的存储设备。如新的硬盘,没有分区或者不分区,没有格式化直接挂到操作系统上使用。

oracle数据文件默认存储位置:$Oracle_base\oradata\sid_name\目录下

OMF:Oracle Manage File
Oracle管理文件,在创建数据库如果选择该种文件路径方式,在创建表空间数据文件、控制文件、日志文件时就不需要指定位置和文件 名。oracle会根据一些初始化参数的设置自动

分配和命令,通常和ASM搭配使用。

oracle安装过程中的内存参数初始化:
如果没有特殊用途一般选择典型或是定制自动管理内存。
SGA对应参数:SGA_TARGET PGA对应参数:PGA_TARGET
对于SGA,PGA与系统内存三者之间的关系,有一个相对通用的计算规则:
对于OLTP数据库,SGA=系统内存x70%x80%,PGA=SGAx(10%~20%)
对于OLAP数据库,SGA=系统内存x80%x60%, PAG=SGAx(45%~65%)
对于32bit平台,默认情况下SGA最大可用内存为1.7GB。
共享池:用来存放Library Cache,编译过的SQL,PLSQL等内容。一般在300至500MB,对应初始化参数:SHARED_POOL_SIZE
缓冲区高速缓存:数据库中的数据从硬盘读出来就存在这里,该值越大越好,对应参数:DB_CACHE_SIZE
Java池:如果数据库没有java_procedure或者未选择Oracle_JVM组件,该值可设置为0,一般不需要设置太大,对应参数JAVA_POOL_SIZE
大型池:主要应用于直接路径导入导出、RMAN备份等。一般设置为100至200MB,对应参数:LARGE_POOL_SIZE

指定数据库字符集:
一般选择从字符集列表中选择--->ZHS16GBK-GBK15位简体中文。否则有可能出现乱码。

专用服务器
每一个连接到Oracle数据库的用户进程都有一个专用的服务器进程为其提供服务,直到用户进程断开连接。各个进程间互相独,互不影响。这种模 式比较适合OLAP系统,即少量用户

连接,长时间运行的应用。
共享服务器
是指oracle始终保持一定数量的服务器进程,用户进程连接时首先连接到服务器的一个调度进程,由调度进程为其分配服务器进程,这样只有少量的服务器进程就能为大量用户进程提供

服务。这种模式比较适合OLTP系统。如网站这种高并发、大访问量的需求,服务器无法同时提供太多进程以供连接。实际上大型应用中均有中间件来提供独立的连接池服务,因此大多选择专

用服务器模式。

二、配置监听
1、服务器端创建监听服务--对应listener.ora文件
windows下直接在程序中打开Net Configguration Assistant工具进行配置
-----对于windows服务器,NETCA工具配置完后会在服务管理器中会自动创建新的监听服务项,并自动启动。如:OracleOraDb11g_home1TNSListener
linux环境下以root登录图形界面,切换到oracle用户,执行netca,即可调出Net Configguration Assistant。操作步骤跟windows环境下一致。

2、服务器端使用Net Manager配置监听服务--配置信息保存于listener.ora文件中
即配置监听程序应该监听哪些数据库实例。
windows下直接在程序中打开Net Manager工具进行配置
linux环境下以root登录图形界面,切换到oracle用户,执行netmgr,即可调出Net Manager工具

Net Manager配置的监听信息保存于这个文件中:$ORACLE_HOME\network\admin\listener.ora

# listener.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools. SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl) #其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做数据库连接
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
) LISTENER = #监听器的名字,一台数据库可以有不止一个监听器
(DESCRIPTION = #再向下面是监听器监听的协议,ip,端口等,这里使用的tcp1521端口,并且使用的是主机名
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname1)(PORT = 1521))
) ADR_BASE_LISTENER = D:\app\Administrator

关于监听程序的说明:接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。所有监听只在服务器端配置。listener.ora文件也只在服务器端存在。

3.客户端的配置:tnsnames.ora

这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES时,才会尝试使用这个文件。

# tnsnames.ora Network Configuration File: D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools. RUSKY = #客户端的这个名字可以随便
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

4.sqlnet.ora文件

sqlnet.ora可以删除,这样在oracle客户端连接数据库的时候,默认采用tnsnames.ora中的配置。

# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES = (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES)

例如我们客户端输入
sqlplus sys/rusky123@rusky
假如我的sqlnet.ora是下面这个样子
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
那么,客户端就会首先在tnsnames.ora文件中找rusky的记录.如果没有相应的记录则尝试把rusky当作一个主机名,通过网络的途径去解析它的 ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里rusky并不是一个主机名
如果我是这个样子
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么客户端就只会从tnsnames.ora查找rusky的记录,并且找到主机名,端口和service_name,如果listener进程没有问题的话,建立与listener进程的连接。根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。这时候网络连接已经建立,listener进程的历史使命也就完成了。

5、监听的启动和停止
windows下可直接启停相应的服务。
linux环境和WindowsCMD界面可用监听命令:lsnrctl stop/start/status/version/reload/help/save_config/services/change_password

上一篇:javaweb监听


下一篇:CentOS上部署Django+Nginx+Uwsgi环境