tns 的t我不知道是什么的缩写,ns好象是name service吧!
你用net configuration assistent 试一下吧!全是向导的,你在根据你的实际情况配置一下监听程序和本地服务名,也许问题能够解决!
还有你要注意是不是物理问题,呵呵!
祝早日解决问题!

解决方案 »

  1.   

    监听服务配置错误,
      你用net configuration assistent 手工配置你的新LISTENER服务,
    就行了。
      

  2.   

    建库时的错误,多半是环境变量oracler_sid没有设置。
    如果是windows操作系统,那么是在注册表里,与oracle_home、oracle_base等在一起。
    如果是linux那么则在profile或bashrc里面设置
      

  3.   

    在注册表中手工添加oracle_sid 后,用脚本创建数据库时,也是提示 :TNS适配器错误。
      接着是一直提示: oracle 没有连接 。 而且脚本还一直在执行。
    完成后,启动监听器失败,提示:TNS适配器错误 . 但,net8可以连接到其他机器上的oracle
      

  4.   

    把你的建库脚本前十几行贴出来,不是sql,应该是一个bat文件
      

  5.   

    此外,你还可以查一下alert文件,看看有什么错误记录
      

  6.   

    .bat文件:set ORACLE_SID=orcl
    e:\oracle\ora8\bin\oradim -new -sid ORCL -intpwd oracle -startmode manual -pfile "e:\oracle\admin\orcl\pfile\init.ora"
    e:\oracle\ora8\bin\svrmgrl @E:\oracle\ora8\assistants\dbca\orclrun.sql
    e:\oracle\ora8\bin\svrmgrl @E:\oracle\ora8\assistants\dbca\orclrun1.sql
    e:\oracle\ora8\bin\svrmgrl @E:\oracle\ora8\assistants\dbca\orclreplicate.sql
    e:\oracle\ora8\bin\svrmgrl @E:\oracle\ora8\assistants\dbca\orcljava.sql
    e:\oracle\ora8\bin\sqlplus system/manager @E:\oracle\ora8\assistants\dbca\orclsqlplus.sql
    e:\oracle\ora8\bin\svrmgrl @E:\oracle\ora8\assistants\dbca\orclalterTablespace.sql
    e:\oracle\ora8\bin\oradim -edit -sid orcl -startmode auto
      

  7.   

    建库的脚本:db_name = "orcl"
    instance_name = orcl
    service_names = orcl
    oracle_sid= orcl    #手工添加的db_files = 1024  # INITIAL                                   control_files = ("e:\oracle\oradata\orcl\control01.ctl", "e:\oracle\oradata\orcl\control02.ctl", "e:\oracle\oradata\orcl\control03.ctl")open_cursors = 300
    max_enabled_roles = 30
    db_file_multiblock_read_count = 8  # INITIAL            db_block_buffers = 2048  # INITIAL      shared_pool_size = 31457280  # INITIAL                                         large_pool_size = 614400
    java_pool_size = 20971520log_checkpoint_interval = 10000
    log_checkpoint_timeout = 1800processes = 150  # INITIAL          
    parallel_max_servers = 5  # SMALL              log_buffer = 32768  # INITIAL                                               max_dump_file_size = 10240  # limit trace file size to 5M eachglobal_names = trueoracle_trace_collection_name = ""
    background_dump_dest = e:\oracle\admin\orcl\bdump
    user_dump_dest = e:\oracle\admin\orcl\udumpdb_block_size = 8192remote_login_passwordfile = exclusiveos_authent_prefix = ""job_queue_processes = 0
    job_queue_interval = 10
    open_links = 4distributed_transactions = 10
    mts_dispatchers = "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)"compatible = 8.1.0
    sort_area_size = 65536
    sort_area_retained_size = 65536
      

  8.   

    在set ORACLE_SID后面加一行
    e:\oracle\ora8\bin\oradim -delete  -sid ORCL
    把原来的orcl服务删除
    原因:估计你原来曾经创建过ORCL服务(即OracleServiceORCL)。
    而e:\oracle\ora8\bin\oradim -new -sid ORCL -intpwd oracle -startmode manual -pfile "e:\oracle\admin\orcl\pfile\init.ora"会新建一个服务并把它启动,如果这服务已经有了,则不会自动启动。
    如果OracleServiceORCL不启动,则sqlplus连sys都会进不去,报协议适配器错误。这与linux下非常不同,linux中则只用sqlplus就可以启数据库,而不需要先去启动一个叫做OracleServce实例名的服务。此外发现windows下的启停oracle服务的工具——oradim,比sqlplus都管用。只需要oradim -startup -sid 实例名,就启来了,不需要先到服务里面启动再用sqlplus启动。