oracle开发常用脚本(二)

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 resource dba 。它是一组可以分配给其它 role 或用户的
权限总和, connect 8 个权限, resource 5 个权限, dba 77 个权限。给一般连接用
户赋 connect ,给一般编程人员赋 connect resource, 只有数据库管理员才有 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
分别对应于 sid serial#
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_ID EMPLOYEE_NAME SALARY) 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) 列,在这些列上多位图索引可以 AND OR* 作符结合使用。
位图索引使用位图作为键值,对于表中的每一数据行位图包含了 TRUE 1 )、 FALSE 0
、或 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, TELNET PING 检查网络的连接情况。

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/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值