oracle数据库使用

43 篇文章 8 订阅
22 篇文章 2 订阅

目录

一、 oracle产品系列

二、oracle服务器安装和说明

三、oracle网络通信

四:oracle客户端工具navicat、SQL plus、plsql配置

五、oracle服务介绍

六、oracle常用命令(数据库连接、SQL定义查询操作控制)

七、oracle视图

八、Oracle索引

九、oracle存储过程

十、oracle事务

十一、arcgis、oracle数据互操作

十二、ODBC、JDBC连接Oracle数据库

十三、oracle数据备份与恢复

十四、oracle下的集群RAC

十五 Oralce 下的ASM

十六 Oracle 下的分布式与容灾

附件一:Net manager(Net Configuration)和Net Configuration Assistant配置


 

        oracle的层次依次是客户端(client)--网络服务(Listener)---数据库服务(service)--服务器全局守护进程--全局数据库-用户-数据库-表-记录-表空间-物理存储(数据库文件、归档日志文件、控制文件)等。不同层次引申出不同的内容,由于大部分计算机使用者接触的是数据库的表或记录,只是熟悉SQL操作,对oracle 软件并不熟悉(不少人配置监听服务都头疼,虽然Oracle有个1521的初始通信端口,但是它就像FTP一样,绑定端口时是随机的,会跳到一个很大的端口列,而mysql就简单多了),而对于地理信息使用者而言,大部分则是熟悉arcgis等桌面软件,对oracle并不熟悉,因此在使用oracle 过程中遇到了很多的问题。

       另一方面,数据库一直以来注重于数据的备份安全需要,然而数据库以时间累计,数据量越来越大,其性能优化却是我们长期以来所忽略的。

      oracle官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/index.html ,在下拉框中选择相应版本即可。

                                  Oracle 11G:https://docs.oracle.com/cd/E11882_01/index.htm

                                 Oracle 12C: https://docs.oracle.com/database/121/nav/portal_4.htm

                                 Oracle 19C:https://docs.oracle.com/en/database/oracle/oracle-database/19/administration.html

                                 Oracle 中间件:https://docs.oracle.com/en/middleware/index.html

                                 Oracle Spatial: https://docs.oracle.com/en/database/oracle/spatial-studio/19.1/spstu/index.html

     国内itpub的oracle论坛版块:http://www.itpub.net/forum.php

     

(Oracle数据库的官方文档还是有点难找的,在官方文档里多点点^^^^^^^)

一、 oracle产品系列

在oracle中,oracle database为数据库管理软件,oracle Grid Infrastructure为数据库网格基础套件(含Oracle集群件、自动存储管理ASM)。oracle集群实际上分别对数据库服务器和数据库存储进行容灾或者冗余处理,其高可用技术涉及了几个产品的综合使用,如:oracle database (DB:数据库)、 oracle real appliacation  clusters(RAC:实时应用集群 )、oracle Data Guard(DG:同构数据分布式或容灾)、oracle Golden gate(OGG:异构数据分布式或容灾)、oracle streams(数据流复制)、oracle flashback technology(数据闪回技术)、 Automatic storage management (ASM:自动存储管理)、Oracle Recovery Manager(rman:数据恢复管理) 、oracle advanced relication(高级复制技术,已经不再使用)等。

 虚拟化:oracle vm 

操作系统:oralce enterrprice linux

 数据库管理软件:oracle database、oracle Grid Infrastructure、oracle real appliacation  clusters(RAC)

存储:自动存储管理(ASM:Automatic storage management )、Oracle 集群文件系统(OCFS :Oracle Cluster File System) 

中间件:DataGard、GoldenGate、Database Security.、

应用服务:weblogic server,coherence..............

本文包含oracle安装、oracle网络通信、客户端安装、oracle服务、oracle数据库操作与运维、oracle集群冗余、arcgis与oracle互操作等内容。其中,arcgis与oracle互操作需要空间数据库引擎arcsde(Spatial Database Engine)中间件来驱动oracle数据库。从某种意义上说,arcgis类似于navicat、plsql等oracle数据库的客户端,arcsde则类似于oci.dll数据驱动,acrgis连接oracle数据库同样使用tcp/ip连接,用于保证arcgis与oracle或者其他关系型数据库处于畅通状态。

二、oracle服务器安装和说明

Oracle数据库相关产品下载:

https://www.oracle.com/cn/downloads/#category-database

要使用ASM,事先需要配置共享磁盘;

要使用Clusterware、ASM、ACFS,事先需要需要先安装Grid Infrastructure。

     

\app\oracle 顶级目录,同一台操作系统可以安转多各不同版本的Oracle数据库管理系统
    \product\dbhome_1   当前数据库主目录 
       \admin   Oracle 后台进程产生的相关文件及数据库管理文件
       \cfgtoollogs目录:子目录dbca,emca,netca存放图形化配置程序时的 log。
       \checkpoints目录:存放检查点文件
       \diag目录:故障自检,子目录asm、crs、lsnrtcl等存放自动存储管理系统、注册系统、监听程序等的自检文件
       \flash_recovery_area(闪回区)目录:分配一个特定的目录位置来存放一些特定的恢复文件,用于集中和简化管理数
据库恢复工作。闪回区可存储完全的数据文件备份、增量备份、数据文件副本、当前的控制文件、备份的控制文件、spfile 文件、快照控制文件、联机日志文件、归档日志、块跟踪文
件、闪回日志。

          \bin 主要包含用于数据库管理的各种命令
          \css 数据库集群同步文件
          \dbs 存放数据库管理系统配置参数文件Spfile
          \demo 存放数据库实例模式的脚本等 
          \network\admin 监听器listener.ora和sqlnet.ora以及tnsnames.ora等
    \oradata  Oracle存放数据文件目录。
               \orcl 数据库文件
               \CONTROL01.CTL 数据库的控制文件。
               \EXAMPLE01.DBF 数据库表空间文件。
               \REDO01.LOG 数据库的重做日志文件。
               \SYSAUX01.DBF 存储除数据字典以外的其他数据对象。由系统内部自动维护。
               \SYSTEM01.DBF 用于存放 Oracle 系统内部表和数据字典的数据。比如,表名、列名、用户名等。
               \TEMP01.DBF 临时表空间文件。
               \UNDOTBS01.DBF 撤销表空间文件。用来保存回滚数据。
               \USERS01.DBF 用户表空间文件

    \grid   网格集群目录

   \asm 自动存储管理目录 (一般看不到的,Oracle自带文件系统)

oracle单机服务器安装

winserver:

https://blog.csdn.net/KK_bluebule/article/details/83509840   (安装data base,创建arcgis空间数据库)

oracle集群服务器安装 

winserver:

https://blog.csdn.net/blvyoucan/article/details/71170754     (配置共享磁盘,用于安装asm)

 https://blog.csdn.net/blvyoucan/article/details/71212334    (安装Grid Infrastructure、asm、Clusterware)

https://blog.csdn.net/blvyoucan/article/details/71273017    (安装data base、RAC,配置asm)

https://blog.csdn.net/s13353955305/article/details/107357822 (以上三篇安装跳转繁琐,看这篇)

注:在实际生产中,使用nas、san存储系统,需要运维人员提供共享存储。

linux:

https://blog.csdn.net/blvyoucan/article/details/70227233   (配置共享磁盘,用于安装asm;安装Grid Infrastructure、asm、Clusterware)

https://blog.csdn.net/blvyoucan/article/details/70313819  (安装data base、RAC,配置asm)

oracle 单机服务器安装配置信息:

根目录:..\oracle

数据库管理软件:..\oracle\product\11.2.0\dbhome_1

数据存放路径:..\oracle\oradata

管理员账户:sys,system

账户状态:除管理员账户sys,system外,皆为锁定(锁定账户需要解除锁定,才能使用)

全局数据库:orcl(默认)

数据库标识SID:orcl(默认)

客户端远程端口:1521

https网页版远程端口:1158

dos-cmd登陆,键入sqlplus:

                     用户名:sys

                     密码:****** 

oracle网页版登录界面:https://localhost:1158/em   (localhost也可换成服务器在局域网IP地址,如:192.168.0.108)

oracleRAC集群服务器配置信息:    

用户组:grid组、oracle组

根目录:..\oracle 

网格集群软件:..\oracle\product\11.2.0\grid

数据库管理软件:..\oracle\product\11.2.0\dbhome_1

共享磁盘asm(+data):

    数据库文件:..\shared_data

    ORC文件:..\shared_config

      表决文件:..\shared_vote

(数据管理软件、数据库文件、注册文件、表决文件互为镜像,至少两份)

集群对外服务虚拟IP配置名字:oracle-scan(single client access name)

    节点一:rac1,rac1-vip

     节点二:rac2,rac2-vip

   。。。。。。。。。。。。。。。。。。。。。。。。。

    客户端远程端口:1521

    https客户端网页版远程端口:1158

    oracle网页版登录界面(OEM):https://192.168.0.108:1158/em

  节点rac1、rac2

   rac1:

    主机名:rac1

   公网 IP地址:192.168.0.101(公共地址)

    默认网关:192.168.0.1(公共地址)

    VIP地址:192.168.0.103

    私有IP地址:192.168.1.101(私人地址)

   rac2:

    主机名:rac2

   公网IP地址:192.168.0.102(公共地址)

   默认网关:192.168.0.1(公共地址)

   VIP地址:192.168.0.104

  私有 IP地址:192.168.1.102(私人地址)

  .。。。。。。。。。。。。。。。。。。。。。。。

   出口IP(SCAN):192.168.0.108

/

oracle环境变量一般包含oracle_base、oracle_home、java_home等环境变量,指定相应软件的安装位置即可,以及使用Oracle的命令数据库管理和网格集群软件bin目录。 

三、oracle网络通信

     oracle一般使用TCP/IP方式连接客户端和服务器端,Oracle Net是Oracle Net Services的组件。通过TCP/IP方式,客户端启用Oracle调用接口(OCI:Oracle Call Interface或者JDBC、JDBC Thin Driver、ODBC--封装了OCI) ,连接到服务器监听程序Listener,监听程序Listener再转接到Oracle服务或者实例。 Oracle Net Services提供了Listener、目录服务器、共享服务器等配置Oracle Net的网络连接池,使用Oracle Connection Manager配置会话多路复用以满足高并发的负载均衡和故障转移需求。

 Oracle各组件使用的端口

组件和说明默认端口号港口范围协议

Oracle Net服务侦听器

通过Oracle Net Services协议启用Oracle客户端与数据库的连接。您可以在安装过程中对其进行配置。要重新配置此端口,请使用Net Configuration Assistant。

1521

端口号更改为下一个可用端口。可手动修改为任何可用端口。

TCP协议

连接管理器

Oracle客户端与Oracle Connection Manager的连接的侦听端口。它不是在安装过程中配置的,但是可以通过编辑cman.ora参数文件来手动配置。您可以在/network/admin目录下找到该文件。

1630

1630

TCP协议

Oracle企业管理器数据库控制

企业管理器数据库控制的HTTP端口。它是在安装过程中配置的。“更改Oracle Enterprise Manager数据库控制端口”介绍了如何修改其端口号。

1158

5500–5519

HTTP

Oracle企业管理器数据库控制

企业管理器数据库控制的RMI端口。它是在安装过程中配置的。“更改Oracle Enterprise Manager数据库控制端口”介绍了如何修改其端口号。

5520

5520–5539

TCP协议

Oracle企业管理器数据库控制

企业管理器数据库控制的JMS端口。它是在安装过程中配置的。“更改Oracle Enterprise Manager数据库控制端口”介绍了如何修改其端口号。

5540

5540-5559

TCP协议

企业管理器数据库控制代理

企业管理代理程序的HTTP端口。它是在安装过程中配置的。

“更改Oracle Enterprise Management Agent端口”介绍了如何修改其端口号。

3938

1830年至1849年

HTTP

Oracle XML数据库

如果基于Web的应用程序必须从HTTP侦听器访问Oracle数据库,则使用Oracle XML DB HTTP端口。它是在安装过程中配置的,但是以后无法查看。

另请参见:《Oracle XML DB开发人员指南》中的“在标准端口而不是Oracle XML DB默认端口上使用HTTP(S)

0

手动配置

HTTP

Oracle XML数据库

当应用程序必须从FTP侦听器访问Oracle数据库时,将使用Oracle XML DB FTP。它是在安装过程中配置的,但是以后无法查看。

另请参见:《Oracle XML DB开发人员指南》中的“在标准端口而不是Oracle XML DB默认端口上使用FTP 

0

手动配置

的FTP

群集同步服务(CSS)

GM层的CSS守护程序节点间连接。端口号是自动分配的。您无法查看或修改它。此端口专用于群集互连,群集互连是在物理上与公共网络分离的专用网络。

42424

动态的

UDP协议

Oracle集群注册表

在安装过程中会自动分配端口号。之后,您将无法查看或修改它。

动态的

动态的

UDP协议


         服务器监听程序Listener和客户机连接程序tns使用Net manager(Net Configuration)或者Net Configuration Assistant安装,配置配置参见附件一。其中Net Configuration Assistant为向导式安装,Net manager为手动安装,建议使用Net Configuration Assistant安装。服务器监听程序Listener安装在oracle服务器上,tns安装在客户机上,安装完以后,生成sqlnet.ora、listener.ora和tnsnames.ora文件。

       sqlnet.ora 该文件位于客户端和数据库服务器计算机上,用于客户端配置网络连接时所使用的连接方式,包含数据库访问控制参数、记录和跟踪功能、连接路线、Oracle高级安全性参数、客户端域要追加到不合格的服务名称或网络服务名称等。

      listener.ora 该文件位于服务器上,用于配置服务器端监听客户端的信息,包含协议地址、正在监听的数据库和非数据库服务、监听器使用的控制参数。

       tnsnames.ora  该文件位于客户端上,包含映射到连接描述符的网络服务名,使用本地命名方法,用于配置客户端连接服务端数据库连接信息 。

     cman.ora 该配置文件位于运行Oracle Connection Manager的计算机上,包括侦听端点、访问控制规则列表、参数清单

安装完服务器监听程序Listener和客户机连接程序tns,并配置好Oracle网络调用接口后,才能使用navicat、plsql等远程可视化客户端工具进行数据库远程连接操作。

/

四:oracle客户端工具navicat、SQL plus、plsql配置

      navicat安装:https://blog.csdn.net/qq1437715969/article/details/80380031

      plsql 安装:https://blog.csdn.net/qiucheng_198806/article/details/80361944

      两者安装完成后需要配置读取oracle远程服务器的数据驱动oci.dll,将oci.dll指定到软件的配置位置处。

     客户端连接信息:

       oracle远程服务器IP:172.168.0.8(按照各自服务器的远程IP而定)

       账户信息:账户分为管理员账户和普通账户,按照各自创建数据库时输入

      密码:*****

      端口:默认为1521,按照各自创建监听程序时指定

///

       1、服务器端配置:

      安装完oracle数据库之后,可以使用客户端工具连接,事先确保相应服务启动:

 

保证这两个服务是启动状态的,没有启动的话就手动启动一下

找到......\product\11.2.0\dbhome_1\NETWORK\ADMIN文件夹下的listener.ora这个文件,将IP地址修改为oracle服务器IP地址192.168.0.108:

修改完IP地址后,重启Oracle数据库监听服务。

      2、客户端登陆

    (1)SQL plus客户端登陆

       打开SQL plus

 输入用户名和密码:

  (2)navicat客户端登陆

打开工具

配置oci.dll文件,把oracle安装目录下bin文件夹里面的oci.dll文件导入:.....\product\11.2.0\dbhome_1\BIN\oci.dll

新建一个oracle的连接

 起名为oracle,可以按照自己喜好起名,在高级选项里面,选择对应账户,同时输入用户名和密码,

测试连接,确定

 

 

  (3)plsql客户端登陆

打开plsql,找到plsql的 tools 》preferences

添加oracle客户端路径

配置tnsnames

tnsnames.ora 文件如下

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.108)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

重新启动plsql。

配置登录界面信息:

用户名:system

密码:xxxx

远程服务器:172.168.0.108:1521/orcl   (IP地址:端口号/数据库实例名)

/

五、oracle服务介绍

    SID指代数据库标识(SID默认为orcle),HOME_NAME指代OraDb11g_home1、OraDb12c_home1等

(1)OracleServiceSID(OracleService+数据库名)                        
数据库服务(数据库实例),是Oracle核心服务该服务,是数据库启动的基础, 只有该服务启动,Oracle数据库才能正常启动。数据库服务自动地启动和停止数据库。如果安装了一个数据库,数据库服务的缺省启动类型为自动。服务进程为ORACLE.EXE,参数文件initSID.ora,日志文件SIDALRT.log,控制台SVRMGRL.EXE、SQLPLUS.EXE。(必须启动)

(2)OracleHOME_NAMETNSListener
监听器服务,服务只有在数据库需要远程访问时才需要(无论是通过另外一台主机还是在本地通过 SQL*Net 网络协议都属于远程访问),不用这个服务就可以访问本地数据库,它的缺省启动类型为自动。服务进程为TNSLSNR.EXE,参数文件Listener.ora,日志文件listener.log,控制台LSNRCTL.EXE,默认端口1521、1526,使用TCP/IP协议。(非必须启动)

要是只用Oracle自带的sql*plus的话,只要启动OracleServiceORCL即可,要是使用PL/SQL Developer等第三方工具的话,OracleHOME_NAMETNSListener服务也要开启。OracleDBConsoleorcl是进入基于web的EM必须开启的,其余服务很少用。注:ORCL是数据库实例名,默认的数据库是ORCL,你可以创建其他的,即OracleService+数据库名。

同时使用客户端和服务器端,OracleServiceSID和OracleHOME_NAMETNSListener都要启动。

(3)OracleHOME_NAMEAgent
OEM代理服务,接收和响应来自OEM控制台的任务和事件请求,只有使用OEM管理数据库时才需要,它的缺省启动类型为自动。服务进程为DBSNMP.EXE,参数文件snmp_rw.ora,日志文件nmi.log,控制台LSNRCTL.EXE,默认端口1748。

(4)OracleHOME_NAMEClientCache        
缓存服务,服务缓存用于连接远程数据库的Oracle Names 数据。它的缺省启动类型是手动。然而,除非有一台Oracle Names 服务器,否则没有必要运行这个服务。服务进程为ONRSD.EXE,参数文件NAMES.ORA,日志文件ONRSD.LOG,控制台NAMESCTL.EXE。

(5)OracleHOME_NAMECMAdmin                        
连接管理服务,是构建Connection Manager服务器所用,只有服务器作为Connection Manager才需要,它的缺省启动类型是手动。服务进程为CMADMIN.EXE,参数文件CMAN.ORA,日志文件CMADM_PID.TRC,控制台CMCTL.EXE,默认端口1830。

(6)OracleHOME_NAMECMan                        
连接网关服务,是构建Connection Manager服务器所用,只有服务器作为Connection Manager才需要,它的缺省启动类型是手动。服务进程为CMGW.EXE,参数文件CMAN.ORA,日志文件CMAN_PID.TRC,控制台CMCTL.EXE,默认端口1630。

(7)OracleHOME_NAMEDataGatherer
性能包数据采集服务,除非使用Oracle Capacity Planner 和 Oracle Performance Manager,否则不需要启动,它的缺省启动类型是手动。服务进程为VPPDC.EXE,日志文件alert_dg.log,控制台vppcntl.exe。

(8)OracleHOME_NAMEHTTPServer
Oracle提供的WEB服务器,一般情况下我们只用它来访问Oracle Apache 目录下的Web 页面,比如说JSP 或者modplsql 页面。除非你使用它作为你的HTTP服务,否则不需要启动(若启动它会接管IIS的服务),它的缺省启动类型是手动。服务进程为APACHE.EXE,参数文件httpd.conf,默认端口1158。即::https://localhost:1158/em

(9)OracleHOME_NAMEPagingServer
通过一个使用调制解调器的数字传呼机或者电子邮件发出警告(没试过),它的缺省启动类型是手动。服务进程PAGNTSRV.EXE,日志文件paging.log。

(10)OracleHOME_NAMENames
Oracle Names服务,只有服务器作为Names Server才需要,它的缺省启动类型是手动。服务进程NAMES.EXE,参数文件NAMES.ORA,日志文件NAMES.LOG,控制台NAMESCTL.EXE,默认端口1575。

(11)OracleSNMPPeerMasterAgent
SNMP服务代理,用于支持SNMP的网管软件对服务器的管理,除非你使用网管工具监控数据库的情况,否则不需要启动,它的缺省启动类型是手动。服务进程为AGNTSVC.EXE,参数文件MASTER.CFG,默认端口161。

(12)OracleSNMPPeerEncapsulater
SNMP协议封装服务,用于SNMP协议转换,除非你使用一个不兼容的SNMP代理服务,否则不需要启动,它的缺省启动类型是手动。服务进程为ENCSVC.EXE,参数文件ENCAPS.CFG,默认端口1161。

(13)OracleHOME_NAMEManagementServer
OEM管理服务,使用OEM时需要,它的缺省启动类型是手动。服务进程为OMSNTSVR.EXE,日志文件oms.nohup。

(14)Oracle ORCL VSS Writer Service

Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的系统能。(非必须启动)

(15)OracleDBConsolexx(xx表示实例名称)

Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。在运行Enterprise Manager(企业管理器OEM)的时候,需要启动这个服务。(非必须启动)

(16)OracleJobSchedulerORCL

Oracle作业调度(定时器)服务,ORCL是Oracle实例标识。(非必须启动)

(17)OracleMTSRecoveryService

服务端控制。该服务允许数据库充当一个微软事务服务器MTS、COM/COM+对象和分布式环境下的事务的资源管理器。(非必须启动)

RAC下的相关服务进程:

GCS:global cach service process 全局缓存服务进程

CRS:cluster ready services 集群资源服务

CSS:cluster synchronization services 集群同步服务

EVMD:事件管理服务

ONS:事件发布订阅服务

DIAG:diagnostic daemon 诊断守护进程

LMON:global enqueue service monitor 全局查询服务监视进程

LCK:instance enqueue process 实例查询进程

LMD:global enqueue service daemon 全局查询守护进程

LMS:global cache service process 全局缓存服务进程

注:global与local是相对应的,global相当于不同实例共同占有的内存服务,local指单个实例拥有的服务。

///

六、oracle常用命令(数据库连接、SQL定义查询操作控制)

 数据库语言包含几类:数据定义、操作、查询和控制语言,

DDL(Data Definition Language)数据定义语言,用来定义数据库对象:数据库,表,列等。关键字create,drop,alter等

DML(Data Manipulation Language)数据操作语言,用来对数据库中表的数据进行增删改。关键字:insert。Delete,update

DQL(Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)。关键字:select,where等

DCL(Data Control Language)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT,REVOKE等

以下按照对象进行说明,数据库语言穿插其中。
 

1、oracle数据库连接
三种以系统管理员身份连接数据库的方式(sqlplus)

1)sqlplus "/ as sysdba"  //这是典型的操作系统认证,不需要listener进程,数据库即使不可用也可以登录。

2)sqlplus username/password  //不需要listener进程,登录本机数据库,数据库实例启动即可。

3)sqlplus username/password@tnsname //需要listener进程,最常见的远程登录模式,需要启动数据库实例和listener进程。

SQL> conn a/a //或者是connect a/a  连接到其他用户

connect username/password //进入。

启动sqlplus,连接数据库服务器
sqlplus /nolog://不登录到数据库服务器
sqlplus / as sysdba://不需要listener进程(本人最常用的)

listen监听服务操作
lsnrctl start://启动监听
lsnrctl stop://关闭监听
lsnrctl status://查看监听状态

Oralce实例服务操作
startup://启动实例
shutdown immediate://关闭实例
select * from v$instance://查看实例状态    

2、Oracle数据库、表空间、用户和表管理

1)数据库

查看数据库版

select version FROM Product_component_version

Where SUBSTR(PRODUCT,1,6)='Oracle'; 

查看数据库的创建日期和归档方式
    select Created, Log_Mode, Log_Mode From V$Database; 

查看数据库库对象
select owner, object_type, status, count(*) count# 
from all_objects group by owner, object_type, status;

改变数据库文件大小

ALTER DATABASE .... DATAFILE .... ;

///手工改变数据文件的大小,对于原来的 数据文件有没有损害。

查看ORACLE中运行程序

查看v$session表

查看数据库中的表空间

select * from dba_tablespaces; 

查看数据库实例

SELECT * FROM V$INSTANCE; 

查看控制文件
select name from v$controlfile; 

查看日志文件
select member from v$logfile; 

2)表空间

创建表空间

create tablespace oraclespace1 // 新建oraclespace1表空间
logging 
datafile '..../oracle/data/data01/rdbms/obak/datafile/oraclespace1.dbf'

 // 创建oraclespace1物理文件..../oracle/data/data01/rdbms/obak/datafile/oraclespace1.dbf
size 32m  //初始大小1024m,
autoextend on 
next 32m maxsize 2048m //表空间超过32m自动增加,每次增加32M,最大容量2048m。
extent management local;

扩展表空间

ALTER tablespace oraclespace1 ADD 
DATAFILE '.../oracle/data/data01/rdbms/obak/datafile/oraclespace2.dbf' SIZE 1024M 
AUTOEXTEND ON NEXT 32M MAXSIZE 2048m; 

//为oraclespace1追加oraclespace2表空间

将用户绑定到表空间

alter user 用户名 quota unlimited on 表空间

create user orcl_user identified by xxx default tablespace oraclespace1

授予用户操作数据表权限

grant connect,resource to orcl_user;
grant create any sequence orcl_user;
grant create any table to orcl_user;
grant delete any table to orcl_user;
grant insert any table to orcl_user;
grant select any table to orcl_user;
grant unlimited tablespace to orcl_user;
grant execute any procedure to orcl_user;
grant update any table to orcl_user;
grant create any view to orcl_user;

或者授予DBA权限

grant dba to orcl_user;

删除表空间

drop tablespace oraclespace1 including contents and datafiles

3)用户

新建用户并授权

create user username identified by password; create user a identified by a;//创建用户(默认建在SYSTEM表空间下)

grant connect,resource,dba to username;//授权 grant connect,resource,dba,sysdba to username;

grant connect,resource to a; 

修改用户密码
alter user a identified by 123456;

授权用户可以访问数据库所有表
grant select any table to a;

授权用户操作其他用户的表
grant select,insert,update,delete on student.emp to a;

查看系统拥有哪些用户

 select * from all_users;

显示当前连接用户
show user –不能用在sql窗口 只能用在command命令窗口。

查看当前用户下所有对象

select * from tab; --table或是view

查看用户连接
select username,sid,serial# from v$session; 

查看当前用户的缺省表空间
select username,default_tablespace from user_users; 

查看当前用户的角色
select * from user_role_privs; 

查看当前用户的系统权限和表级权限
select * from user_sys_privs; 
select * from user_tab_privs;

SELECT * FROM dba_sys_privs ; --一个权限对应一条数据,这样对于同一个用户就有多条数据了。

查看用户的SYSDBA、SYSOPER权限

conn sys/change_on_install –登不上去

select * from V_$PWFILE_USERS;

查看序列号

select * from user_sequences;

4)表

新建表

create table a(a number);

修改表名

alter table old_table_name rename to new_table_name; 

修改表主键

alter table aaa drop constraint aaa_key ;

alter table aaa add constraint aaa_key primary key(a1,b1) ;

清空表

truncate table table_name;

删除表

DORP TABLE 表名;

例:表删除将同时删除表的数据和表的定义

drop table test

查看用户下的所有表:

select * from all_tables;

查看用户下的所有表

select distinct table_name from user_tab_columns; //仅显示一列表名。

查看单个表结构

 desc a

查看单个表记录

select * from a;

查看单个表的创建时间

select object_name,created from user_objects where object_name=upper('&table_name');

查看单个表的大小

select sum(bytes)/(1024*1024) as "size(M)" from user_segments

where segment_name=upper('&table_name');

查看放在ORACLE的内存区里的表

select table_name,cache from user_tables where instr(cache,'Y')>0;

查看名称包含log字符的表

select object_name,object_id from user_objects

where instr(object_name,'LOG')>0;

查看表空间物理文件的名称及大小

select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space 
 from dba_data_files 
 order by tablespace_name; 

查看表空间的使用情况
select sum(bytes)/(1024*1024) as free_space,tablespace_name 
 from dba_free_space 
 group by tablespace_name; 

统计两个表的记录总数

select (select count(id) from aa)+(select count(id) from bb) 总数 from dual; --总数那是没有单引号的,双引号可以。

3、表记录的增删查改操作

   (1)增:有2种方法

         1)使用insert插入单行数据:

         语法:insert [into] <表名> [列名] values <列值>

   例:insert into Strdents (姓名,性别,出生日期) values ('王伟华','男','1983/6/15')

              insert into a values(1);

   注意:如果省略表名,将依次插入所有列

        2)使用insert,select语句将现有表中的 数据添加到已有的新表中

        语法:insert into <已有的新表> <列名> select <原表列名> from <原表名>

  例:insert into addressList ('姓名','地址','电子邮件')select name,address,email          

                from  Strdents 

      注意:查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致

  (2)删:有2中方法

    1)使用delete删除数据某些数据

    语法:delete from <表名> [where <删除条件>]    

    例:delete from a where name='王伟华'(删除表a中列值为王伟华的行)

           delete from a;  

        注意:删除整行不是删除单个字段,所以在delete后面不能出现字段名

    2)使用truncate table 删除整个表的数据

        语法:truncate table <表名>

    例:truncate table addressList

   注意:删除表的所有行,但表的结构、列、约束、索引等不会被删除;不能

         用于有外建约束引用的表

(3)改  使用update更新修改数据         

    语法:update <表名> set <列名=更新值> [where <更新条件>]

   例:update addressList set 年龄=18 where 姓名='王伟华'

              update a set a=2;

   注意:set后面可以紧随多个数据列的更新值(非数字要引号);where子句是可选的(非数字要引号),用来限制条件,如果不选则整个表的所有行都被更新

(4)查

     1)普通查询

    语法:select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列  

          名>[asc或desc]]

   1).查询所有数据行和列

    例:select * from a

    说明:查询a表中所有行和

   2).查询部分行列--条件查询

    例:select i,j,k   from  a   where f=5

    说明:查询表a中f=5的所有行,并显示i,j,k3列

   3).在查询中使用AS更改列名

    例:select name as 姓名 from a where  gender='男'

    说明:查询a表中性别为男的所有行,显示name列,并将name列改名为(姓名)显示

   4).查询空行

    例:select name from a where email is null

    说明:查询表a中email为空的所有行,并显示name列;SQL语句中用is null或者is not null

                  来判断是否为空行

   5).在查询中使用常量

    例:select name '北京' as 地址 from a

    说明:查询表a,显示name列,并添加地址列,其列值都为'北京'

   6).查询返回限制行数(关键字:top )

    例1:select top 6 name from a

    说明:查询表a,显示列name的前6行,top为关键字(oracle 中没有top关键字

             用rownum替代)

                          select   *   from   a where   rownum<6  

   7).查询排序(关键字:order by , asc , desc)

    例:select name

      from a

      where grade>=60

      order by desc

    说明:查询表中成绩大于等于60的所有行,并按降序显示name列;默认为ASC升序

       2)模糊查询

   1).使用like进行模糊查询

    注意:like运算副只用语字符串,

    例:select * from a where name like '赵%'

    说明:查询显示表a中,name字段第一个字为赵的记录

   2).使用between在某个范围内进行查询

    例:select * from a where age between 18 and 20

    说明:查询显示表a中年龄在18到20之间的记录

    3).使用in在列举值内进行查询(in后是多个的数据)

        例:select name from a where address in ('北京','上海','唐山')

    说明:查询表a中address值为北京或者上海或者唐山的记录,显示name字段

     3)分组查询

   1).使用group by进行分组查询

    例:select studentID as 学员编号, AVG(score) as 平均成绩  (注释:这里的score是列名)

      from score (注释:这里的score是表名)

      group by studentID

           2).使用having子句进行分组筛选

    例:select studentID as 学员编号, AVG from score

      group by studentID

      having count(score)>1

    说明:接上面例子,显示分组后count(score)>1的行,由于where只能在没有分组时使用,分组后只能使用having来限制条件,

   4)多表联接查询

   1).内联接

    ①在where子句中指定联接条件

    例:select a.name,b.mark

      from a,b

      where a.name=b.name

    说明:查询表a和表b中name字段相等的记录,并显示表a中的name字段和表b中的mark字段

查找重复记录

  SELECT * FROM TABLE_NAME WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAMe WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);

删除重复记录

  DELETE FROM TABLE_NAME WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);

字符串连接

  SELECT CONCAT(COL1,COL2) FROM TABLE ;

  SELECT COL1||COL2 FROM TABLE ;

3、Oracle数据库运维

使用oem对数据库管理软件、使用内存、ASM、表空间、数据库、节点可用性、归档文件等统一进行管理

/

七、oracle视图

创建视图

create view 表名 as
select  要基表的列名称,也可以直接用*代替所有列
from 基表
with read only 

//with read only 加上后视图就变成了只读模式,只能进行查询,不能进行修改操作。

查询视图

select * from 视图名

更新视图

update 视图名 set 字段 where 字段

删除视图

drop view 视图名

查看当前用户视图的名称

select view_name from user_views;

查看创建视图的select语句

set view_name,text_length from user_views;

set long 2000; 说明:可以根据视图的text_length值设定set long 的大小

select text from user_views where view_name=upper('&view_name');

八、Oracle索引

创建索引

create index index_name on table_name([column1 [ASC|DESC])

重命名索引

alter index index_re rename to index_name;

删除索引

drop index ndex_name

查看索引个数和类别
select index_name,index_type,table_name from user_indexes 
order by table_name; 

查看索引被索引的字段
select * from user_ind_columns 
where index_name=upper('&index_name'); 

查看索引的大小
select sum(bytes)/(1024*1024) as "size(M)" from user_segments 
                where segment_name=upper('&index_name'); 

///

九、oracle存储过程

创建存储过程

create [or replace] procedure 存储过程名 [(输入、输出参数、in/out模式参数)]

is/as

begin

sentences;

[exception sentences;]

end 存储过程名

存储过程调用

execute 存储过程名;

查看函数和过程的状态

select object_name,status from user_objects where object_type='FUNCTION';

select object_name,status from user_objects where object_type='PROCEDURE';

查看函数和过程的源代码

select text from all_source where owner=user and name=upper('&plsql_name');

使用

///

十、oracle事务:

创建事务

set transaction

设置事务约束模式

Set constrains

事务回滚

 roll;

rollback;

事务提交

 commit;

查看回滚段名称及大小
select segment_name, tablespace_name, r.status, 
    (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, 
    max_extents, v.curext CurExtent 
    From dba_rollback_segs r, v$rollstat v 
    Where r.segment_id = v.usn(+) 
    order by segment_name ; 

十一、arcgis、oracle数据互操作

1、安装oracle客户端的连接程序tns,参见:三、oracle中间件服务器监听程序Listener和客户端连接程序tns安装

注:oracle客户端以arcgis版本或或者产品而定:倘若使用的是arcgis destop,该程序为32位,oracle客户端安装32位版本;倘若使用的是arcserver ,该程序为64位,oracle客户端安装64位版本.

2、配置oracle环境变量

path条目中增加 C:\Program Files\Oracle或者C:\Program Files (x86)\Oracle路径。

3、建立企业级地理数据库

配置信息:

               数据库平台:Oracle;

               数据库实例:orcl;  //oracle默认实例为orcl,远程服务器IP+端口号+实例名称,如:192.168.0.8:1521/orcl或者192.168.0.8/orcl

               数据库:orcl;//已有数据库名称,可选

               数据库管理员账户:sa;//arcgis默认账户sa,如果数据库实例为Oracle已有数据库,如默认数据库orcl,请使用安装orcl数据库时的管理员账户,如:sys,system或者当时创建的账户orcl

               数据库管理员密码:*****;//使用sys,system或者当时创建的账户orcl对应的密码

               sde拥有的方案://建议勾选;

               地理数据库用户:sde;//默认账户sde,可以自行创建地理数据库用户

               地理数据库密码:*****//自行创建地理数据库密码

              地理数据库表空间://默认表空间sde,如果使用Oracle已有数据库,选择对应表空间,也可以自行创建表空间

               授权文件:,//arcgis server的破解文件server.ecp。

4、连接地理数据库

数据库平台:orcl

实例:远程服务器IP+端口号+实例名称,如:192.168.0.8:1521/orcl或者192.168.0.8/orcl

地理数据库用户名:sde

地理数据库密码:*****

5、导入坐标系

数据集名称:spatialdatabase; //自行创建数据集名称

数据集坐标系:CGCS2000;//根据数据集所在坐标系选择

6、将数据导入oracle数据库

7、注意事项

 (1)确保oracle监听服务端口1521可以穿过服务器与客户端防火墙,将1521加入入站、出站规则

 (2)拥有arcsde的.ecp权限文件

(3)拥有oracle空间数据库驱动,安装arcsde,将oralce支持空间数据库的动态库st_shapelib.dll配置到extproc.ora文件。

使用地理数据库用户sde登录oralce数据库,更新驱动

CREATE OR REPLACE LIBRARY ST_SHAPELIB AS ‘<st_shapelib.dll路径>’

select * from dba_libraries where library_name='ST_SHAPELIB';
 

(4)确保oracle服务器中的空间数据库监听服务处于开启状态,确保客户端arcgis的tns配置信息正确。

 (5)无论是使用oracle数据库或者postgres数据库,建议使用gis桌面端编辑数据,然后再保存到数据库中,在数据库中操作数据并不方便。

 

https://blog.csdn.net/u010371710/article/details/74909146

https://blog.csdn.net/linghe301/article/details/19110539

/

十二、ODBC、JDBC连接Oracle数据库

ODBC、JDBC是外部程序连接Oracle 数据库的驱动。可以实现相关数据库的增删改查工作。

ODBC

rc = SQLConnect(hdbc,(SQLCHAR*)"Oracle", SQL_NTS, //注明:DBDEMO是一个系统数据源,如果这样子写就不行L“DNS=DBDEMO”
(SQLCHAR*)"alien", SQL_NTS, (SQLCHAR*)"alienchang", SQL_NTS);
rc = SQLDriverConnect (hdbc,0,(SQLCHAR*)"DSN=Oracle;UID=alien;PASSWD=alienchang",SQL_NTS,(UCHAR*) buf,sizeof (buf),&buflen,SQL_DRIVER_COMPLETE);
check_return (rc,henv,hdbc,hstmt);

JDBC

jdbc:oracle:thin:@localhost:1521:SID

jdbc:oracle:thin:@//localhost:1521:SERVICENAME

十三、oracle数据备份与恢复

执行脚本SQL文件

@PATH/filename.sql;

select结果导到文本文件

  SQL>SPOOL C:\ABCD.TXT;

  SQL>select * from table;

  SQL >spool off;

数据库的导出(exp):

将数据库orcl完全导出,用户名scott密码tiger导出到

exp scott/tiger@orclfile=d:\ABCD.dmp full=y

将数据库中system用户与sys用户的表导出

exp scott/tiger@orcl file=d:\ABCD.dmpowner=(system,sys)

将数据库中的表table1、table2导出

exp scott/tiger@orclfile=d:\ABCD.dmptables=(table1,table2)

数据导入:

imp scott/tiger@orcl file=D:\ABCD.dmp;

exp –> 表示 执行BIN目录下的exp.exe可运行程序
scott/tiger –> 分别表示导出数据的用户名和密码
orcl –> 表示 oracle数据库的实例名称
file –> 用于去指定我们导出的数据的存放位置。
           执行完成之后就可以完成数据的导出需求。

测试SQL语句执行所用的时间

set timing on ;

select * from tablename;

复制表结构及其数据:
      create table table_name_new as select * from table_name_old
只复制表结构:
      create table table_name_new as select * from table_name_old where 1=2;
      或者:
      create table table_name_new like table_name_old
只复制表数据:
           如果两个表结构一样:
           insert into table_name_new select * from table_name_old
          如果两个表结构不一样:
           insert into table_name_new(column1,column2...) select column1,column2... from table_name_old
          创建带主键的表:
          create table stuInfo(stuID int primary key,stuName varchar2(20),age int);
          或是不直接增加主键
         alter table stuInfo add constraint stuInfo _PK primary key (stuID) 

rman

调出rman数据恢复管理器

rman target /

数据库完全备份(包含控制文件、配置文件)

rman>backup database;

删除所有备份文件

rman>delete backupset all;

备份表空间

rman>backup tablespace users;

备份文件

rman>backup datafile 1;

备份所有归档日志

rman>backup archivelog all;

列出所有备份集

rman>list backupset;

备份数据所在文件:orcl/backupset/...bkp

还原数据库文件

rman>restore database;

恢复数据库

rman>recover database;

还原表空间文件

rman>restore tablespace users;

恢复表空间

rman>recover datafile4;

还原数据文件

rman>restore datafile4;

增量备份(差异增量备份和累计增量备份,oracle将增量备份划分为四个级别,增量备份以后一次比前几次大的增量备份进行备份,level0为全库备份,level1基于前一次的进行差异备份)

按照level1进行备份

rman>backup incremental level 1 database;

数据库增量备份恢复

rman>restore database;

rman>recover database;

十四、oracle下的集群RAC

RAC是指Oracle数据库管理软件服务器集群,不包含数据库存储,是oracle数据库高可用的核心模块,它实现了Oracle数据库的服务器冗余。

RAC的特点是多个实例或者数据库管理软件跑在多个服务器上,使用公共IP地址(pub)组成集群,多个实例共享一个存储(数据、表决、配置磁盘必须共享);

不同实例之间可以相互通信,使用私有IP地址(pri)进行内部数据传递和心跳检测,每个实例都具有独立的事务处理能力(redo,undo,SGA,UGA),;

单个实例宕掉,使用虚拟IP地址(vip)自动飘移,其他实例可以顶替使用;

外部客户端通过对外出口地址(SCAN)访问RAC集群。

crs的命令位于目录product/10.2.0/crs_1/bin 下面

1、节点层:

查看集群下的所有节点:

olsnades -i -n -p

2、网络层:

查询、定义、修改集群网卡信息:

oifcfg getif

3、集群层:

ocr数据库注册表

ocrctl:用于查询每个ocr进程状态和表决磁盘状态,并进行更改,命令较多,可以在shell窗口直接键入ocrctl 查看相应帮助。

ocrctl check crs 查看crs健康状态

ocrctl start crs 启动crs

ocrctl stop crs 停止crs

ocrctl get css misscount  获取集群超时时间

ocrctl  query css votedisk 查询表决磁盘

.......................................

ocrcheck:用于查看ocr服务状态信息

ocrdump:用于打印ocr信息

ocrdump -stdout 标准化答应orc信息

ocrconfig:用于查看orc配置信息

导出配置信息

ocrconfig export test.dmp

导入配置信息

ocrconfig import test.dmp

创建ocr磁盘镜像

ocrconfig replace 

4、应用层

crs数据库资源服务

crs_stat:用于查看所有crs维护资源的状态

crs_stat -t

srvctl:用于操作数据库、实例、存储、监听、服务和节点应用程序。

查看所有注册到crs的数据库资源

srvctl config database

查看监听器信息

srvctl config listener

查看实例信息

srvctl config instance

添加资源

srvctl  add service

删除资源

srvctl  remove service

启用或者禁用资源

srvctl  enable/disable service

启动或者停止资源

srvctl start/stop service

onsctl:用于操作ons服务

十五 Oralce 下的ASM

数据库存储按照存储方式raid、SAN、NAS不同,有不同的冗余存储方案,推荐自动存储管理(ASM:Automatic Storage Management)使用进行自动配置;

自动存储管理是Oracle提供的一项管理磁盘的功能,磁盘组冗余的方式包括镜像、故障转移、动态平衡三种方式,

管理磁盘需要开启CSS(Cluster Synchronization Services )集群同步服务,主要为命令,需在grid用户下进入:

实例管理:

ASMCMD> dsget     返回discovery diskstring
ASMCMD> dsset     设置discovery diskstring
ASMCMD> lsct      显示当前oracle ASM的客户端,一般指数据库实例和ASM实例,数据来源于V$ASM_CLIENT视图
ASMCMD> lsop      显示当前磁盘组或ASM实例的操作,数据来源于V$ASM_OPERATION视图
ASMCMD> lspwusr   显示ASM密码文件中的用户
ASMCMD> orapwusr  增加,删除,修改ASM密码文件用户
ASMCMD> shutdown  关闭ASM实例
ASMCMD> startup   启动ASM实例
ASMCMD> spbackup    备份ASM SPFILE,不影响GPnP profile;备份文件不能识别成SPFILE,不能用spcopy拷贝。为了识别备份文件为SPFILE必须用cp命令
ASMCMD> spcopy    拷贝ASM SPFILE,在同一个磁盘组不能拷贝多份。为了更新GPnP profile,则用-u选项或用spset命令
ASMCMD> spget            返回ASM SPFILE的位置从GPnP profile
ASMCMD> spmove        移动ASM SPFILE,自动更新GPnP profile.当SPFILE被ASM实例打开时不能被移动
ASMCMD> spset            设置ASM SPFILE的位置
磁盘组管理:

ASMCMD> chdg      修改磁盘组(增加磁盘,删除磁盘,调整磁盘大小,重新平衡磁盘组,基于XML配置文件的)
ASMCMD> chkdg            检查或修复磁盘组
ASMCMD> dropdg        删除磁盘组
ASMCMD> iostat        显示磁盘IO统计,信息来源于V$ASM_DISK_IOSTAT视图
ASMCMD> lsattr        显示磁盘组属性,信息来源于V$ASM_ATTRIBUTE视图
ASMCMD> lsdg            显示已挂载的磁盘组和他们的信息,与ls -ls输出结果一样,信息来源于V$ASM_DISKGROUP_STAT视图,如果指定了--discovery,则查询V$ASM_DISKGROUP
ASMCMD> lsdsk            显示ASM磁盘,信息来源于V$ASM_DISK_STAT视图;连接模式查询V$ASM_DISK_STAT and V$ASM_DISK返回信息;非连接模式通过扫描磁盘头来返回信息
ASMCMD> lsod            显示已打开的设备
ASMCMD> md_backup    创建已挂载的磁盘组元数据备份
ASMCMD> md_restore恢复磁盘组元数据备份
ASMCMD> mkdg            创建磁盘组,基于XML配置文件创建。注意:mkdg创建的磁盘组只挂载在本地节点
ASMCMD> mount            挂载磁盘组
ASMCMD> offline        使磁盘或失效磁盘组离线
ASMCMD> online        使磁盘或失效磁盘组上线
ASMCMD> rebal            重新平衡磁盘组
ASMCMD> remap            重定位数据在磁盘上的物理块的范围
ASMCMD> setattr        设置磁盘组属性
ASMCMD> umount        卸载磁盘组

文件访问:

ASMCMD> chgrp      修改文件或文件列表的用户组
ASMCMD> chmod      修改文件或文件列表的权限
ASMCMD> chown      修改文件或文件列表的拥有者

十六 Oracle 下的分布式与容灾

Oracle分布式有GoldenGate、Data Guard几种解决方案,GoldenGate为

在一个节点中的tnsnames.ora文件中添加另外一个节点信息:

LOANDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.3 )(PORT = 1521 ))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = LOANDB )
    )
  )

其中HOST = 192.168.1.3是你要连接的远程数据所在的ip地址。PORT = 1521是这个远程数据库的监听端口。SERVICE_NAME = LOANDB是远程的数据库名。

创建分布式数据库连接:

create public database link loan connect to system identified by feng using 'loanDB '

这里loan是你的连接名,以后就可以直接使用这个名字作为远端了。system是远程数据库的用户名。feng是那个用户名的密码。loanDB看上面的tnsnames.ora中的那一行LOANDB就是.

容灾

Oracle容灾包含GoldenGate、Data Guard、Continue Data Protection、oracle streams等软件技术方案,大部分用户会采用前两种手段,使用一主一备的方式,或是同城双活,或是异地迁移,但是几乎没有一家用户可以完美地做到在主数据库挂掉的时候,备用数据库可以马上起来,其中有物理链路的原因,也有数据延时的原因,更多的是因为距离产生了诸多不可控的因素。

附件一:Net manager(Net Configuration)和Net Configuration Assistant配置

一、Net manager(Net Configuration)和Net Configuration Assistant

1、Net Configuration Assistant是向导式(网上说是傻瓜式安装,傻瓜么?大部分刚刚接触这个软件的人看着这些参数都很懵)的安装界面,而Net manager是手动配置界面。

2、Net Configuration Assistant在配置完监听程序和本地网络服务(TNS)后会重启当前的服务,而Net Configuration只是修改配置文件的参数和手动修改配置文件的效果是一样的,但是它并不会重启服务,修改完之后,你需要手工启动监听程序。

注:如果初次安装Oracle,建议使用Net Configuration Assistant配置监听程序和网络服务,使用Net Configuration会让你指定网络配置文件的位置,手动重启监听服务。

二、Net manager配置

1、Net manager 配置服务名

第一步

找到Net Manager,如图所示:

第二步

打开后找到中间的Oracle Net配置下有一个服务命名,鼠标点击“服务命名”后,点击左侧的绿色加号,如图所示:

第三步

输入“网络服务名”,网络服务名是自己命名的,没有硬性限制,如图3所示,然后点击下一步。

第四步

点击TCP/IP协议,如图所示,点击下一步。

第五步

输入主机名和端口号,主机名是指你需要连接的数据库所在的电脑的名称,也可以是IP地址,如图5所示。

第六步

点击“下一步”就会显示“测试”界面,代表你之前的设置已经完成,如图6所示:

第七步

更改登录进行测试,如图7所示:

第八步

然后弹出测试成功页面,然后点击关闭,最后点击完成即可,如图8所示:

第九步

服务命名栏即出现刚刚配置的服务,然后点击右上角的关闭按钮,弹出窗口,选择保存,如图9所示,完成!!!

(此时一定不要忘了选择菜单“文件”——“保存网络配置”以使所做的更改生效。)

 

2、Net manager配置监听

1)选中‘监听程序’,点击左侧加号‘+’,会弹出填写名称框,默认即可,点击 确定

2)右侧点击‘添加地址按钮’,主机:如果是准备配置本地数据库监听的话就填写localhost/127.0.0.1,端口:如无改动默认是1521

第二大步,就是建立监听。点监听程序,再点加号。输入监听名,和你刚建立的服务名一致。

主机写你要连接的数据库的IP地址,本地的就写127.0.0.1,端口默认1521

3)右侧页面上边下拉框,选择‘数据库服务’,点击‘添加数据库’,全局数据库名、sid都可填写成sid,如果不知道自己的sid,可以通过以下操作查询

打开cmd,输入sqlplus,用户名:sys 密码:manager as sysdba,进入后输入 select name form V$database;

oracle主目录:product\11.2.0\dbhome_2(可以根据安装文件找根目录下的app文件)

4)右侧页面上边下拉框,选中‘其他服务’,点击‘添加服务’,如果是配置本地数据库监听,必须填写,配置远程数据库监听则不用,程序名称:随便填写,sid:对应服务名称下oraclr_connection_data中的sid,Oracle主目录:安装目录,\product\11.2.0\dbhome_2,到此监听配置结束,不用任何操作,继续以下服务添加操作。

5)添加服务

选中‘服务名称’,点击左侧加号‘’+‘’,填写网络服务名(只作为识别名称,可随意填写 如:本地库就写ceshi,远程库可直接写地址:xx.xx.xx.xx)

下一步,选择tcp/Ip(internet协议)

点击下一步,服务名称如果是本地可填写localhost,如果需要远程连接数据库,

点击下一步后会弹出测试页面,直接点击‘完成’,后点选中左上角‘文件-保存网络配置 选项。

如需测试是否配置正确,选中‘服务命名’下,你新添加的服务名称,点做左侧‘测试服务按钮’,如图

点击‘更改登录’输入用户名,密码,点击测试,如果出现连接测试成功字样,则代表连接测试成功

三、Net Configuration Assistant配置

1、Net Configuration Assistant 配置服务

1)启动Net Configuration Assistant。选择“本地Net服务名配置”选项。

2)选择下一步,本步骤可以对本地网络服务名进行添加,删除,测试是否正常连接等操作,选择添加选项。

3)点击下一步,填写服务名,该服务名就是Oracle安装时,为数据库取的全局数据库名

4)点击下一步,选择服务需要的协议,默认是TCP协议。推荐使用默认的TCP协议。

5)点击下一步,输入主机名,主机名可以是计算机名称,也可以是一个IP地址,主机如果是本机,可以使用本机计算机名称、“localhost”“127.0.0.1”、或者本机的IP地址。

6)单击下一步,选择是,进行测试选项。进入下图界面。

在测试时,默认采用的用户名和密码是system/xxx进行测试,如果用户system的密码不是“xxx”,有可能测试通不过,更改登录后,输入正确的用户名和密码后再进行测试即可。

7)测试成功后,单击下一步,出现如下界面,这一步是为本地网络服务命名,

点击下一步,配置完成.

2、Net Configuration Assistant配置监听

1)找到Net Configuration Assistant工具,单击运行,选中“监听程序配置”,单击“下一步”

2)打开监听程序配置对话框,可以添加、重新配置、重命名或删除监听程序。重命名或删除监听程序前,要先停止监听程序。第一次配置时选中“添加”,然后单击“下一步”。

3)打开配置监听程序名对话框,输入监听程序的名称。每个监听程序由唯一的名称标志。可以就是默认的LISTENER,然后单击“下一步”。

4)打开选择协议对话框,从“可用协议”列表框中选择协议TCP,单击右箭头按钮,将其移到“选定的协议”列表框中,单击“下一步”。

5)打开配置监听程序TCP/IP端口号对话框,有两个选项可以选择,“使用标准端口号 1521”和“请使用另一个端口号”。选中“使用标准端口号 1521”即可,单击“下一步”。

6)打开是否配置另一个监听程序对话框,选择不需要。单击“下一步”,结束配置监听。

四、listener.ora、tnsnames.ora、sqlnet.ora作用

1、listener.ora:

通过网络配置助手Net Configuration Assistant(netca)配置完监听程序之后,系统就会自动生成一个文件listener.ora。该文件为listener监听器进程的配置文件,存放在数据库服务器端。listener进程接受远程对数据库的接入申请并转交给Oracle的服务器进程,所以,如果不使用远程连接,listener进程就不是必须的。如果关闭listener进程,并不会影响已经存在的数据库连接。

listener.ora:用于配置监听服务,时时监听客户端请求。监听器位于服务器端,主要信息包括监听协议(TCP/IP协议)、地址。

product\11.2.0\dbhome_1\NETWORK\ADMIN的listener.ora。

命令:服务器端使用sqlplus

进入oracle但不登录:sqlplus/nolog

查看监听状态:lsnrctl status

启动监听:lsnrctl  start

停止监听:lsnrctl  stop

 

2、tnsnames.ora:

tnsnames.ora:用于配置客户端连接服务端数据库连接信息。客户端服务配置信息包括:服务器地址、服务名称(数据库实例)、端口号。

位置:product\11.2.0\dbhome_1\NETWORK\ADMIN的tnsnames.ora

命令:

测试是否能ping通:tnsping orclLocal

ORCL=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.24.187)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = drp)))

字段含义如下:

ORCL:自定义的网络服务名

ADDRESS_LIST:表示该客户机要经由多种协议与一台或多台服务器连接。在该样式文件中就表示该客户机要用TCP/IP协议来和服务器相连。

PROTOCOL: 指明要连接使用的协议。(例:PROTOCOL = TCP)

SERVICE_NAME:ORACLE数据库服务名。(例:SERVICE_NAME = drp)

HOST:是TCP/IP协议使用的服务器IP地址。(例:HOST = 192.168.24.187)

PORT:是TCP/IP使用的端口地址。(例:PORT = 1521)

 

3、sqlnet.ora

用于配置网络连接时所使用的连接方式,在ORACLE_HOME/network/admin目录下

# 指定启动一个或多个认证服务

SQLNET.AUTHENTICATION_SERVICES= (NTS)

注:

NONE:作用是不允许通过OS系统用户登录数据库,需要提供用户名及密码;

ALL:作用是允许所有的登录方式

NTS:作用是允许本地操作系统用户认证;

# 指定CLIENT NAME解析方法的次序,默认是NAMES.DIRECTORY_PATH=(tnsnames, onames, hostname)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

常用参数设置

1.设置windows下允许使用windows nt本地认证

SQLNET.AUTHENTICATION_SERVICES=(nts)

2.设置Oracle客户端连接串命名查找顺序

NAMES.DIRECTORY_PATH=(tnsnames, onames,ezconnect)

允许的值有:

1)tnsnames使用客户端的tnsnames.ora解析

2)ldap使用目录访问协议解析,需要有目录服务

3)ezconnect or hostname,允许使用tcp/ip连接串,包含主机名,端口,服务名

4)cds分布式环境的数据库名

5)nis (Network Information Service (NIS) external naming method),主要用于外部程序解析

6)onames:通过Oracle Name Server解析 www.2cto.com 

3.设置客户端连接会话超时时间(单位分钟)

定期检测客户端是否还是活动的,设置为0不检测

SQLNET.EXPIRE_TIME = 10 另外还有:

客户端建立连接超时时间(单位秒,默认60)

SQLNET.INBOUND_CONNECT_TIMEOUT=10

Oracle建议在listener.ora中也进行配置

接受超时时间(单位秒)

SQLNET.RECV_TIMEOUT=3

发送超时时间(单位秒)

SQLNET.SEND_TIMEOUT=3

4.客户端限制

是否进行限制(默认no):

TCP.VALIDNODE_CHECKING

如:TCP.VALIDNODE_CHECKING=yes

限制客户端访问

TCP.EXCLUDED_NODES=(hostname | ip_address, hostname | ip_address, ...)

如:TCP.EXCLUDED_NODES=(finance.us.acme.com, mktg.us.acme.com, 144.25.5.25)

允许客户端访问,会覆盖限制访问

TCP.INVITED_NODES=(hostname | ip_address, hostname | ip_address, ...)

如:TCP.INVITED_NODES=(sales.us.acme.com, hr.us.acme.com, 144.185.5.73)

5.设置立即发送

设置等待一段时间或者数据包凑够多大才会一起发送,或者可以让数据立即发送

TCP.NODELAY=yes

6.设置使用专享连接还是公用链接

设置为on会在客户端连接串后加上(SERVER=dedicated)

USE_DEDICATED_SERVER=on/off

//

因oracle操作环境都在局域网,不能提供真实素材,部分素材来源于网络,本文无意于抄袭,只因网上oracle数据库的相关教程或者说明都过于零散,因此整合收集,未能避免小部分地方会存在前后不一致的地方,尽量去查看oracle的官方文档,尽管官方文档介绍较为琐碎,但它是最全的文档。

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值