发布新日志

  • 通过bat备份ORACLE数据及执行语句

    2009-08-14 15:17:51

    备忘仅供参考:

    保存最近五次内数据,将以下内容保存为BAT文件

    echo 在e:\数据库日备份目录下创建tmp,a,b,c,d,e目录

    @echo off
    echo 开始备份数据库.....
    set filename=e:\数据库日备份\tmp\%date:~0,10%
    exp userid=pip_sx_sys/sx@pip132 file=%filename%pipsys.dmp wner=pip_sx_sys INDEXES=y grants=y  constraints=y compress=y log=%filename%pipsys.log
    echo 备份结束


    if not exist %filename%fgysuser.dmp goto finish
    del/q e:\数据库日备份\e
    move e:\数据库日备份\d\*.* e:\数据库日备份\e
    move e:\数据库日备份\c\*.* e:\数据库日备份\d
    move e:\数据库日备份\b\*.* e:\数据库日备份\c
    move e:\数据库日备份\a\*.* e:\数据库日备份\b
    move e:\数据库日备份\tmp\*.* e:\数据库日备份\a
    :finish

    在BAT里执行ORACLE的SQL语句

    建个一个BAT文件写入以下语句:

    sqlplus etms/12@orcl15 @runSql.sql

    在 runSql.sql文件输入以下内容

    conn etms/12@orcl15   
    alter table AA add a4 varchar2(10);
    commit;
    exit

     

  • 系统崩溃重装系统后还原ORACLE(个人小记)

    2008-12-22 13:36:41

    问题记录:

    原问题:数据库:ORACLE10G,原操作系统win server2000,现WINDOWS XP
    服务器崩溃了,但ORACLEDATE下的数据还存在,我想还原部分数据行不?

    以下是网上的常用方法:
    方法一:"把原来的oracle存放数据的整个目录备份出来,重装oracle,安装要跟原来的一样,实例名也和原来的一样,再把备份的oracle目录覆盖新建的数据库的目录就可以了。" 这个我试过第一次能试成功,但由于同事操作失误把整个ORACLE卸掉了,然后再试就没试成功过.

    解决方法:整个数据库还原了,但还原部分用户下的没有实现
    以下是在还原中我碰到的一些问题
    是用方法一实现的,原先试了多次没成功的原因是在新建数据库的时候选择"指定数据库的位置"出错,原数据库是所有数据文件使用公共的,而我在新建数据时选择了"使用ORACLE管理",所以还原的时候要步步注意啊
    按方法一完成后,进入10G的EM中查看数据库是否正常,我碰到的是数据库与监听都是关着的,
    先启动数据库,按提示一步一步启动,成功应该就没事的,我是没成功就点击查看详细信息,我碰到的是某些文件没有找到,从原数据文件中复制过来就行了.
    到此为止,我的数据库是可以访问了,但访问表空间出错
    重建EM后就可以了
    emca -repos recreate

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

    在未使用emca -repos recreate前使用DMP导出曾出过错是用以下方法解决的.估计执行recreate命令后应该就行了不需要执行下面方法

    参考:

    下面内容来自以下连接

    http://space.itpub.net/?uid-701141-action-viewspace-itemid-135994

    下面,是我做的Oracle 10G 里面控制文件恢复后,临时表空间为空的处理方法,这是Oracle 10G 的一个bug,在11G里面已经没有这个问题。

    问题: ORA-25153: Temporary Tablespace is Empty

    我们先查看表空间

    SQL> select tablespace_name,status from dba_tablespaces;

    TABLESPACE_NAME                STATUS
    ------------------------------ ---------
    SYSTEM                         ONLINE
    UNDOTBS1                       ONLINE
    SYSAUX                         ONLINE
    TEMP                           ONLINE
    USERS                          ONLINE
    RECOVERY_TBS                   ONLINE
    都temp online 在线。

     SQL> select tablespace_name,file_name from dba_temp_files;

    no rows selected

    就会发现,dba_temp_files 原来如此。

    SQL> alter tablespace temp add tempfile '/oradata/elife02/temp01.dbf'SQL>  select FILE_NAME,TABLESPACE_NAME,STATUS from dba_temp_files;

    FILE_NAME TABLESPACE_NAME STATUS

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

    /oradata/elife02/temp01.dbf TEMP AVAILABLE

    还可以指定默认的临时表空间

    SQL>alter database  default temporary tablespace temp;

  • bat中执行SQL相关内容(ORACLE)

    2008-10-17 11:09:54

    在BAT文件中执行ORACL中的语句、过程等的写法:

    建一个BAT文件(内容如下):
    sqlplus pip_sx_sys/sx@etms140 @BB.SQL
      说明:
          sqlplus pip_sx_sys/sx@etms140:连接串
          @BB.SQL:调用的SQL脚本

    SQL脚本内容:要执行的SQL语句

    例:
    CALL BB();--调用一个过程
    EXIT;--退出(不加会停在SQL>状态哦)

  • ORACLE dblink 小记

    2008-09-02 09:45:33

    建DBLINK:
    使用pl/sql developer建:找到Database Links,右键新建
                              名称:dblink名  连接到用户名:目标数据库登录名 密码:目标数据库密码
                              数据库:目标数据库服务名

    查询表:
    select * from 用户名.表 @DBLINK名称 where 条件;

    查询函数:
    select  用户名.函数名@DBLINK名称(参数) from dual;

    在本地函数中调用dblink函数:
    Result:=用户名.函数名@DBLINK名称(参数);

    复制dblink中的表结构与数据:
    CREATE TABLE 表名 AS SELECT * FROM 用户名.表名@DBLINK名称 where 条件
    索引这些可以使用手工建:在pl/sql developer的SQL窗口中选中表名再查看表结构

    备注:
    如果机子上同时安装ORACLE的数据库与客户端,要用数据库建需连接dblink的数据库的服务
    在过程中创建表时要先给权限execUTE immediate 'Grant Create any table to 用户名';
    从dblink的从张表中取数只需在每个表名后加@dblink名称

  • WINDOWs2000下安装ORACLE9I与10G

    2007-12-03 17:02:44

    操作系统:windows2000 server

    软件oracle9i+oracle10G102

    步骤:(先装9i再装10g)

    1、先安装oracle9i,完成后关闭所有服务。

    2、安装oracle10G,安装的路径与9i路径不一致,完成。

    3、重启系统(个人行为),修改oracle9i监听程序端口listener.ora(1522)并修改tnsnames.ora、snmp_ro.ora文件中的相关端口。

    问题:

    1、装完9i后发现可以登录,但点击时出现“ORACLE不可用”

    方法:sqlplus /nolog
         conn sys/sys as sysdba
         startup
         执行以上命令后,就可以登入了

    2、装完10G且修改好9i的监听程序端口后,进入9i同样出现“ORACLE不可用”,用一中的方法不行,执行tnsping orcl9i发现指向的10G的目录

    方法一:我的电脑->属性->高级->环境变量->path;修改path值将"oracle9i\...\bin"放到"oracle10g\...\bin"前,重启系统再使用问题一的方法就可以了。

    方法二:不修改path值,修改10g下的tnsnames.ora文件,将9i中的配置拷入10的tnsnames.ora,同样修改9i的tnsnames.ora文件。再使用命令启动9i数据库(修改后的tnsnames.ora文件见下面)
         sqlplus /nolog
         conn sys/sys@orcl9i as sysdba
         startup

    以上只为个人做参考用,感谢天涯浪子的帮助

    10G的tnsnames.ora
    ====================================================

    ORCL10G =
       (DEscrīptION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = xt-b271dac81b07)(PORT = 1521))
         (CONNECT_DATA =
           (SERVER = DEDICATED)
           (SERVICE_NAME = orcl10g)
         )
       )
    ORCL9I =
       (DEscrīptION =
         (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = TCP)(HOST = xt-b271dac81b07)(PORT = 1522))
         )
         (CONNECT_DATA =
           (SERVICE_NAME = ORCL9I)
         )
       )
    EXTPROC_CONNECTION_DATA =
       (DEscrīptION =
         (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
         )
         (CONNECT_DATA =
          (SID = PLSExtProc)
           (PRESENTATION = RO)
         )
       )

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

    9i的tnsnames.ora
    ====================================================

    ORCL10G =
       (DEscrīptION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = xt-b271dac81b07)(PORT = 1521))
         (CONNECT_DATA =
           (SERVER = DEDICATED)
           (SERVICE_NAME = orcl10g)
         )
       )
    ORCL9I =
       (DEscrīptION =
         (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = TCP)(HOST = xt-b271dac81b07)(PORT = 1522))
         )
         (CONNECT_DATA =
           (SERVICE_NAME = ORCL9I)
         )
       )
    INST1_HTTP =
       (DEscrīptION =
         (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = TCP)(HOST = xt-b271dac81b07)(PORT = 1522))
         )
         (CONNECT_DATA =
           (SERVER = SHARED)
           (SERVICE_NAME = MODOSE)
           (PRESENTATION = http://HRService)
        )
       )
    EXTPROC_CONNECTION_DATA =
       (DEscrīptION =
         (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
         )
         (CONNECT_DATA =
           (SID = PLSExtProc)
           (PRESENTATION = RO)
         )
       )

Open Toolbar