最近在工作中涉及到对Oracle数据库进行备份、导入、改表等命令操作,现归纳总结出来供日后参阅。
1、--创建表空间并赋予表空间大小
create tablespace yutengspace logging datafile 'F:\oracle\product\10.2.0\oradata\yuteng\yuteng.dbf' size 54m autoextend on next 54m maxsize 2048m extent management local;
2、导入dmp数据文件,重复导入时需删除用户再创建用户再导入,否则会报数据索引错误。因为imp命令执行的是insert操作。
sqlplus system/root@eb @createUser.sql imp neweb/root@eb file="f:\169dbbak\new_eb_db_bak\newEB_2011-06-10_.dmp" ignore=y frmuser=neweb tables(a,b,c) --ignore=y 表示忽略创建错误,继续后面的操作 --full( 全库导出): 导出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 这些系统用户之外的所有用户的数据. createUser.sql内容如下(主要实现删用户,建用户): --把system和root改为具有sysdba权限的用户名和密码(如sys用户) conn system/root@eb as sysdba --删除原neweb 用户 DROP USER neweb CASCADE / --创建用户neweb 密码为 root 并分配表空间和临时表空间(如果需要自定义表空间,则需提前建表空间,命令见第1条) CREATE USER neweb IDENTIFIED BY "root" default tablespace users temporary tablespace temp / --给neweb 用户DBA权限 GRANT DBA TO neweb / --用neweb 用户连接数据库 CONN neweb/root@eb commit; exit;
3、数据库导出命令
@echo off @echo ================================================ @echo windows环境下Oracle数据库的自动备份脚本 @echo 说明:启动备份时,需要配置以下变量 @echo 1、BACKUP_DIR 指定要备份到哪个目录 @echo 2、ORACLE_USERNAME 指定备份所用的Oracle用户名 @echo 3、ORACLE_PASSWORD 指定备份所用的Oracle密码 @echo 4、ORACLE_DB 指定备份所用的Oracle连接名 @echo 5、BACK_OPTION 备份选项,可以为空,可以为full=y,可以为owner=a用户,b用户 等等.... @echo 6、RAR_CMD 指定RAR命令行压缩工具所在目录 @echo ================================================ set BACKUP_DIR=E:\SERVER-U\new_eb_db_bak set ORACLE_USERNAME=neweb set ORACLE_PASSWORD=root set ORACLE_DB=newEB set BACK_OPTION=owner=neweb for /f "tokens=1,2" %%a in ('date/t') do set TODAY=%%a set BACK_NAME=%ORACLE_DB%_%TODAY%_ set BACK_FULL_NAME=%BACKUP_DIR%\%BACK_NAME% exp %ORACLE_USERNAME%/%ORACLE_PASSWORD%@%ORACLE_DB% %BACK_OPTION% file="%BACK_FULL_NAME%.dmp" log="%BACK_FULL_NAME%exp.log"
4、修改原字段名
ALTER TABLE product_dc RENAME COLUMN description TO description_temp;
5、添加一个和原字段同名的字段
ALTER TABLE product_dc ADD description clob;
6、将原来的数据更新到新字段中这是要注意,一定要显示进行数据类型转换(不同于MSSQL)
UPDATE product_dc SET description = CAST(description_temp AS VARCHAR2(4000));
7、删除原来的备份字段
ALTER TABLE product_dc DROP COLUMN description_temp;
都是一些常规命令,主要是记录一下方便以后查阅。^_^