最近在工作中涉及到对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;
都是一些常规命令,主要是记录一下方便以后查阅。^_^