关于Struts2 + spring + hibernate进Q群: 130529143交流。
有偿技术支持Q群:398162181

Oracle学习笔记

1.安装数据库软件

1.1安装oracle数据库服务端

oracle服务端安装在远程服务器上。

在该服务器上配置监听。

配置网络服务。

Oracle 数据库监听配置

一、监听器(LISTENER)

  监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。

二、本地服务名(Tnsname)

  Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器端监听器对客户端连接请求进行合法检查,如果连接请求有效,则进行连接,否则拒绝该连接。

本地服务名是Oracle客户端网络配置的一种,另外还有Oracle名字服务器(Oracle Names Server)等。Oracle常用的客户端配置就是采用的本地服务名,本文中介绍的也主要是基于本地服务名的配置。

三、Oracle网络连接配置方法

  配置Oracle服务器端与客户端都可以在其自带的图形化Oracle网络管理器(Oracle Net Manager)里完成(强烈建议在这个图形化的工具下完成Oracle服务端或客户端的配置)。在Windows下,点击“开始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”启动Oracle网络管理器工具,在Linux/Unix下,利用netmgr命令来启动图形化Oracle网络管理器,如:

$ netmgr

Windows下启动Net Manager图形窗口如下图示:

方法/步骤

Oracle监听器配置(LISTENER)

  如图(一)示,选中树形目录中监听程序项,再点击左上侧“+”按钮添加监听程序,点击监听程序目录,默认新加的监听器名称是LISTENER(该名称也可以由任意合法字符命名)。选中该名称,选中窗口右侧栏下拉选项中的“监听位置”,点击添加地址按钮。在出现的网络地址栏的协议下拉选项中选中“TCP/IP”,主机文本框中输入主机名称或IP地址(如果主机即用作服务端也作为客户端,输入两项之一均有效;如果主机作为服务端并需要通过网络连接,建议输入IP地址),端口文本框中输入数字端口,默认是1521,也可以自定义任意有效数字端口。配置好的监听位置如下图示:

2

选中窗口右侧栏下拉选项中的“数据库服务”,点击添加数据库按钮。在出现的数据库栏中输入全局数据库名,如myoracle。注意这里的全局数据库名与数据库SID有所区别,全局数据库名实际通过域名来控制在同一网段内数据库全局命名的唯一性,就如Windows下的域名控制器,如这里可以输入 myoracle.192.168.1.5。Oracle主目录可以不填写,输入SID,如myoracle。完整的数据库服务配置如下图示:

保存以上配置,默认即可在Oracle安装目录下找到监听配置文件 (Windows下如D:oracleora92networkadminlistener.ora,Linux/Unix下$ORACLE_HOME/network/admin/listerer.ora)。至此,Oracle服务端监听器配置已经完成。

本地服务名配置(Tnsnames)

  本地服务名是基于Oracle客户端的网络配置,所以,如果客户端需要连接数据库服务器进行操作,则需要配置该客户端,其依附对象可以是任意一台欲连接数据库服务器进行操作的pc机,也可以是数据库服务器自身。如前面所介绍,可以利用Oracle自带的图形化管理工具Net Manager来完成Oracle客户端的配置。选中如图(一)中的服务命名,再点击左上侧“+”按钮,弹出如下图示对话框:

输入Net服务名,如myoracle,点击下一步,进入下图示对话框:

选中TCP/IP(Internet协议),点击下一步,如下图示:

输入主机名与端口号。注意这里的主机名与端口号必须与数据库服务器端监听器配置的主机名和端口号相同。点击下一步,如下图示:

选中(Oracle8i或更高版本)服务名,输入服务名。这里的服务名实际上就是数据库服务器端监听器配置中的全局数据库名,前者与后者必须相同。连接类型通常选专用服务器,这要视数据库服务器的配置而定,如果配置的共享数据库服务器,这里的连接类型就要选共享服务器,否则建议选专用服务器(关于专用服务器的介绍请参阅相关文档)。配置好后点击下一步,如下图示:

如果数据库服务器端相关服务启动了,可以点击测试按钮进行连接测试。Oracle默认是通过scott/tiger用户进行测试连接,由于scott用户是 Oracle自带的示例用户,对于正式的业务数据库或专业测试数据库可能没有配置这个用户,所以需要更改成有效的用户登录才可能测试成功。如果这里测试连接不成功,也不要紧,先点完成按钮结束配置。

  回到Oracle网络管理器(Oracle Net Manager)主窗口,保存配置,默认即可在Oracle安装目录下找到本地服务名配置文件 (Windows下如D:oracleora92networkadmintnsnames.ora,Linux/Unix下$ORACLE_HOME/network/admin/ tnsnames.ora)。配置完成的本地服务名如下图示:

树形目录下的服务命名可以通过编辑菜单里的重命名菜单更改成任意合法字符组成的服务名称,注意服务名称前不能有空格字符,否则可能无法连接数据库服务器。

连接数据库服务器

(1)   启动服务器端监听器与数据库服务

Linux/Unix下,启动监听器:

$ lsnrctlstart

关闭监听器:

$ lsnrctl stop

查看监听状态:

$ lsnrctl status

启动数据库:

$ sqlplus /nolog

SQL>conn sys@myoracle assysdba   --这里的myoracle是前面配置的客户端本地服务名

SQL>conn / as sysdba

SQL>startup

Windows下,启动监听器:

C:lsnrctl start

启动Oracle实例服务:

C:oradim ?ahref="http://game.pchome.net/pcgame" class="none"title="cs" rel="external">cstartup –sidmyoracle

关闭Oracle实例服务:

C:oradim –shutdown –sid myoracle

  以上服务必须同时启动,客户端才能连接数据库。由于默认配置的监听器名称是Listener,上述命令可以正常启动监听器,如果监听器名称是其它名称,如aListener,则需要用下列方式才能启动:

Linux/Unix下:

$ lsnrctl start aListener

Windows下:

C:lsnrctl start aListener

(2)   测试连接数据库服务器

  测试的方法多种多样,可以在上面配置本地服务名时进行测试,也可以是第三方客户端工具,如PL/SQL Developer,最方便的是用Oracle自带的sqlplus工具,以下利用sqlplus进行测试:

C:sqlplus /nolog

SQL>conn zgh@myoracle

已连接。

客户端连接服务器端常见问题排除方法

  要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致),再根据错误提示解决。下面列出几种常见的连接问题:

1、 ORA-12541:TNS: 没有监听器

显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:

$ lsnrctl start

C:lsnrctl start

2、 ORA-12500:TNS: 监听程序无法启动专用服务器进程

对于Windows而言,没有启动Oracle实例服务。启动实例服务:

C:oradim –startup -sidmyoracle

3、 ORA-12535:TNS: 操作超时

  出现这个问题的原因很多,但主要跟网络有关。解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接。

4、 ORA-12154:TNS: 无法处理服务名

  检查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件(Windows下如D:oracleora92networkadmin tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)里每项服务的首 行服务名称前不能有空格。

5、 ORA-12514:TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME

  打开Net Manager,选中服务名称,检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。

6、 Windows下启动监听服务提示找不到路径

  用命令或在服务窗口中启动监听提示找不到路径,或监听服务启动异常。打开注册表,进入HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/OracleOraHome92TNSListener项,查看ImagePath字符串项是否存在,如果没 有,设定值为D:oracleora92BINTNSLSNR,不同的安装路径设定值做相应的更改。这种方法同样适用于Oracle实例服务,同上,找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleServiceMYORACLE项,查看ImagePath字符串项是否存在,如果没有,则新建,设定值为d:oracleora92 binORACLE.EXE MYORACLE。

以上是Oracle客户端连接服务器端常见的一些问题,当然不能囊括所有的连接异常。解决问题的关键在于方法与思路,而不是每种问题都有固定的答案。

在该服务器上配置本地网络服务。

1.2安装数据库客户端。

客户端安装在本地。

客户端配置网络服务名。

3. 使用方法

3.1创建表空间

需求:建立表空间:equms_v1, 用户名:equmsdba, 密码:equmsdba123 。

/*以dba的身份登录*/

sys/Oracle123 as sysdba;

/*删除已存在的表空间(若存在的话)*/

drop tablespace equms_v1_temp;

drop tablespace equms_v1;

/*创建表空间分为四步 */

/*第1步:创建临时表空间  */

/* tempfile 'C:\equms_v1_temp.dbf'  指定表临时空间文件的存储位置,确保该目录存在*/

create temporary tablespaceequms_v1_temp

tempfile 'C:\equms_v1_temp.dbf'

size 50m

autoextend on

next 50m maxsize 5120m

extent management local;

/*第2步:创建数据表空间  */

/* datafile 'C:\equms_v1.dbf'  指定表空间文件的存储位置,确保该目录存在*/

create tablespace equms_v1

logging

datafile 'C:\equms_v1.dbf'

size 50m

autoextend on

next 50m maxsize 5120m

extent management local;

/*第3步:创建用户并指定表空间  */

create user equmsdba identified byequmsdba123

default tablespace equms_v1

temporary tablespace equms_v1_temp;

/*第4步:给用户授予权限  */

grant connect,resource,dba to equmsdba;

3.2数据库管理一

(1) oracle登录

sqlplus下:

//以dba身份登录,要有assysdba。

sys/equms123@127.0.0.1:1521/equms as sysdba

//以普通身份登录

scott/Scott123@127.0.0.1:1521/equms

//注意:

//服务端监听配置的端口若是1521,则可省略端口号,默认是1521.

scott/Scott123@127.0.0.1/equms

//缺省连接127.0.0.1:1521端口下的环境变量中的oracle实例

system/equms123

//注意:@127.0.0.1/equms:指明连接哪个数据库实例,equms就是全局数据库名

ip地址应是数据库服务端所在服务器的ip

这些是在登录后的操作。

1、运行SQLPLUS工具

C:\Users\wd-pc>sqlplus

2、直接进入SQLPLUS命令提示符

C:\Users\wd-pc>sqlplus /nolog

3、以OS身份连接 

C:\Users\wd-pc>sqlplus / as sysdba   或

SQL>connect / as sysdba

4、普通用户登录

C:\Users\wd-pc>sqlplus scott/123456  或

SQL>connect scott/123456  或

SQL>connect scott/123456@servername

5、以管理员登录

C:\Users\wd-pc>sqlplus sys/123456 as sysdba 或

SQL>connect sys/123456 as sysdba

6、切换用户

SQL>conn hr/123456

注:conn同connect

 7、退出

exit

(2)查询当前登录用户所在的全局数据库名:

select * fromglobal_name;

(3)查询当前数据库名:

select database_name from v$database;

(4)查询当前数据库实例名:

方法一:
select name from v$database;结果:

select database_name from v$database;

方法二:
select instance_name from v$instance;结果:

方法三:
在plsql的命令窗口下执行:
show parameter instance结果:

注:通常数据库实例名与数据库名相同。

比如我们作开发,要连接数据库,就得连接数据库实例名:

jdbc:oracle:thin:@localhost:1521:orcl(orcl就为数据库实例名)

(5)查询已存在的表空间:

selecttablespace_name from dba_tablespaces;

//查询当前登录用户所在的实例中,所有的表空间名称。

(6)删除已存在的表空间:

drop tablespaceequms_v1 ;

//删除表空间equms_v1,删除后还要删除相应的表空间文件,

如equms_v1.dbf,equms_v1_temp.dbf这是创建表空间是生成的文件。

(7)查询当前用户登录的表空间所拥有的序列

select * fromuser_sequences;

(8)创建序列

CREATE SEQUENCEjob_sequence

INCREMENT BY 1

START WITH 1

NOMAXVALUE

NOCYCLE

CACHE 10;

(9)修改用户名密码

alter user scott identified by Scott123;  //将scott用户的密码修改为Scott123,修改前先以dba身份登录,登陆方式见(1)

(10)查看sga

select * from v$sga;      //查看系统全局共享区SystemGlobal Area(SGA)

(11)查看数据库版本

select * from v$version;  //查看当前数据库版本

ora-01119: http://wenku.baidu.com/link?url=FT1XKB9skatibK9fhNP6nwBG0E-oBOhkxsv7Gqms20Z5AqkdcJ1PM6yU_kqCfida5MZmIstOk5XNXzSkwtr8YKSTQC5kPX7Gfg487uGK4v_

http://blog.csdn.net/zwk626542417/article/details/39667999

3.3数据库管理二

3.3.1数据库备份:

expCIBINPUT/CIBINPUT@ file=C:\\DMP\20130620.DMP full=y

"CIBINPUT/CIBINPUT@dba"其中“CIBINPUT”分别指表空间的账号和密码,“dba”指表空间名

3.3.2数据库恢复:

imp CIBINPUT/CIBINPUT@dbafile=C:\DMP\20130620.DMP full=y

"CIBINPUT/CIBINPUT@dba"其中“CIBINPUT”分别指表空间的账号和密码,“dba”指表空间名

附录

1监听详解:

http://blog.itpub.net/9399028/viewspace-683834/

在数据库启动过程,oracle会向监听程序注册相应的服务,任意的一个数据库都会有两条信息注册到监听器中:oracle对应的instance_name和service_name。

客户端是通过监听程序连接到数据库服务器的,监听中记录着相应的oracleservice,而客户端只需要在tnsnames中提供正确的服务名就可以建立和数据库服务器的连接。

以下为服务器上的listener.ora文件

# listener.oraNetwork Configuration File:C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora

# Generated byOracle configuration tools.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = CLRExtProc)

(ORACLE_HOME =C:\app\Administrator\product\11.2.0\dbhome_1)

(PROGRAM = extproc)

(ENVS ="EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST =CaoPeng)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY =EXTPROC1521))

)

)

ADR_BASE_LISTENER =C:\app\Administrator

其中,LISTENER是服务器中监听进程的名称;

PROTOCOL  表明所使用的网络协议,若是TCP/IP协议,则该值必须为“TCP”;

HOST  表示服务器的网络地址,为服务器的IP或者网内的机器名;

PORT  指TCP/IP协议在主机中所占用端口号,ORACLE缺省使用1521,是在安装ORACLE数据库时定义的,在安装时可以改变,安装完成后不能改变此值;

SID_NAME  指服务器上运行的ORACLE数据库名称,该值应与.bash_profile文件中的环境变量ORACLE_SID相同(一般情况下此文件为缺省值“PLSExtProc”);

ORACLE_HOME  是指ORACLE数据库的主目录,该值也应与. bash_profile文件中的环境变量ORACLE_HOME相同。

客户机为了和服务器连接,必须先和服务器上的监听进程联络。ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息。一般tnsnames.ora 是建立在客户机上的。如果是客户机/服务器结构,整个网络上只有一台机器安装了ORACLE数据库服务器,那么只需在每个要访问ORACLE服务器的客户机上定义该文件,在服务器上无需定义。但是,如果网络上有多台机器均安装了ORACLE数据库服务器,并且服务器之间有数据共享的要求,那么在每台服务器上都必须定义该文件。

以下是客户端tnsnames.ora内容:

# tnsnames.oraNetwork Configuration File:C:\app\Administrator\product\11.2.0\client_1\network\admin\tnsnames.ora

# Generated byOracle configuration tools.

ORCL.127.0.0.1 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =127.0.0.1)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)

EXTPROC_CONNECTION_DATA=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

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

PROTOCOL 指明要连接使用的协议。

SERVICE_NAME  “SERVICE_NAME”就是“Global Database Name”,通常的格式为“name.domain”,

HOST  是TCP/IP协议使用的服务器IP地址或者机器名称。

PORT  是TCP/IP使用的端口地址。

SID  指定要连接的服务器上ORACLE数据库的ORACLE_SID。

SERVER=DEDICATED 表示用专用服务器连接ORACLE数据库,该选项在服务器上的tnsnames.ora文件中会出现。

Lsnrctl命令综述

  Lsnrctl命令用来管理Oracle监听器,是一个命令行界面。想调用这个命令行工具,在命令行键入lsnrctl即可。可以在LSNRCTL>提示符下键入help来显示这些命令的一份清单。

  Services 列举出服务的一个汇总表及为每个协议服务处理程序所建立和拒绝的连接信息个数

  Start listener 启动指定的监听器

  Status listener显示指定监听器的状态

  Stop listener 关闭指定的监听器

  Trace 打开监听器的跟踪特性

  Version 显示Oracle Net软件与协议适配器的版本

  Change_password 允许用户修改关闭监听器所需要的密码

  Reload 重新读取listener.ora文件,但不关闭监听器。如果该文件发生了变化,重新刷新监听器。

  Save_config 当从lsnrctl工具中对listener.ora文件进行了修改时,复制一个叫做listener.bak的listener.ora文件

  Exit 退出lsnrctl实用工具

  Quit 执行和exit相同的功能

  C:\>lsnrctl services

Oracle数据库,实例,表空间,用户,表之间的关系简析
一、数据库
  我们在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库)如下图:

全局数据库名:就是一个数据库的标识,在安装时就要想好,以后一般不修改,修改起来也麻烦,因为数据库一旦安装,数据库名就写进了控制文件,数据库表,很多地方都会用到这个数据库名。

全局数据库,是数据库系统的入口,它会内置一些高级权限的用户如SYS,SYSTEM等。我们用这些高级权限账号登陆就可以在数据库实例中创建表空间,用户,表了。

  查询当前数据库名:

Sql代码  

1.  select name from v$database;

二、数据库实例

  用Oracle官方描述:实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合。

  其实就是用来访问和使用数据库的一块进程,它只存在于内存中。就像Java中new出来的实例对象一样。

  我们访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。

  实例名指的是用于响应某个数据库操作的数据库管理系统的名称。她同时也叫SID。实例名是由参数instance_name决定的。

  

查询当前数据库实例名:

Sql代码  

1.  select instance_name from v$instance;

  数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。

Xml代码  

1. jdbc:oracle:thin:@localhost:1521:orcl(orcl就为数据库实例名)

  一个数据库可以有多个实例,在作数据库服务集群的时候可以用到。

三、表空间

  Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。

  有了数据库,就可以创建表空间。

  创建表空间语法:

Sql代码  

1.  Create TableSpace 表空间名称

2.  DataFile          表空间数据文件路径

3.  Size              表空间初始大小

4.  Autoextend on

  如:

  

Sql代码  

1.  create tablespace db_test

2.  datafile 'D:\oracle\product\10.2.0\userdata\db_test.dbf'

3.  size 50m

4.  autoextend on;

  查看已经创建好的表空间:

  

Sql代码  

1.  select default_tablespace, temporary_tablespace, d.username

2.  from dba_users d

四、用户

  Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间。

  上面我们建好了数据库和表空间,接下来建用户:

  创建新用户

Sql代码  

1.  CREATE USER          用户名

2.  IDENTIFIED BY        密码

3.  DEFAULT TABLESPACE   表空间(默认USERS)

4.  TEMPORARY TABLESPACE 临时表空间(默认TEMP)

  如:

  

Sql代码  

1.  CREATE USER utest

2.  IDENTIFIED BY utestpwd

3.  DEFAULT TABLESPACE db_test

4.  TEMPORARY TABLESPACE temp;(这里临时表空间不能使用我们创建的db_test,不知为何?)

  有了用户,要想使用用户账号管理自己的表空间,还得给它分权限:

  

Sql代码  

1.  GRANT CONNECT TO utest;

2.  GRANT RESOURCE TO utest;

3.  GRANT dba TO utest;--dba为最高级权限,可以创建数据库,表等。

  查看数据库用户:

  

Sql代码  

1.  select  * from dba_users;

五、表

  有了数据库,表空间和用户,就可以用自定义的用户在自己的表空间创建表了。有了表,我们可以开发了 。

oracle体系结构

在本文里你可以了解以下内容

  1、 ORACLE 实例——包括内存结构与后台进程

  2、 ORACLE 数据库——物理操作系统文件的集合

  3、 了解内存结构的组成

  4、 了解后台进程的作用

  5、 了解数据库的物理文件

  6、 解释各种逻辑结构

  一、ORACLE实例

  1、ORACLE 实例

  SystemGlobal Area(SGA) 和Background Process 称为数据库的实例。

  2、ORACLE 数据库

  一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等)

  3、系统全局共享区System Global Area(SGA)

  SystemGlobal Area 是一块巨大的共享内存区域,他被看做是Oracle数据库的一个大缓冲池,这里的数据可以被ORACLE的各个进程共用。其大小可以通过如下语句查看:

  SQL>select * from v$sga;

  NAMEVALUE

  -----------------------------

  FixedSize 39816

  VariableSize 259812784

  DatabaseBuffers 1.049E+09

  RedoBuffers 327680

  更详细的信息可以参考V$sgastat、V$buffer_pool

  主要包括以下几个部分:

  a、 共享池(Shared pool)

  共享池是SGA中最关键的内存片段,特别是在性能和可伸缩性上。一个太小的共享池会扼杀性能,使系统停止,太大的共享池也会有同样的效果,将会消耗大量的CPU来管理这个共享池。不正确的使用共享池只会带来灾难。共享池主要又可以分为以下两个部分:

  SQL语句缓冲(LibraryCache)

   当一个用户提交一个SQL语句,Oracle会将这句SQL进行分析(parse),这个过程类似于编译,会耗费相对较多的时间。在分析完这个SQL, Oracle会把他的分析结果给保存在Sharedpool的LibraryCache中,当数据库第二次执行该SQL时,Oracle自动跳过这个分析过程,从而减少了系统运行的时间。这也是为什么第一次运行的SQL比第二次运行的SQL要慢一点的原因。

  

  下面举例说明parse的时间

  SQL>select count(*) fromscpass ;

  COUNT(*)

  ----------

  243

  Elapsed:00:00:00.08

  

  这是在Share_pool和Databuffer 都没有数据缓冲区的情况下所用的时间

  SQL>alter system flush SHARED_POOL;

  Systemaltered.

  

  清空Share_pool,保留Databuffer

  SQL>select count(*) from scpass ;

  COUNT(*)

  ----------

  243

  Elapsed:00:00:00.02

  SQL>select count(*) from scpass ;

  COUNT(*)

  ----------

  243

  Elapsed:00:00:00.00

  

  从两句SQL的时间差上可以看出该SQL的Parse 时间约为00:00:00.02

  

   对于保存在共享池中的SQL语句,可以从V$Sqltext、v$Sqlarea中查询到,对于编程者来说,要尽量提高语句的重用率,减少语句的分析时间。一个设计的差的应用程序可以毁掉整个数据库的Sharepool,提高SQL语句的重用率必须先养成良好的变成习惯,尽量使用Bind变量。

  

  数据字典缓冲区(DataDictionary Cache)

  

  显而易见,数据字典缓冲区是ORACLE特地为数据字典准备的一块缓冲池,供ORACLE内部使用,没有什么可以说的。

  

  b、块缓冲区高速缓存(DatabaseBuffer Cache)

  

   这些缓冲是对应所有数据文件中的一些被使用到的数据块。让他们能够在内存中进行操作。在这个级别里没有系统文件,,户数据文件,临时数据文件,回滚段文 件之分。也就是任何文件的数据块都有可能被缓冲。数据库的任何修改都在该缓冲里完成,并由DBWR进程将修改后的数据写入磁盘。

  

  这个缓冲区的块基本上在两个不同的列表中管理。一个是块的“脏”表(DirtyList),需要用数据库块的

  

   书写器(DBWR)来写入,另外一个是不脏的块的列表(FreeList),一般的情况下,是使用最近最少使用(Least Recently Used,LRU)算法来管理。块缓冲区高速缓存又可以细分为以下三个部分(Defaultpool,Keep pool,Recycle pool)。如果不是人为设置初始化参数(Init.ora),ORACLE将默认为Defaultpool。由于操作系统寻址能力的限制,不通过特殊设置,在32位的系统上,块缓冲区高速缓存最大可以达到1.7G,在64位系统上,块缓冲区高速缓存最 大可以达到10G。

  

  c、重做日志缓冲区(Redo logbuffer)

  

  重做日志文件的缓冲区,对数 据库的任何修改都按顺序被记录在该缓冲,然后由LGWR进程将它写入磁盘。这些修改信息可能是DML语句,如(Insert,Update,Delete),或DDL语句,如(Create,Alter,Drop等)。 重做日志缓冲区的存在是因为内存到内存的操作比较内存到硬盘的速度快很多,所以重作日志缓冲区可以加快数据库的操作速度,但是考虑的数据库的一致性与可恢 复性,数据在重做日志缓冲区中的滞留时间不会很长。所以重作日志缓冲区一般都很小,大于3M之后的重作日志缓冲区已经没有太大的实际意义。

  

  d、Java程序缓冲区(JavaPool)

  

  Java的程序区,Oracle 8I以后,Oracle 在内核中加入了对Java的支持。该程序缓冲区就是为Java 程序保留的。如果不用Java程序没有必要改变该缓冲区的默认大小。

  

  e、大池(LargePool)

  

  大池的得名不是因为大,而是因为它用来分配大块的内存,处理比共享池更大的内存,在8.0开始引入。

  下面对象使用大池:

  MTS——在SGA的LargePool中分配UGA

  语句的并行查询(ParallelExecuteion of Statements)——允许进程间消息缓冲区的分配,用来协调 并行查询服务器

  备份(Backup)——用于RMAN磁盘I/O缓存

  

  4、后台进程(Backgroundprocess)

  

   后台进程是Oracle的程序,用来管理数据库的读写,恢复和监视等工作。ServerProcess主要是通过他和userprocess进行联系和沟通,并由他和userprocess进行数据的交换。在Unix机器上,Oracle后台进程相对于操作系统进程,也就是说,一个Oracle后台进程将启动一个操作系统进 程;在Windows机器上, Oracle后台进程相对于操作系统线程,打开任务管理器,我们只能看到一个ORACLE.EXE的进程,但是通过另外的工具,就可以看到包含在这里进程 中的线程。

  在Unix上可以通过如下方法查看后台进程:

  ps–ef | grep ora_

  #ps -ef | grep ora_ | grep XCLUAT

  oracle29431 1 0 Sep 02 2:02ora_dbwr_SID

  oracle29444 1 0 Sep 02 0:03ora_ckpt_SID

  oracle29448 1 0 Sep 02 2:42ora_smon_SID

  oracle29442 1 0 Sep 02 3:25ora_lgwr_SID

  oracle29427 1 0 Sep 02 0:01ora_pmon_SID

  

  a、Oracle系统有5 个基本进程他们是

  DBWR(数据文件写入进程)

  LGWR(日志文件写入进程)

  SMON(系统监护进程)

  PMON(用户进程监护进程)

  CKPT(检查点进程,同步数据文件, 日志文件,控制文件)

  

  b、DBWR

  将修改过的数据缓冲区的数据写入对应数据文件

  维护系统内的空缓冲区

  这里指出几个容易错误的概念:

  当一个更新提交后,DBWR把数据写到磁盘并返回给用户提交完成.

  DBWR会触发CKPT 后台进程

  DBWR不会触发LGWR 进程

  上面的概念都是错误的.

  DBWR是一个很底层的工作进程,他批量的把缓冲区的数据写入磁盘。和任何前台用户的进程几乎没有什么关系,也不受他们的控制。至于DBWR会不会触发LGWR和CKPT进程,我们将在下面几节里讨论。

  DBWR工作的主要条件如下

  DBWR超时

  系统中没有多的空缓冲区用来存放数据

  CKPT进程触发DBWR 等

  

  c、LGWR

  将重做日志缓冲区的数据写入重做日志文件,LGWR是一个必须和前台用户进程通信的进程。当数据被修改的时候,系统会产生一个重做日志并记录在重做日志缓冲区内。这个重做日志可以类似的认为是以下的一个结构:

  SCN=000000001000

  数据块ID

  对象ID=0801

  数据行=02

  修改后的数据=0011

  提交的时候,LGWR必须将被修改的数据的重做日志缓冲区内数据写入日志数据文件,然后再通知前台进程提交成功,并由前台进程通知用户。从这点可以看出LGWR承担了维护系统数据完整性的任务。

  LGWR工作的主要条件如下

  用户提交

  有1/3重做日志缓冲区未被写入磁盘

  有大于1M重做日志缓冲区未被写入磁盘

  超时

  DBWR需要写入的数据的SCN号大于LGWR 记录的SCN号,DBWR 触发LGWR写入

  

  d、SMON

  工作主要包含

  清除临时空间

  在系统启动时,完成系统实例恢复

  聚结空闲空间

  从不可用的文件中恢复事务的活动

  OPS中失败节点的实例恢复

  清除OBJ$表

  缩减回滚段

  使回滚段脱机

  

  e、PMON

  主要用于清除失效的用户进程,释放用户进程所用的资源。如PMON将回滚未提交的工作,释放锁,释放分配给失败进程的SGA资源。

  

  f、CKPT

  同步数据文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了数据文件,日志文件,控制文件的不一至,这就需要CKPT进程来同步。CKPT会更新数据文件/控制文件的头信息。

  CKPT工作的主要条件如下

  在日志切换的时候

  数据库用immediate,transaction , normal 选项shutdown数据库的时候

  根据初始话文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET的设置的数值来确定

  用户触发

  以下进程的启动需要手工配置

  

  g、ARCH

  当数据库以归档方式运行的时候,Oracle会启动ARCH进程,当重做日志文件被写满时,日志文件进行切换,旧的重做日志文件就被ARCH进程复制到一个/多个特定的目录/远程机器。这些被复制的重做日志文件被叫做归档日志文件。

  

  h、RECO

  负责解决分布事物中的故障。Oracle可以连接远程的多个数据库,当由于网络问题,有些事物处于悬而未决的状态。RECO进程试图建立与远程服务器的通信,当故障消除后,RECO进程自动解决所有悬而未决的会话。

  i、服务进程ServerProcess

  服务进程的分类

  专用服务进程(DedicatedServer Process)

  一个服务进程对应一个用户进程

  共享服务进程(MultiTreadedServer Process)

  一个服务进程对应多个用户进程,轮流为用户进程服务。

  PGA& UGA

  PGA= Process Global Area

  UGA= User Global Area

  他保存了用户的变量、权限、堆栈、排序空间等用户信息,对于专用服务器进程,UGA在PGA中分配。对于多线程进程,UGA在Largepool中分配。

  

  j、用户进程UserProcess

  在客户端,将用户的SQL语句传递给服务进程

  

  5、一个贯穿数据库全局的概念----系统改变号SCN(SystemChange Number)

  系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。

  

  a.查询语句不会使SCN增加,就算是同时发生的更新,数据库内部对应的SCN也是不同的。这样一来就保证了数据恢复时候的顺序。

  

  b.维持数据的一致性

  

  二、ORACLE数据库

  ORACLE数据库的组成——物理操作系统文件的集合。主要包括以下几种。

  1、控制文件(参数文件init.ora记录了控制文件的位置)

  控制文件包括如下主要信息

  数据库的名字,检查点信息,数据库创建的时间戳

  所有的数据文件,联机日志文件,归档日志文件信息

  备份信息等

  有了这些信息,Oracle就知道那些文件是数据文件,现在的重做日志文件是哪些,这些都是系统启动和运行的基本条件,所以他是Oracle运行的根本。如果没有控制文件系统是不可能启动的。控制文件是非常重要的,一般采用多个镜相

控制文件的丢失,将使数据库的恢复变的很复杂。

  控制文件信息可以从V$Controlfile中查询获得

  

  2、数据文件(数据文件的详细信息记载在控制文件中)

  可以通过如下方式查看数据文件

  SQL>select name from v$datafile;

  NAME

  ---------------------------------------------

  /u05/dbf/PROD/system_01.dbf

  /u06/dbf/PROD/temp_01.dbf

  /u04/dbf/PROD/users_01.dbf

  /u09/dbf/PROD/rbs_01.dbf

  /u06/dbf/PROD/applsys_indx_01.dbf

  /u05/dbf/PROD/applsys_data_01.dbf

  从以上可以看出,数据文件大致可以分为以下几类:

  

  i.系统数据文件(system_01.dbf)

  存放系统表和数据字典,一般不放用户的数据,但是用户脚本,如过程,函数,包等却是保存在数据字典中的。

  名词解释:数据字典 数据字典是一些系统表或视图,他存放系统的信息,他包括数据库版本,数据文件信息,表与索引等段信息,系统的运行状态等各种和系统有关的信息和用户脚本信息。数据库管理员可以通过对数据字典的查询,就可以了解到Oracle的运行状态。

  

  ii.回滚段文件(rbs_01.dbf)

  如果数据库进行对数据的修改,那么就必须使用回滚段,回滚段是用来临时存放修改前的数据(BeforeImage)。回滚段通常都放在一个单独的表空间上(回滚表空间),避免表空间碎片化,这个表空间包含的数据文件就是回滚数据文件。

  

  iii.临时数据文件(temp_01.dbf)

  主要存放用户的排序等临时数据,与回滚段相似,临时段也容易引起表空间碎片化,而且没有办法在一个永久表空间上开辟临时段,所以就必须有一个临时表空间,它所包含的数据文件就是临时数据文件,主要用于不能在内存上进行的排序操作。我们必须为用户指定一个临时表空间。

  

  iv.用户数据文件(/applsys_data_01.dbf,applsys_indx_01.dbf)

  存放用户数据,这里列举了两类常见的用户型数据,一般数据和索引数据,一般来说,如果条件许可的话,可以考虑放在不同的磁盘上。

  

  3、重做日志文件(联机重做日志)

   用户对数据库进行的任何操作都会记录在重做日志文件。在了解重做日志之前必须了解重做日志的两个概念,重做日志组和重做日志组成员(Member),一 个数据库中至少要有两个日志组文件,一组写完后再写另一组,即轮流写。每个日志组中至少有一个日志成员,一个日志组中的多个日志成员是镜相关系,有利于日 志文件的保护,因为日志文件的损坏,特别是当前联机日志的损坏,对数据库的影响是巨大的。

  联机日志组的交换过程叫做切换,需要特别注意的是,日志切换在一个优化效果不好的数据库中会引起临时的“挂起”。挂起大致有两种情况:

  在归档情况下,需要归档的日志来不及归档,而联机日志又需要被重新利用

  检查点事件还没有完成(日志切换引起检查点),而联机日志需要被重新利用

  解决这种问题的常用手段是:

  

  i.增加日志组

  

  ii.增大日志文件成员大小

  通过v$log可以查看日志组,v$logfile可以查看具体的成员文件。

  

  4、归档日志文件

   Oracle可以运行在两种模式之中,归档模式和不归档模式。如果不用归档模式,当然,你就不会有归档日志,但是,你的系统将不会是一个实用系统,特别 是不能用于生产系统,因为你可能会丢失数据。但是在归档模式中,为了保存用户的所有修改,在重做日志文件切换后和被覆盖之间系统将他们另外保存成一组连续 的文件系列,该文件系列就是归档日志文件。

  有人或许会说,归档日志文件占领我大量的硬盘空间,其实,具体想一想,你是愿意浪费一点磁盘空间来 保护你的数据,还是愿意丢失你的数据呢?显而义见,我们需要保证我们的数据的安全性。其实,归档并不是一直占领你的磁盘空间,你可以把她备份到磁带上,或 则删除上一次完整备份前的所有日志文件。

  

  5、初始化参数文件

  initSID.ora或init.ora文件,因为版 本的不一样,其位置也可能会不一样。在8i中,通常位于$ORACLE_HOME/admin//Pfile下,初始化文件记载了许多数据库的启动参数, 如内存,控制文件,进程数等,在数据库启动的时候加载(Nomount时加载),初始化文件记录了很多重要参数,对数据库的性能影响很大,如果不是很了 解,不要轻易乱改写,否则会引起数据库性能下降。

  

  6、其他文件

  i. 密码文件

  用于Oracle的具有sysdba权限用户的认证.

  ii.日志文件

  报警日志文件(alert.log或alrt.ora)

   记录数据库启动,关闭和一些重要的出错信息。数据库管理员应该经常检查这个文件,并对出现的问题作出即使的反应。你可以通过以下SQL找到他的路径selectvalue from v$PARAMETER where name ="background_dump_dest";

  后台或用户跟踪文件

   系统进程或用户进程出错前写入的信息,一般不可能读懂,可以通过ORACLE的TKPROF工具转化为可以读懂的格式。对于系统进程产生的跟踪文件与报 警日志文件的路径一样,用户跟踪文件的路径,你可以通过以下SQL找到他的路径selectvalue from v$PARAMETER where name ="user_dump_dest";

  

  三、ORACLE逻辑结构

  

  1、 表空间(tablespace)

  表空间是数据库中的基本逻辑结构,一系列数据文件的集合。一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。

  

  2、 段(Segment)

  段是对象在数据库中占用的空间,虽然段和数据库对象是一一对应的,但段是从数据库存储的角度来看的。一个段只能属于一个表空间,当然一个表空间可以有多个段。

  表空间和数据文件是物理存储上的一对多的关系,表空间和段是逻辑存储上的一对多的关系,段不直接和数据文件发生关系。一个段可以属于多个数据文件,关于段可以指定扩展到哪个数据文件上面。

  段基本可以分为以下四种

  数据段(DataSegment)

  索引段(IndexSegment)

  回滚段(RollbackSegment)

  临时段(TemporarySegment)

  

  3、区间(Extent)

   关于Extent的翻译有多种解释,有的译作扩展,有的译作盘区,我这里通常译为区间。在一个段中可以存在多个区间,区间是为数据一次性预留的一个较大 的存储空间,直到那个区间被用满,数据库会继续申请一个新的预留存储空间,即新的区间,一直到段的最大区间数(MaxExtent)或没有可用的磁盘空间可以申请。 在ORACLE8i以上版本,理论上一个段可以无穷个区间,但是多个区间对ORACLE却是有性能影响的,ORACLE建议把数据分布在尽量少的区间上, 以减少ORACLE的管理与磁头的移动。

  

  4、Oracle数据块(Block)

  ORACLE最基本的存储单位,他是OS数据块的整数倍。ORACLE的操作都是以块为基本单位,一个区间可以包含多个块(如果区间大小不是块大小的整数倍,ORACLE实际也扩展到块的整数倍)。

  

  5、基本表空间介绍

  a.系统表空间

  主要存放数据字典和内部系统表基表

  查看数据数据字典的SQL

  select* from dict

  查看内部系统表的SQL

  select* from v$fixed_view_definition

  DBA对系统的系统表中的数据字典必须有一个很深刻的了解,他们必须准备一些基础的SQL语句,通过这些SQL可以立即了解系统的状况和数据库的状态,这些基本的SQL包括

  系统的剩余空间

  系统的SGA

  状态系统的等待

  用户的权限

  当前的用户锁

  缓冲区的使用状况等

  在成为DBA的道路上我们不建议你过分的依赖于OEM/Quest等优秀的数据库管理工具,因为他们不利于你对数据数据字典的理解,SQL语句可以完成几乎全部的数据库管理工作。

  大量的读少量的写是该表空间的一个显著的特点。

  

  b.临时表空间.

  临时表空间顾名思义是用来存放临时数据的,例如排序操作的临时空间,他的空间会在下次系统启动的时候全部被释放。

  

  c.回滚段表空间

  

  i.回滚段在系统中的作用

   当数据库进行更新插入删除等操作的时候,新的数据被更新到原来的数据文件,而旧的数据(BeforeImage)就被放到回滚段中,如果数据需要回滚,那么可以从回滚段将数据再复制到数据文件中。来完成数据的回滚。在系统恢复的时候, 回滚段可以用来回滚没有被commit 的数据,解决系统的一至性。

  回滚段在什么情况下都是大量的写,一般是少量读,因此建议把回滚段单独出来放在一个单独的设备(如单独的磁盘或RAID),以减少磁盘的IO争用。

  

  ii.回滚段的工作方式

  一个回滚表空间可以被划分成多个回滚段.

  一个回滚段可以保存多个会话的数据.

  回滚段是一个圆形的数据模型

  假设回滚段由4个区间组成,他们的使用顺序就是区间1à区间2à区间3à区间4à区间1。也就是说,区间是可以循环使用的,当区间4到区间1的时候,区间1里面的会话还没有结束, 区间4用完后就不能再用区间1,这时系统必须分配区间5,来继续为其他会话服务服务。

  我们分析一个Update语句的完成

  

  ①. 用户提交一个Update 语句

  

  ②. Server Process 检查内存缓冲.

  如果没有该数据块的缓冲,则从磁盘读入

  

  i.如果没有内存的有效空间,DBWR被启动将未写入磁盘的脏缓冲写入磁盘

  

  ii.如果有有效空间,则读入

  

  ③. 在缓冲内更新数据

  

  i.申请一个回滚段入口,将旧数据写如回滚段

  

  ii.加锁并更新数据

  

  iii.并在同时将修改记录在Redolog buffer中

我本机装了oracle的数据库。现在我想要用PLSQL developer 一定要装oracle的服务端的吗?

需要32位的oci.dll文件。

如果你本机的oracle是32位的,不需要装其他东西。

如果本机oracle是64位的,则需要装一个32位的oracle 客户端。

oracle中服务名,实例名,数据库名的理解

===========================================================

数据库名:一个数据库的标识,用DB_NAME来表示,用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据安装或创建之后将不得修改。数据库安装完成后,该参数被写入数据库参数文件pfile中.

数据库实例名:用于和操作系统进行联系的标识,用INSTANCE_NAME来表示,对外部连接时使用.数据库和操作系统之间的交互用的就是数据库实例名,在操作系统中要取得与数据库之间的交互就必须使用数据库实例名.

数据库名与实例名之间的关系一般是一一对应的,有一个数据库名就有一个实例名.

数据库域名:在分部式数据库系统中,唯一标识网络中的数据库服务器.

全局数据库名=数据库名+数据库域名

数据库服务名:从9i引入的一个新的参数,用SERVICE_NAME来表示.service_name是在网络上用户向监听器发出连接数据库请求时,监听器向数据库实例注册时用到的一个初始化参数。服务名确定数据库服务是属于哪一个实例的。9I,10g的rac最好指定服务名,因为多个RAC实例的服务名相同而SID不同,只有指定服务名才能配置故障切换,如果要连到指定的实例,也可以用SID.可以认为服务名是为了RAC而设立的.

操作系统环境变量:用ORACLE_SID来表示,在操作系统中要想得到实例名,就必须使用ORACLE_SID

问题字典

1.ORA-28000:the account is locked:

用oracle数据库的过程中,经常会出现用户被锁定的现象,以用户SCOTT为例,解决方式:

Step1. 以管理员身份的登录:sqlplus sys/system as sysdba;

Step2. 在登录成功后,执行:alter user SCOTT ACCOUNT UNLOCK;

Step3. 在输入原始密码后,可能会出现(ORA-28001:the password has expired)错误,没关系,修改数据库密码,操作方式:

以管理员登录,输入alter user"SCOTT" identified by "SCOTT";

就以上三步能够解决问题。

2.ORA-12560: TNS: 协议适配器错误

我的系统开始运行正常,系统只有一个数据库test1,为了自己做测试,又建了第两个数据库test2,这样当启动test1的服务后,当登录总是报如下错误:

ERROR:

ORA-12560:TNS: 协议适配器错误

自己尝试了几次没有搞定,发现登录时加上服务名可以正常登录,也就随它去了,但这个问题也依然在自己脑中.

经过测试发现,

1.确认sqlnet.ora文件中设置为操作系统验证

  SQLNET.AUTHENTICATION_SERVICES=(NTS)

2.查看windows对应的服务是否开启

打开services查看,服务名oracleservice<SID>的运行状态,该服务的启动与关闭也可通过CML(命令行 COMMAND LINE)进行操作.

SQL>$net start oracleserviceTEST2The OracleServiceTEST2 service is starting.

TheOracleServiceTEST2 service was started successfully.

SQL>$net stop oracleserviceTEST2The OracleServiceTEST2 service is stopping...

TheOracleServiceTEST2 service was stopped successfully.

注:WINNT中,在sqlplus中运行dos命令时,命令前加"$"符号

3.查看本地环境变量ORACLE_SID,ORACLE_HOME是否正确设置

C:Documentsand SettingsAdministrator> set

ALLUSERSPROFILE=C:Documentsand SettingsAll Users

APPDATA=C:Documentsand SettingsAdministratorApplication Data

ClusterLog=C:WINDOWSClustercluster.log

CommonProgramFiles=C:ProgramFilesCommon Files

COMPUTERNAME=LDY

ComSpec=C:WINDOWSsystem32cmd.exe

FP_NO_HOST_CHECK=NO

HOMEDRIVE=C:

HOMEPATH=Documentsand SettingsAdministrator

JSERV=F:oracleora92/Apache/Jserv/conf

LOGONSERVER=LDY

NUMBER_OF_PROCESSORS=1

oracle_home=F:oracleora92

oracle_sid=TEST1OS=Windows_NT....

4.如果没有设置环境变量,请查看注册表中,HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中的ORACLE_SID,ORACLE_HOME项是否正确设置,如果oracle只有一个数据库,只需注册表中正确设置即可,无需设置环境变量.当然,如果像有多个数据库,需动态设置该环境变量

C:Documentsand SettingsAdministrator>set oracle_home=

C:Documentsand SettingsAdministrator>set oracle_sid=

C:Documentsand SettingsAdministrator>set

ALLUSERSPROFILE=C:Documentsand SettingsAll Users

APPDATA=C:Documentsand SettingsAdministratorApplication Data

ClusterLog=C:WINDOWSClustercluster.log

CommonProgramFiles=C:ProgramFilesCommon Files

COMPUTERNAME=LDY

ComSpec=C:WINDOWSsystem32cmd.exe

FP_NO_HOST_CHECK=NO

HOMEDRIVE=C:

HOMEPATH=Documentsand SettingsAdministrator

JSERV=F:oracleora92/Apache/Jserv/conf

LOGONSERVER=LDY

NUMBER_OF_PROCESSORS=1

OS=Windows_NT...无此变量

C:Documentsand SettingsAdministrator>sqlplus /nolog

SQL*Plus:Release 9.2.0.1.0 - Production on 星期四 2月 1 19:56:472007

Copyright(c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL>conn / as sysdba已连接。

5.如果有多个数据库,若想默认连接某个数据库,可不管当前注册表的设置,手动设置环境变量ORACLE_SID即可请看实验:

当前注册表ORACLE_SID=TEST1,

C:Documentsand SettingsAdministrator>set oracle_sid=

?/P>

C:Documentsand SettingsAdministrator>sqlplus /nolog

SQL*Plus:Release 9.2.0.1.0 - Production on 星期四 2月 1 20:39:412007

Copyright(c) 1982, 2002, Oracle Corporation. All rights reserved.

?/P>

SQL>$net stop oracleserviceTEST2

TheOracleServiceTEST2 service is stopping...

TheOracleServiceTEST2 service was stopped successfully.

?/P>

SQL>$net stop oracleserviceTEST1

TheOracleServiceTEST1 service is stopping........

TheOracleServiceTEST1 service could not be stopped.

?/P>

SQL>$net start oracleserviceTEST1

TheOracleServiceTEST1 service is starting.

TheOracleServiceTEST1 service was started successfully.

?/P>

SQL>conn / as sysdba

已连接到空闲例程。

--注:当有注册设置时,即使没有设置环境变量,此时系统可按注册表设置进行TEST1的登录

SQL>$net stop oracleserviceTEST1

TheOracleServiceTEST1 service is stopping...

TheOracleServiceTEST1 service was stopped successfully.

?/P>

SQL>conn / as sysdba

ERROR:

ORA-12560:TNS: 协议适配器错误

警告: 您不再连接到 ORACLE。

--注:当相关WINNT服务ORACLESERVICETEST1没有开启,用户将无法正常连接TEST1

SQL>$net start oracleserviceTEST1

TheOracleServiceTEST1 service is starting.

TheOracleServiceTEST1 service was started successfully.

?/P>

SQL>conn / as sysdba

已连接到空闲例程。

?/P>

SQL>exit

已断开连接

?/P>

C:Documentsand SettingsAdministrator>set oracle_sid=TEST2

C:Documentsand SettingsAdministrator>sqlplus /nolog

SQL*Plus:Release 9.2.0.1.0 - Production on 星期四 2月 1 20:45:292007

Copyright(c) 1982, 2002, Oracle Corporation. All rights reserved.

?/P>

SQL>conn / as sysdba

ERROR:

ORA-12560:TNS: 协议适配器错误

--注:环境变量的设置影响用户登录数据库的选择,此时设置为TEST2,而NT服务ORACLESERVICEQTEST2没有开启,所以显示登录错误

SQL>$NET START ORACLESERVICEQTEST2

TheOracleServiceTEST2 service is starting.

TheOracleServiceTEST2 service was started successfully.

?/P>

SQL>CONN / AS SYSDBA

已连接到空闲例程。

部分摘自:http://oracle114.itpub.net/post/21719/259479

另外今天我也遇到这个错误提示

查看了一下listener  是启动的,并且注册表里是有oracle_sid=oratest的,只是今天我们网络不通,因为数据库在我本地机器上,所以开始并不认为是tnsnames.ora里的host=192.168.5.195的问题,但是又有所怀疑,所以把 ip 地址改成了我机器的名字,保存以后 sqlplus aaa/aa233@oratest 就没问题了:)所以当网络不通的时候还是用自己机器名字的好

关于Struts2 + spring + hibernate进Q群: 130529143交流。
有偿技术支持Q群:398162181

Oracle安装 配置 使用 方法总结相关推荐

  1. oracle本地没装 配置,数据库--oracle安装配置(本地安装的步骤及各种问题解决方案)...

    "监听程序未启动"一般不会出现这种情况,可以在桌面左下角右键-->计算机管理-->服务和应用程序-->服务 查看OracleOraDb11g_home1TNSLi ...

  2. linux php ldap_linux php ldap安装配置的方法

    linux php ldap安装配置的方法:首先用yum安装phpldapadmin工具:然后修改phpldapadmin配置文件:接着启动http服务:最后访问phpldapadmin即可. Lin ...

  3. oracle 中大于等于_针对oracle安装参数调整方法

    solaris针对oracle安装的shmmax参数调整方法 安装数据库不能拘泥于联机文档,最近看到好几个跑oracle的sun主机上,都把和数据库内存使用相关的操作系统内核参数shmmax设置成4G ...

  4. Centos 6: nginx+php+oracle安装配置

    CentOS 6.5 一:nginx安装 1.安装 rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-cent ...

  5. oracle安装配置

    Oracle版本介绍 Oracle数据库的相关产品,从Oracle2.0开始(没有1.0)到Oracle7.3.4皆只是比较简单的相关Oracle版本号,以Oracle8开头,就出现数据库产品特性标识 ...

  6. oracle tns 代理配置_史上最全Oracle安装配置图文教程,含TNS配置

    12C R1多了这个步骤 出现以下错误,点击"全部忽略" 有时候,如果当前操作系统用户名有中文或有空格,这两个步骤会报错,如果报错,oracle服务都不会安装成功,1521端口也没 ...

  7. EMC NetWorker备份oracle安装配置指南

    一.环境描述: 主机环境: 软件包,如图所示: 其中,客户端只安装lgtoman.lgtozh.lgtonmo以及lgtoclnt,服务器端安装lgtoserv.lgtonode.lgtonmc.lg ...

  8. Oracle安装配置手册

    关键字:oracle linux 安装 一.前期准备 *FTP客户端软件 *Xmanager *pl/sql dev *11G数据库安装程序,适用于Linux 64位,数据库版本11.2. 二.创建用 ...

  9. oracle 安装及使用方法,Oracle安装及使用小结

    1.如果安装错误,重装那么需要这么几步 1)regedit进入注册表删除ctrl+f搜索oracle,F3继续搜索,把每一次搜到的关于orcale的都删掉,注意关于microsoft的oracle不用 ...

最新文章

  1. 如何在网页中添加flash文件
  2. oracle查询保留2位小数
  3. 【原】为DevExpress的ChartControl添加Y轴控制 和 GridControl中指定列添加超级链接
  4. python3.6.5安装教程-Centos7 安装Python3.6.5步骤
  5. 图解RxJava2(一)
  6. pip报 No module named ‘pip‘ 错误
  7. 使用Fiddler监控网易云笔记客户端向服务器定时发送的sync请求
  8. 在vivado hls软件上打开zynqnet工程,Vivado HLS Command Prompt(Vivado HLS 命令提示符)是什么
  9. Ubuntu傻瓜式录制GIF图—— Peek
  10. win10录屏_win10录屏打不开怎么办?怎么给win10录制屏幕视频?
  11. 移动营销必备:App自动绑定的五大场景赋能
  12. Windows 10 office开机自启白页关闭,只需三步轻松关闭(亲测可用)
  13. 判断平面内三点是否共线
  14. 说说jvm什么时候会回收垃圾
  15. 可编辑div在光标位置插入指定内容
  16. 我的世界科学计算机,在我的世界打造一台计算机有多难?复旦大神花了一年
  17. 三维旋转(根据转轴和角度)的公式。罗德里格旋转公式
  18. android 图片大小判断,android中如何使用一张图片适配不同尺寸的APP引导页
  19. 现代C++之手写智能指针
  20. VirtualBox安装黑群晖并建立smb共享目录的方法

热门文章

  1. java程序移动图形源程序_如何运用java程序设计创建移动图形
  2. eplan项目中自动图号规则设置
  3. VS2017安装P4VS插件 设置连接到Perforce P4V
  4. nodeJS IOS手机和平板端在微信中下载文件时,弹出框中文件名乱码解决方案(Content-disposition:attachment; filename)
  5. 线性关系r范围_广义相加模型及其R实现
  6. 职业学校计算机专业解说词,职业学校参观校园解说词
  7. java xmpp smack_如何使用java smack库连接XMPP bosh服务器?
  8. orientDB导入CSV数据
  9. linux下音乐播放软件
  10. linux命令行大全2