Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

21

积分

0

好友

0

主题
1#
发表于 2012-4-25 17:11:22 | 查看: 5993| 回复: 3
/*---使用外部表来查看tnsnames.ora内容的方法--*/
/*----创建tns表字典---*/
create directory tns as 'D:\oracle\product\10.2.0\db_1\network\ADMIN'

/*---如果上一步操作错误,删除tns表字典----*/
drop directory tns

/*---创建外部表tns----*/
create table tns(
    text varchar2(400))
    organization external
   (
    type oracle_loader
    default directory tns
    access parameters (
   records delimited by newline
   )
   location
   ('tnsnames.ora')
   ) reject limit unlimited

/*---如果外部表建错了,删除外部表tns----*/
drop table tns

/*---查询外部表tns----*/
select * from tns
查询结果:
>[错误]脚本行:1-1 ----------------------------------------
ORA-29913: 执行 ODCIEXTTABLEOPEN 调出时出错
ORA-29400: 数据插件错误KUP-04063: unable to open log file TNS_2580_404.log
OS error 系统找不到指定的文件。
ORA-06512: 在 "SYS.ORACLE_LOADER", line 19


网上查了“使用外部表来查看tnsnames.ora内容的方法”这篇文章,测试后没有成功。
有疑问:
1. create directory tns as 'D:\oracle\product\10.2.0\db_1\network\ADMIN'——这个是指在本机创建tns表在“'D:\oracle\product\10.2.0\db_1\network\ADMIN'” 还是指 远端数据库的tnsnames.ora在“'D:\oracle\product\10.2.0\db_1\network\ADMIN'”这个路径下。
——我测试过在本地建C:\oracle_network,然后create directory tns as 'C:\oracle_network',最后还是不行。
2. 建tns表是成功的,但显示“0 条记录受到影响 ”——是不是没有取到数据?
3. 我查了“执行 ODCIEXTTABLEOPEN 调出时出错”——有人说是权限问题,不过我用sys用户执行后还是同样的结果。
4.继续查“数据插件错误KUP-04063: unable to open log file TNS_2580_1068.log”——有人说是 “保证路径存在于oracle服务器上,并有相应的读写权限 ”意思是指 create directory tns  要创建在服务器的某个路径下面吗?

希望版主抽空帮忙看看。谢谢。
2#
发表于 2012-4-25 17:47:03
外部表用来看数据库所在服务器上的文件信息。
因此,create directory应该在tnsnames.ora文件所在的服务器的数据库上。然后在该库上建立外部表。通过该外部表可以查看tnsnames.ora的信息

回复 只看该作者 道具 举报

3#
发表于 2012-4-25 17:52:30
按照你的步骤,我试了下,没啥问题。
SQL> create directory tns as 'D:\oracle\product\10.2.0\db_1\network\ADMIN';

Directory created.

SQL> create table tns(
  2      text varchar2(400))
  3      organization external
  4     (
  5      type oracle_loader
  6      default directory tns
  7      access parameters (
  8     records delimited by newline
  9     )
10     location
11     ('tnsnames.ora')
12     ) reject limit unlimited;

Table created.

SQL> select * from tns where rownum<10;

TEXT                                                                           
--------------------------------------------------------------------------------
# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network
\admin\tnsnames.ora                                                            
                                                                                
# Generated by Oracle configuration tools.                                      
                                                                                
BS =                                                                           
  (DESCRIPTION =                                                               
    (ADDRESS_LIST =                                                            
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.100.211)(PORT = 1521))         
    )                                                                           
    (CONNECT_DATA =                                                            

9 rows selected.

SQL> spool off;
注意:tnsnames.ora是我本机上的文件,库是我本机的库。

回复 只看该作者 道具 举报

4#
发表于 2012-4-26 09:06:23
我在本地及服务器上分别做了测试。
1. sqlplus 和 PLSQL Developer 是可以执行成功的;
2. Aqua Data Studio 7.0和sqldeveloper无法成功执行,错误结果见发表于 2012-4-25 17:11的贴;
3. create directory tns as 'D:\oracle\product\10.2.0\db_1\network\ADMIN'  ——在服务器的该路径下创建了文件“TNS_2876_1828.log”


经过测试大致明白了外部表的作用以及如何操作。回去还要看一下相关方面的书了解一下原理。
谢谢各位。

[ 本帖最后由 qiuling 于 2012-4-26 09:19 编辑 ]

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-25 00:51 , Processed in 0.049557 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569