oracle开发常用脚本(二)

本文详细介绍Oracle数据库的管理操作,包括表空间的创建与扩展、用户管理、表与视图的操作、索引管理等内容,并深入讲解Oracle网络配置,如listener配置与启动、客户端配置、网络连通性测试及常见故障排除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3. 数据库的扩充
3.1
增加一个表空间
3.1.1
创建表空间
命令示例:
SQL>create tablespace application datafile
/usr/oracle/dbs/application.dbf  size 3M
针对具体情况增加回滚和临时表空间
命令示例:
SQL>create rollback segment rbs8 tablespace rbs storage(initial 1m next 4m)
SQL>CREATE TABLESPACE TEMP
   DATAFILE "/usr/oracle/dbs/temp.dbf " SIZE 32M REUSE 
   AUTOEXTEND ON NEXT 640K  MINIMUM EXTENT 64K 
   DEFAULT STORAGE (
                INITIAL 64K
                NEXT 64K
                MINEXTENTS 1
                MAXEXTENTS UNLIMITED
                PCTINCREASE 0)
   TEMPORARY;
回滚和临时 表空间用完后,可删除或使它offline
SQL>drop tablespace rbs8;
SQL>drop tablespaces billtemp;
SQL>alter tablespace rbs offline;
SQL>alter tablespace billtemp offline;
3.1.2
增加某个表空间的大小
当一个表空间的大小不能满足工作需要 时,应该扩充表空间。
举例:
SQL>alter tablespace system
add datafile  /usr/oracle/dbs/sys338.dbf  size 3M;
3.2
增加oracle的用户,并给用户授权
3.2.1
增加oracle的用户, 并给用户授权
举例:
SQL>create user newuser identified by userpasswd
default tablespace application
temporary tablespace billtemp;
SQL>grant connect to newuser;
SQL>grant resource to newuser;
SQL>grant update on emp to newuser;
3.2.2
增加oracle的角色
oracle
的缺省角色有connect resourcedba。它是一组可以分配给其它role 或用户的
权限总和,connect 8个权限,resource 5个权限,dba77个权限。给一般连接用
户赋connect,给一般编程人员赋connectresource,只有数据库管理员才有 dba的权限

创建一个角色
SQL>create role newrole identified by rolepasswd;
给角色赋权限
SQL>grant select on all table to newrolle;
SQL>grant connect to newrole with admin option;
3.2.3
中断用户同oracle的连接
oracle数据库要关机或某个用户占有的大量的资源需要被释放时,dba 需中断用户同o
racle
的连接。
SQL>select sid,serial#,username from v$session;
SQL>alter system kill session  interger1,interger2 ;
      interger1,interger2
分别对应于sidserial#
3.3
表、视图、索引、约束
Oracle
数据库数据对象 中最基本的是表和视图,其他还有约束、序列、函数、存储过程
、包、触发器等。对数据库的*作可以基本归结为对数据对象的*作。
3.3.1
表和视图
Oracle
中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE8i引入了临
时表,使表的功能更强 大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论
怎样创建和管理简单的表和视图。
3.3.1.1
管理表
3.3.1.1.1
建立表
表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用CREATE
TABLE
语句建立表,在建立表的同 时,必须定义表名,列,以及列的数据类型和大小。例
如:
    CREATE TABLE products
  ( PROD_ID NUMBER(4),
   PROD_NAME VAECHAR2(20),
   STOCK_QTY NUMBER(5,3)
  );
这样我们就建立了一个名为products的表, 关键词CREATE TABLE后紧跟的表名,然后定
了三列,同时规定了列的数据类型和大小。
在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列上普通
的约束是NOT NULL,关于约束的讨论我们在以后进行。
在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一
项值为 null时,oracle即认为该值为缺省值。
下列数据字典视图提供表和表的列的信息:
   . DBA_TABLES
   . DBA_ALL_TABLES
   . USER_TABLES
   . USER_ALL_TABLES
   . ALL_TABLES
   . ALL_ALL_TABLES
   . DBA_TAB_COLUMNS
   . USER_TAB_COLUMNS
   . ALL_TAB_COLUMNS
3.3.1.1.2
表的命名规则
表名标识一个表, 所以应尽可能在表名中描述表,oracle中表名或列名最长可以达30
字符串。表名应该以字母开始,可以在表名中包含数字、下划线、#$等。
3.3.1.1.3
从其它表中建立表
可以使用查询从基于一个或多个表中建立表,表的列的数据类型和大小有查询结果决定
。建立这种形式的表的查询可以选择其 他表中所有的列或者只选择部分列。在CREATE
TABLE
语句中使用关键字AS,例如:
SQL>CREATE TABLE emp AS SELECT * FROM employee
TABLE CREATED
SQL> CREATE TABLE Y AS SELECT * FROM X WHERE no=2
需要注意的是如果查询涉及LONG数据类型,那么CREATE TABLE....AS SELECT....将不会
工作。
3.3.1.1.4
更改表定义
在建立表后,有时候我们可能需要修改 表,比如更改列的定义,更改缺省值,增加新列
,删除列等等。ORACLE使用ALTER TABLE语句来更改表的定义
3.3.1.1.4.1
增加列
语法:ALTER TABLE [schema.] table_name ADD column_definition
例:
ALTER TABLE orders ADD order_date DATE;
对于已经存在的数据行,新列的值将是NULL.
3.3.1.1.4.2
更改列
语法:
ALTER TABLE [schema.] table_name MODIFY column_name new_attributes;
例:
ALTER TABLE orders MODITY (quantity number(10,3),status varchar2(15));
这个例子中我们修改了表orders,将STATUS列的长度增加到 15,QUANTITY列减小到10,3
;
修改列的规则如下:
可以增加字符串数据类型的列的长度,数字数据类型列的精度。
少列的长度时,该列应该不包含任何值,所有数据行都为NULL
改变数据类型时,该列的值必须是NULL.
对于十进制数字,可以增加或减少 但不能降低他的精度。
3.3.1.1.4.3
删除数据列
优化ORACLE数据库,唯一的方法是删除列,重新建立数据库。在 ORACLE8i中有很多方法
删除列,你可以删除未用数据列或者可以标示该列为未用数据列然后删除。
删除数据列的语法是:
ALTER TABLE [schema.] table_name DROP {COLUM column_names |
(column_names)}[CASCADE CONSTRAINS]
要注意的是在删除列时关于该列的索引和完整性约束也同时删除。注意关键字CASCADE
CONSTRAINS
如果删除的列是多列约束的一部分,那么这个约束条件相对于其他列也同
时删除。
如果用户担心在大型数据库中删除列要花太多时间,可以先将他 们标记为未用数据列,
标记未用数据列的语法如下:
ALTER TABLE [schema.] table_name SET UNUSED {COLUM column_names |
(column_names)}[CASCADE CONSTRAINS]
个语句将一个或多个数据列标记为未用数据列,但并不删除数据列中的数据,也不释
放占用的磁盘空间。但是,未用数据列在视图和数据字典中并不显示, 并且该数据列的
名称将被删除,新的数据列可以使用这个名称。基于该数据列的索引、约束,统计等都
将被删除。
删除未用数据列的语句 是:
ALTER TABLE [schema.] table_name DROP {UNUSED COLUM | COLUMN CONTINUE}
3.3.1.1.4.4
删除表和更改表名
删除表非常简单,但它是一个不可逆转的行为。
语法:
DROP TABLE [schema.] table_name [CASCADE CONSTRAINTS]
删除表后,表上的索引、触发器、权限、完 整性约束也同时删除。ORACLE不能删除视图
,或其他程序单元,但oracle将标示他们无效。如果删除的表涉及引用主键或唯一关键
的完整性约束时,那么DROP TABLE语句就必须包含CASCADE CONSTRAINTS子串。
更改表名
RENAME
命令用于给 表和其他数据库对象改名。ORACLE系统自动将基于旧表的完整性约束
、索引、权限转移到新表中。ORACLE同时使所有基于旧表的数据库对象, 比如视图、程
序、函数等,为不合法。
语法:RENAME old_name TO new_name;
例:SQL> RENAME orders TO purchase_orders;
3.3.1.1.4.5
截短表
TRUNCATE
命令与DROP 令相似, 但他不是删除整个数据表,所以索引、完整性约束、触
发器、权限等都不会被删除。缺省情况下将释放部分表和视图空间,如果用户不希望释
表空间,TRUNCATE语句中要包含REUSE STORAGE子串。TRUNCATE命令语法如下:
TRUNCATE {TABLE|CLUSTER} [schema.] name {DROP|REUSE STORAGE}
 例:SQL> TRUNCATE TABLE t1;
3.3.1.2
管理视图
视图是一个或多个表中的数据的简化描述,用户可以将视图看成一个存储查询 stored
query)
或一个虚拟表(virtual table).查询仅仅存储在oracle数据字典中,实际的数据
没有存放 在任何其它地方,所以建立视图不用消耗其他的空间。视图也可以隐藏复杂查
询,比如多表查询,但用户只能看见视图。视图可以有与他所基于表的列名不 同的列名
。用户可以建立限制其他用户访问的视图。
3.3.1.2.1
建立视图
CREATE VIEW
命令创建视图,定义视图的查询可以建立在一个或多个表,或其他视图上。
查询不能有FOR UPDATE子串,在早期的ORACLE8i版本中不支持ORDER BY子串,现在的版
本中CREATE VIEW可以拥有ORDER BY子串。
例:
SQL> CREATE VIEW TOP_EMP AS
SELECT empno EMPLOYEE_ID,ename EMPLOYEE_NAME,salary
FROM emp
WHERE salary >2000
用户可以在创建视图的同时更改列名,方法是在视图名后立即加上要命名的列名。重新
定义视图需要包含OR REPLACE子串。
SQL> CREATE VIEW TOP_EMP
EMPLOYEE_IDEMPLOYEE_NAMESALARY) AS
SELECT empno ,ename ,salary
FROM emp
WHERE salary >2000
如果在创建的视图包含错误在正常情况下,视图将不会被创建。但如果你需要创建一个
带错误的视图必须在CREATE VIEW语句中带上FORCE选项。如:CREATE FORCE VIEW
ORDER_STATUS AS
SELECT * FROM PURCHASE_ORDERS
WHERE STATUS= APPPOVE ;

SQL>/

warning :View create with compilation errors
这样将创建了一个名为ORDER_STATUS的视图,但这样的视 图的状态是不合法的,如果以
后状态发生变化则可以重新编译,其状态也变成合法的。
3.3.1.2.2
从视图中获得数据
从视图中 获得数据与从表中获得数据基本一样,用户可以在连接和子查询中使用视图,
也可以使用SQL函数,以及所有SELECT语句的字串。
3.3.1.2.3
插入、更新、删除数据
用户在一定的限制条件下可以通过视图更新、插入、删除数据。如果视图连接多个表,
那么在一个时间里只能更新一个 表。所有的能被更新的列可以在数据字典USER_UPDATETA
BLE_COLUMNS
中查到。
用户在CREATE VIEW中可以使用了WITH子串。WITH READ ONLY子串表示创建的视图是一个
只读视图,不能进行更新、插入、删除*作。WITH CHECK OPTION表示可以进行插入和更
*作,但应该满足WHERE子串的条件。这个条件就是创建视图WHERE子句的条件,比如
上面的例子中用户创建了一个视图TOP_EMP,在这个视图中用户不能插入salary小于200
0
的数据行。
3.3.1.2.4
删除视图
删除视图使用DROP VIEW命令。同时将视图定义从数据字典中删除,基于视图的权限也同
时被删除,其他涉及到该视图的函数、 视图、程序等都将被视为非法。
  例:DROP VIEW TOP_EMP;
3.3.2
索引
索引是一种可以提高查询性能的数据 结构,在这一部分我们将讨论索引如何提高查询性
能的。ORACLE提供了以下几种索引:
   B-Tree、哈希(hash)、位图(bitmap)等索引类型
   基于原始表的索引
   基于函数的索引
   域(Domain)索引
实际应用中主要是B-Tree索引和位图索引,所以我们将集中讨论这两种索引类型。
3.3.2.1 B-Tree
索引
B-Tree
索引是最普通的索引,缺省条件下建立的索引就是这种类型的索引。B-Tree索引
可以是唯一或非唯一的,可 以是单一的(基于一列)或连接的(多列)。B-Tree索引在
检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的性能。对
取出较小的数据B-Tree索引比全表检索提供了更有效的方法。但当检查的范围超过表
10%时就不能提高取回数据的性能。正如名字所暗示的那 样,B-Tree索引是基于二元树
的,由枝干块(branch block)和树叶块(leaf block)组成,枝干块包含了索引列(关键
字) 和另一索引的地址。树叶块包含了关键字和给表中每个匹配行的ROWID
CREATE UNIQUE INDEX scott.ord_ord_no_idx
ON scott.ord(ord_no) REVERSE
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
    PCTINCREASE 0    MAXEXTENTS 50)
TABLESPACE indx01;

3.3.2.2
位图索引
位图索引主要用于决策支持系统或静态数据,不支持行级锁定。位图索引可以是简单的
(单 列)也可以是连接的(多列),但在实践中绝大多数是简单的。位图索引最好用于
低到中群集(cardinality)列,在这些列上多位图索引可以 ANDOR*作符结合使用。
位图索引使用位图作为键值,对于表中的每一数据行位图包含了TRUE1)、FALSE0
、或 NULL值。位图索引的位图存放在B-Tree结构的页节点中。B-Tree结构使查找位图非
常方便和快速。另外,位图以一种压缩格式存放,因此 占用的磁盘空间比B-Tree索引要
小得多。
CREATE BITMAP INDEX scott.ord_region_id_idx
ON scott.ord(region_id)
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
    PCTINCREASE 0    MAXEXTENTS 50)
TABLESPACE indx01;
3.3.2.3
修改索引
ALTER INDEX scott.ord_region_id_idx
ALLOCATE EXTENT (SIZE 200K
DATAFILE  DISK6/indx01.dbf );
重建索引
对于频繁更新的表,索引会变得层次很深,效率变低。这时需要重建索引。
ALTER INDEX scott.ord_region_id_idx REBUILD
TABLESPACE indx02;

3.3.3
序列(Sequences
Oracle
序列是一个连续的数字生成器。序列常用于人为的关键字,或给数据行排序否则
数据行是无序的。像约 束一样,序列只存在于数据字典中。序列号可以被设置为上升、
下降,可以没有限制或重复使用直到一个限制值。
3.3.3.1
创建序列
建序列使用SET SEQUENCE语句。
CREATE SEQUENCE [schema] sequence KEYWORD
KEYWORD
包括下面的值:
KEYWORD          
描述
START WITH        
定义序列生成的第一个数字,缺省为1
INCREMENT BY     
定义序列号是上升还是下降,对于一
                    
个降序的序列INCREMENT BY为负
                    

MINVALUE          
定义序列可以生成的最小值,这是降
                    
序序列中的限制值。缺省情况下该值为
                     NOMINVALUE,NOMINVALUE
,对于
                    
升序为1,对于降序为-10E26.
MAXVALUE         
序列能生成的最大数字。这是升序序列
                    
中的限制值,缺省的MAXVALUE
                     NOMAXVALUE,NOMAXVALUE
,对
                    
于升序为10E26,对于降序为-1
CYCLE              
设置序列值在达到限制值以后可以重
                     

NOCYCLE           
设置序列值在达到限制值以后不能重
                     
复,这是缺省设置。当试图产
                      MAXVALUE+1
的值时,将会产生一
                     
个异常
CACHE              
定义序列值占据的内存块的大小,
                     
缺省值为20
NOCACHE           
在每次序列号产生时强制数据字典更
                     
新,保证在序列值之间没有间隔当创
                     
建序列时,START WITH值必须等于
                     
或大于MINVALUE
3.3.3.2
删除序列
删除序列使 DROP SEQUENCE语句
DROP SEQUENCE sequence_name

3.4
网络管理
3.4.1 Net8  server
端配置
3.4.1.1 listener.ora
文件的样本:
CONNECT_TIMEOUT_LISTENER = 0
LOGGING_LISTENER = OFF
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =                # Local connections.
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = icache))
      )
    )

    (DESCRIPTION =                # General TCP connections.
      (ADDRESS =
          (PROTOCOL = TCP)(HOST = dbsvr)(PORT = 1521)
      )
    )

#    For secure connections over SSL, uncomment the following lines.
#
#    (DESCRIPTION =               # Secure TCP connections.
#      (ADDRESS =
#          (PROTOCOL = TCPS)(HOST = dbsvr)(PORT = 2484)
#      )
#    )

    (DESCRIPTION =                # IIOP Connections.
      (PROTOCOL_STACK =
        (PRESENTATION = GIOP)
        (SESSION = RAW)
      )
      (ADDRESS = (PROTOCOL = TCP)(HOST = dbsvr)(PORT = 2481))
    )

#    For secure IIOP connections over SSL, uncomment the following lines.
#
#    (DESCRIPTION =                # Secure IIOP Connections.
#      (PROTOCOL_STACK =
#        (PRESENTATION = GIOP)
#        (SESSION = RAW)
#      )
#      (ADDRESS = (PROTOCOL = TCPS)(HOST = dbsvr)(PORT = 2482))
#    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = s450 )
      (ORACLE_HOME = /home1/ias/app/oracle/product/1.0.2)
      (SID_NAME =  s450 )
    )
    (SID_DESC =
      (ORACLE_HOME = /home1/ias/app/oracle/product/1.0.2)
      (SID_NAME = iCache_extproc)
      (PROGRAM = extproc)
    )
  )

3.4.1.2
启动listener
   
在响应的端口上设置并启动listener
       
手工启动listener
       1. >lsnrctl start
        
查看状态
        2. >lsnrctl status

3.4.2 Net 8 client
端配置
Net 8 client端常用的配置方法为tns方式
¢使 用图形配置工具进行配置
    
开始->程序->Oracle->
Network Administration->Net8 Assistant.
      1
、选本地 -> 概要文件 加入tnsnames
      2
、选本地 ->服务命名 新建一个连接串,包括主机名、端口,协议 
      3
、选文件->保存网络配置
直接配置$ORACLE_HOME/network/admin/tnsnames.ora
1. 
备份tnsnames.ora
2.  
按照示例对连接串做拷贝
3. 
改变连接串的名字,主机名,端口,协议,SID等参数
4. 
保存文件
nttest = (DESCRIPTION=
          (ADDRESS=
        (PROTOCOL=tcp)
        (HOST=localserver)
        (PORT=1521)
          )
         (CONNECT_DATA=(sid=oradb)
          )
     
    )
3.4.3 sqlnet.ora

3.4.4
网络连通性测试
sqlplus
  tnsping
  ping ,netstat

1. sqlplus system/manager @gis
    
注意:gis是刚才设置的新的连接串
      2
.在客户端 >Tnsping gis,
并且检查 tnsnames.ora中的配置是否与server端的$ORACLE_HOME/network/admin/listen
er.ora
中的 配置是否一致。
1
Ping server IP地址,查看网络连通性
3.4.5
常见NET8 错误

故障排除是每个 系统管理人员必要面对的工作。下面给出几种故障分析和排除方法。

3.4.5.1
服务器端诊断

任务1: 数据库系统是否启动

确定数据库系统是否已启动,只要用SQL*PLUS登录即可:
SQLPLUS system/manager

果收到下面信息,则数据库还不能用。

    ORA-1017: invalid U/P
     ORA-1034: Oracle not available


任务 2: 执行绕弯测试

为了确认listener.ora, tnsnames.ora sqlnet.ora文件的存在,
有效。要在服务器端
UNIX
在: $ORACLE_HOME/network/admin  
Windows NT
在:ORACLE_HOME\network\admin
a.
这些文件是否在工作。
b. TNS_ADMIN
变量有效性。

使用 Net8 Assistant进行绕弯测试:
1.
启动Net8 Assistant:
   
UNIX, $ORACLE_HOME/bin. 目录来运行netasst
   
NT, choose Start > Programs > Oracle - HOME_NAME >Network
Administration > Net8 Assistant.
2.
在导航器扩展 Directory Local > Service Naming.
3.
选择net service name database service.
4.
选命令 > Test Net Service.


3.4.5.2
客户端诊断
当服务器已经通过一般的SQL*PLUS测试和绕弯测试后,可以进行客户端的测试,步骤如
下:
1. 
检查所安装的 协议是否与服务器端一致;
UNIX, 可以运行$ORACLE_HOME/bin目录下的 adapters 来确认。结果显示:

Installed Net8 Tranport Protocols are:
IPC
TCP/IP
BEQueath
SSL
RAW
...
2.
检查所有 Net8 软件在客户端已经安装。
3.
确认客户端机器$ORACLE_HOME/network/admin目录下的tnsnames.ora
sqlnet.ora
文件的内容:
a.
当前的工作目录
b. TNS_ADMIN
环境变量
NT中,如果 TNS_ADMIN 环境变量没有注册,就要进行注册。
c.
FTP, TELNETPING 检查网络的连接情况。

4.
TNSPING TRCROUTE 实用程序或 Net8 Assistant进行测试 TNSPING
tnsping net_service_name [count]

    net service name:
tnsnames.ora 或名字服务上得使用。如: NIS DCE
CDS.
    count (
可选): 实验次数

1:使用spotdb 服务名进行测试:
tnsping spotdb
可能提示:
TNS Ping Utility for SunOS:
Copyright (c) Oracle Corporation 1998. All rights reserved.
Attempting to contact
(ADDRESS=(PROTOCOL=TCP)(HOST=spot)(PORT=1521))
OK (50msec)

2:用TNSPING测试10次:
tnsping stprd 10
可能提示:
TNS Ping Utility for SunOS:
Copyright (c) Oracle Corporation 1998. All rights reserved.
Attempting to contact (ADDRESS=(PROTOCOL=TCP)(HOST=spot)(PORT=1521))
OK (290 msec)
OK (100 msec)
OK (70 msec)
OK (70 msec)
OK (60 msec)
OK (70 msec)
OK (70 msec)
OK (80 msec)
OK (180 msec
OK (340 msec)

5.
如果连接失败,可以进行下面*作:
   
查找原因

   
用下面站点与Oracle联系:

[url]http://support.oracle.com[/url]

   
Oracle Worldwide Support联系

3.4.5.3
常见错误
ORA-12154: TNS:could not resolve service name
原因: tnsnames.ora Net8不能定位到服务器上
:
1.
确定 tnsnames.ora 文件存在
2.
确定不要有多个 tnsnames.ora
3.
确认 tnsnames.ora 文件的服务名的正确性。
4.
确认不要有多个 sqlnet.ora
5.
如果使用域名,确认 sqlnet.ora 包含NAMES.DEFAULT_DOMAIN 参数。如果该参数不
存在,必须在连接字串中指定域名。
如果没有使 用域名,而NAMES.DEFAULT_DOMAIN 参数存在,则删掉它或注释掉。
6.
如果从对话框进行连接,要带@号。
7.
启动客户端的跟踪功能,再连接。

ORA-12198: TNS:could not find path to destination
ORA-12203:TNS:unable to connect to destination
原因: 在客户端找不到目标数据库
措施:
1. 
所输入的网络服务名是否 正确
2.
确认tnsnames.ora 文件中的ADDRESS参数是否正确
3.
确认tnsnames.ora 文件是否在正确的目录上。
4.
确认远程监听器是否启动:输入:
lsnrctl
lsnrctl> status listener_name

listener_name
缺省 LISTENER.

如果没有启动,则启动:

lsnrctl> start listener_name

5.
如果从对话框连接,不要忘记加@


ORA-12203:
TNS:unable to connect to destination
ORA-12203
是一般的错误,可以检查$ORACLE_HOME/network/log目录的sqlnet.log 文件

原因: 所安装的协议不正确。可能与下面原因一样:

    ORA-12203
    ORA-12538
    ORA-00508
措施: 检查安装的Oracle协议。
UNIX下,运行$ORACLE_HOME/bin 目录下的 adapters程序。
应该输出:
Installed Net8 Tranport Protocols are:
IPC
TCP/IP
BEQueath
SSL
RAW
...
ORA-12203
原因: 不正确的服务名。
    HOST
SERVICE 正确?
    PORT
正确?

ORA-12203
外原因:  Net8 tnsnames.ora 文件中没有找到服务描述符。
措施: 用下面命令确认数据库是否在运行:
lsnrctl
lsnrctl> status listener_name
listener_name
不是必须的,缺省LISTENER

如果系统提示没有运 行,则用下面命令启动:
lsnrctl> start listener_name

2. 
确认 tnsnames.ora 文件的正确位置。

ORA-12203
另外原因: 目标系统的监听没有工作。
措施: 确包远程系统的监听在工作,输入:
lsnrctl
lsnrctl> status listener_name

果确实没有工作,则输入:

lsnrctl> start listener_name

ORA-12203
另外原因: 存在潜在的事务问题。
措施: 确保实用程序支持目前的网络协议,如TCP/IP。用PING试。

ORA-12203
另外原因:  tnsnames.ora 文件没有放对地方(目录)。
Action:
确保 tnsnames.ora 文件在正确的位置。

ORA-12203
另外原因:  TCP/IP地址 (HOST=server_name) 参数TCP/IP SPX 地址参数
(SERVICE=tns_application)
与客户端不一致。
措施: 确认这些参数使用相同的名字。
对于 TCP/IP ,确保   listener.ora 文件的HOST tnsnames.ora 文件指到相同的名
字。或名字转换到相同的IP地址。
对于 SPX ,在客户端的名字必须相同。

ORA-12224: TNS:no listener
原因:由于监听没有工作而连接请求不能完成。
措施:
1. 
确认支持的目标地址与数据库之一匹 配。
2.
检查版本问题

ORA-12533:
TNS:illegal ADDRESS parameters

因: tnsnames.ora 文件的ADDRESS 节指定不 正确。
措施:根据ADDRESS语法进行改正。

ORA-12545: TNS:name lookup failure
原因: 远程节点不能连接。
措施:
1. tnsnames.ora
文件的ADDRESS  listener.ora文件的正确性。
2. 
确认远程节点已经启动。输入:
lsnrctl
lsnrctl> status listener_name

如果没有启动,则输入:
lsnrctl> start listener_name

ORA-12560:
TNS:protocol adapter error
原因: 监听不能启动。
措施:
1.
调整后再运行。
2.
分析跟踪文件的内容。

ORA-3113: TNS:End of file on communication channel
原因:一个无法预料文件结束在通信通道里被处理。可能是通信连接被临时地停止 了。
措施:需要修改发射次数等。

ORA-3121: No interface driver connection -function not performed
原因:SQL*NET版本引起。
措施: 不要使用下面前缀进行连接:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25136010/viewspace-683023/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25136010/viewspace-683023/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值