ORACLE备份与恢复

     1)ORACLE:使用sysdba登录,执行以下命令备份数据库到数据库安装用户的目录下,通常数据库安装用户是dbserv30这样的用户:
        -------------- 登录后查询到所有的数据库用户 --------------
        %sqlplus / as sysdba
        SQL> select username from all_users where username like '%30';
        SQL> exit;
        %exp sysdbname/passwd owner=sysdbname rows=y compress=n buffer=65536 feedback=100000 volsize=0 file=exp_sysdb.dmp

     2)注意事项:SCP数据库被命名为OPS$SCP30这样的名称,密码不确定是什么,因此可以在备份SCP数据库时按如下步骤操作:
        %sqlplus / as sysdba
        SQL> alter user OPS$SCP30 identified by scp30;
        SQL> exit;
        %exp

     3)还原操作:需要先删除数据库用户,然后再创建数据库用户,并赋权限后再执行导入即可;
        SQL> drop user sysdb30 cascade;

        SQL> create user sysdb30 identified by sysdb30 default tablespace CBS_DEFAULT_DAT temporary tablespace "TEMP";
            grant dba,connect,resource to sysdb30;
            grant select any dictionary to sysdb30;
            grant create any sequence to sysdb30;
            grant create any table to sysdb30;
            grant create any procedure to sysdb30;
            grant create any trigger to sysdb30;
            grant create session to sysdb30;
            grant create sequence to sysdb30;
            grant create table to sysdb30;
            grant create procedure to sysdb30;
            grant create trigger to sysdb30;

       %imp sysdb30/sysdb30@oracle fromuser=sysdb30 touser=sysdb30 rows=y commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=sysdb30.dmp;

       注意(以下操作都是用dba用户执行,即用sqlplus / as sysdba登录):
          A)上面的create user操作中默认表空间名应当在数据库中查找到实际用的表空间名,查询语句如下:
            SQL> select username, default_tablespace from dba_users where username like '%30';

          B)上面操作中执行drop user时如果不成功,则需要确保没有人使用PL/SQL工具或sqlplus连接到此数据库,如是确认没有连接仍然删除不成功,则可以使用以下方法解决:
            SQL> select SID,USERNAME,PROCESS,serial# from v$session where USERNAME like '%30';
            SQL> alter system kill session '<SID>,<serial#>' immediate; 

你可能感兴趣的:(oracle,sql)