Oracle+创建删除用户
- 格式:docx
- 大小:19.93 KB
- 文档页数:7
oracle数据库基本语句oracle 数据库是一种常用的关系型数据库管理系统,常用的oracle数据库包括oracle10g、oracle11g和oracle12c。
要掌握oracle的基本用法,必须掌握其基本的语句。
oracle的常用基本语句有:一、数据定义语言(DDL)1、创建数据表:CREATE TABLE 表名(字段名数据类型[完整性约束条件],字段名数据类型[完整性约束条件],……);2、修改数据表: ALTER TABLE 表名 ADD(字段名数据类型[完整性约束条件],字段名数据类型[完整性约束条件],……);3、删除数据表: DROP TABLE 表名;4、创建索引:CREATE [UNIQUE] INDEX 索引名ON 表名[字段名[,字段名];5、删除索引: DROP INDEX 索引名;三、数据控制语言(DCL)1、建立用户: CREATE USER 用户名 IDENTIFIED BY 密码;2、删除用户: DROP USER 用户名;3、授权:GRANT 权限 ON 对象 TO 用户[WITH GRANT OPTION];4、回收授权: REVOKR 权限 ON 对象 FROM 用户;5、控制事务: COMMIT/ROLLBACK;四、数据库控制语言(DBCL)1、创建数据库:CREATE DATABASE 数据库名;2、删除数据库: DROP DATABASE 数据库名;3、创建表空间:CREATE TABLESPACE 表空间名 SEGMENT SPACE MANAGEMENT 自动;4、删除表空间: DROP TABLESPACE 表空间名;5、管理会话: ALTER SYSTEM KILL SESSION ['会话号'];。
系统权限在doc命令中启动Oracle(注意下文中<>为不存在只是为了标识)其中的一些权限为系统权限(都是用超级管理员授予的)1:启动SQL*PLUS:在相应盘符下输入:sqlplus / as sysdba;<默认的用户是SYS>2:启动监听器在相应盘符下输入:lsnrctl start(我的电脑默认在D盘下)3:启动实例在相应盘符下输入:oradim -starup -sid sjbitdb(我的电脑默认在D盘下)4:展示当前用户名在SQL语句中输入:show user;5:创建用户在SQL语句中输入:create user <用户名> identified by <用户密码> ;6:为用户创建会话权限在SQL语句中输入:grant create session to <用户名>;7:使用用户登录在相应盘符下语句中输入:sqlplus <用户名>/<密码> 注意后面没有分号。
8:为用户创建表权限在SQL语句中输入:grant create table to <用户名>;9:为用户创建表空间权限在SQL语句中输入:grant unlimited tablespace to <用户名>;(unlimited是没有任何限制的意思)10:创建表在SQL语句中输入:create table <表名称> (<列名> <数据类型>);(举例)11:向表中插入数据在SQL语句中输入:insert into <表名称> values(<值>);(举例)12:查询表中的数据在SQL语句中输入:select * form <表名称>;13:删除表在SQL语句中输入:drop table <表名称>;14:撤销用户的会话权限在SQL语句中输入:revoke create session fr om <用户名>;15:撤销用户的创建表权限在SQL语句中输入:revoke create table from <用户名>;16:撤销用户的创建表空间权限在SQL语句中输入:revoke unlimited tablespace from <用户名>;17:查询当前用户拥有哪些系统权限在SQL语句中输入:select * from user_sys_privs;(实际上展示的是一个视图) 18:删除用户:在SQL语句中输入:drop user <用户名>;19:把某个系统权限权限授权给所有用户:在SQL语句中输入:grant (create session<会话权限也就是允许某管理员登录的权限>) 、(create table<创建表权限>)、(unlimited tablespace<创建表空间权限>) 、(create any table<创建任意表权限>) to public;对象权限简单来说超级管理员拥有的权限叫做系统权限,普通用户拥有的权限叫做对象权限。
常用oracle数据库命令
1. 启动Oracle数据库
$ sqlplus /nolog
SQL> connect / as sysdba
SQL> startup
3. 创建表空间
创建表空间的命令是:
SQL> create tablespace 表空间名 datafile '路径名' size 大小;
6. 创建用户
7. 删除用户
删除用户的命令是:
8. 授权用户
SQL> grant 权限 to 用户名;
9. 撤销用户的权限
11. 查看表结构
查看表结构的命令是:
SQL> desc 表名;
SQL> create table 表名 (列名数据类型, 列名数据类型, …);
13. 删除表
14. 插入数据
插入数据的命令是:
SQL> update 表名 set 列名=新值 where 某条件;
18. 创建索引
20. 查看索引
21. 查询相关信息
查询相关信息的命令是:
SQL> select * from v$session; -- 查看会话 22. 查看数据库版本
24. 备份数据库
$ exp 用户名/密码 file=备份文件路径备注:以上命令均需要在Oracle登录后进行。
Oracle 用户及角色介绍一. 用户管理1.1 建立用户(数据库验证)CREATE USER DAVE IDENTIFIED BY pwdDEFAULT TABLESPACE usersTEMPORARY TABLESPACE tempQUOTA 5m ON users;1.2 修改用户ALTER USER DAVE QUOTA 0 ON SYSTEM;1.3 删除用户DROP USER DAVE;DROP USER DAVE CASCADE;1.4 显示用户信息SELECT * FROM DBA_USERSSELECT * FROM DBA_TS_QUOTAS二.系统权限系统权限是指执行特定类型SQL命令的权利,用于控制用户可以执行的一个或一类数据库操作。
(新建用户没有任何权限)2.1 授予系统权限GRANT CREATE SESSION,CREATE TABLE TO DAVE;GRANT CREATE SESSION TO DAVE WITH ADMIN OPTION;选项:ADMIN OPTION 使该用户具有转授系统权限的权限。
2.2 显示系统权限查看所有系统权限:Select * from system_privilege_map;显示用户所具有的系统权限:Select * from dba_sys_privs;显示当前用户所具有的系统权限:Select * from user_sys_privs;显示当前会话所具有的系统权限:Select * from session_privs;2.3 收回系统权限REVOKE CREATE TABLE FROM DAVE;REVOKE CREATE SESSION FROM DAVE;三 .角色:角色是一组相关权限的命名集合,使用角色最主要的目的是简化权限管理。
3.1 预定义角色。
CONNECT自动建立,包含以下权限:ALTER SESSION、CREATE CLUSTER、CREATE DATABASELINK、CREATE SEQUENCE、CREATE SESSION、CREATE SYNONYM、CREATE TABLE、CREATEVIEW。
第一步:删除过期用户 DROP USER colin CASCADE; 第二步:查询过期用户相关的表空间是否还有对象 SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, TABLESPACE_NAMEFROM DBA_SEGMENTSWHERE TABLESPACE_NAME IN(SELECT TABLESPACE_NAMEFROM DBA_TABLESPACESWHERE TABLESPACE_NAME LIKE '%COLIN%') 第三步:转移过期用户表空间上的对象到其他表空间 ALTER TABLE tab_colin MOVE TABLESPACE colin_song_tbs;ALTER INDEX idx_tab_colin REBUILD TABLESPACE colin_song_idx_tbs; 第四步:查询无对象的表空间 SELECT 'DROP TABLESPACE ' || TABLESPACE_NAME ||INCLUDING CONTENTS AND DATAFILES;'FROM DBA_TABLESPACESWHERE NOT EXISTS (SELECT 12FROM DBA_SEGMENTSWHEREDBA_SEGMENTS.TABLESPACE_NAME =DBA_TABLESPACES.TABLESPACE_NAME); 第五步:删除之把上述查询出来的语句贴到文本编辑里检查下( PS:这里会包含一个 temp 的临时表空间一定要去掉啊 )SQL> drop tablespace STAT_FTFY_CHRGSTAY_DTBS including contents and datafiles;Tablespace droppedSQL> drop tablespace STAT_FTFY_CHRGNEW_WIXTBS including contents and datafiles;Tablespace droppedSQL> drop tablespace STAT_FTFY_CHRGSMR_MIXTBS including contents and datafiles;Tablespace dropped最后去看下你的系统空间应该释放了吧。
oracle19c之⽤户、权限、表空间 ⼀、⽤户相关操作 1、查询⽤户select * from dba_users; --查询全库所有的⽤户select * from all_users; --查询当前⽤户可看到的⽤户select * from user_users; --查询当前登录的⽤户 2、创建⽤户(创建者需要有dba权限,⽤户名必须以c##开头,默认的表空间是users,新⽤户没有任何权限。
)create user c##sl IDENTIFIED BY 123456; 3、删除⽤户drop user c##sl2 cascade; --删除⽤户不会删除其表空间 注意:⽆法删除⽤户C##SL3,报错“[Err] ORA-01940: ⽆法删除当前连接“的⽤户解决⽅法:select username,sid,serial#,paddr from v$session where username='C##SL3';alter system kill session '17,55857'; 4、修改密码alter user c##sl3 identified by 1234; ⼆、权限相关操作 a、系统权限:⽤户在系统层⾯的权限,如CREATE SESSION、SELECT ANY TABLE等不依赖于对象的权限 b、对象权限:⽤户关于某个具体对象的权限,如SELECT、UPDATE、INSERT等依赖于表、视图、存储过程的权限 c、⾓⾊:⼀组权限的集合 注意:PUBLIC⽤户具有的权限,其他⽤户都会有,即修改PUBLIC⽤户的权限,其他⽤户也会对应得改变权限 1、查看权限、⾓⾊select * from user_tab_privs; --当前⽤户具有的对象权限select * from dba_tab_privs WHERE grantee='C##SL' OR grantor='C##SL'; --全部⽤户具有的对象权限,查询C##SL⽤户的select * from user_sys_privs; --当前⽤户具有的系统权限select * from dba_sys_privs WHERE grantee='C##SL'; --全部⽤户具有的系统权限,查询C##SL⽤户的SELECT * FROM user_role_privs; --当前⽤户具有的⾓⾊SELECT * FROM dba_role_privs where grantee='C##SL'; --全部⽤户具有的⾓⾊,查询C##SL⽤户的 注意:上⾯每⼀对查询出的结果应该⼀样,因为全部⽤户中肯定也包含当前⽤户,普通⽤户没有查询全部⽤户⾓⾊、权限表的权限 2、常⽤权限、⾓⾊dba 管理员⾓⾊connect 连接数据库⾓⾊,能修改、删除表及数据,不能创建表resource 能创建表create session 连接数据库权限create table 建表权限unlimited tablespace 操作表空间权限select any table 查询任何表的权限select on c##test.book 查询c##test⽤户的book表的权限 说明: a、⼀般来说,新建的普通⽤户后授予connect和resource⾓⾊就好了、如果是管理员需要再授予dba⾓⾊。
Oracle数据库管理员日常操作手册===================一、用户管理------### 1.1 创建用户1. 打开Oracle数据库管理工具(如SQL*Plus或SQL Developer)。
2. 使用管理员账户(如sys)登录。
3. 执行以下SQL语句创建用户:```sqlCREATE USER username IDENTIFIED BY password;```其中,`username`为用户名,`password`为密码。
4. 可选:为新用户分配表空间。
例如,执行以下语句将用户分配到默认的表空间:```sqlALTER USER username DEFAULT TABLESPACE tablespace_name;```其中,`tablespace_name`为要分配给用户的表空间的名称。
### 1.2 修改用户密码1. 打开Oracle数据库管理工具。
2. 使用管理员账户登录。
3. 执行以下SQL语句修改用户密码:```sqlALTER USER username IDENTIFIED BY new_password;```其中,`username`为要修改密码的用户名,`new_password`为用户的新密码。
### 1.3 删除用户1. 打开Oracle数据库管理工具。
2. 使用管理员账户登录。
3. 执行以下SQL语句删除用户:```sqlDROP USER username;```其中,`username`为要删除的用户名。
二、数据库备份与恢复----------### 2.1 执行完整备份1. 打开Oracle数据库管理工具(如Enterprise Manager)。
2. 选择要进行备份的数据库。
3. 执行备份命令。
通常使用类似以下的命令:```bashRMAN> RUN {2> ALLOCATE CHANNEL c1 DEVICE TYPE DISK;3> BACKUP DATABASE FORMAT '/path/to/backup/location/backup_date' PLUS ARCHIVELOG;4> }```其中,`/path/to/backup/location/`为备份文件的存储路径,`backup_date`为备份日期和时间。
oracle创建删除⽤户⽰例分享(oracle删除⽤户命令及授权)1、Oracle⽤户新增复制代码代码如下:create user lisi identified by lisi;注:create user是创建数据库⽤户,后⾯跟⽤户名称,identified by是设置⽤户密码2、把“连接”数据库权限授给新增⽤户lisi复制代码代码如下:grant connect to lisi;注:grant:Oracle数据库授权的关键字connect:Oracle数据库的⼀个默认⾓⾊,只有连接上数据库的权限3、把scott⽤户的表授权给lisi⽤户复制代码代码如下:grant select on emp to lisi;pl/sql中的问题:动态执⾏表不可访问,本回话的⾃动统计被禁⽌。
在执⾏菜单⾥你可以禁⽌统计,或在v$session,v$sesstat 和v$statname表⾥获得选择权限解决⽅案:复制代码代码如下:grant select on v_$session to ⽤户名;grant select on v_$sesstat to ⽤户名;grant select on v_$statname to ⽤户名;4、回收⽤户权限复制代码代码如下:revoke select on emp from lisi;5、⽤户密码修改⽤lisi账号登录复制代码代码如下:alter user lisi identified by 密码;6、⽤户删除drop user ⽤户名;或者drop user ⽤户名 cascade;(这将会删除与⽤户相关联的表)7、数据库的权限和⾓⾊①查看数据库⽤户有哪些权限复制代码代码如下:select * from session_privs;注:session_privs是Oracle数据库的字典表,字典表其实就是Oracle的内部表(不⽤创建就已经存在了)。
这个表可以看到很多权限,如创建表等。
oracle删除⽤户⽤户会话1.oracle数据库中删除⽤户有两种命令,⼀种是 drop user xxx;另外⼀个种是drop user xxx cascade;2.官⽅的说明如下:Dropping a Database User: Example If user Sidney's schema contains no objects, then you can drop sidney by issuing the statement: DROP USER sidney; --sidney为⽤户名,⽤sys登录执⾏该语句If Sidney's schema contains objects, then you must use the CASCADE clause to drop sidney and the objects:DROP USER sidney CASCADE; --sidney为⽤户名,⽤sys登录执⾏该语句就是说drop user xxx必须是这个⽤户下⾯没有任何对象,这样才可以使⽤这个命令,否则就会报错;如果⽤户下⾯有对象,就得⽤drop user xxx cascade来删除这个⽤户以及这个⽤户下的所有对象了。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1、以⼀个session做以⽰例,a、找到你要杀掉的那个session, 并记下paddrselect sid, username, paddr, status from v$sessionwhere username = '⽤户名' andstatus = 'INACTIVE';b、找到这个session所对应的spidselect * from v$process where addr = '上⾯查寻的paddr';c、杀掉spid所标识的那个进程如果你的Oracle是在Unix平台上的,可以⽤kill。
说明:在创建数据库时输入的密码,是修改系统默认的密码,以system和sysman等系统默认身份登录时要输入的密码就是修改后的密码(创建数据库时输入的密码)如果要创建新的用户就必须以system或者sysman(这二者的权限最大)的身份登录后才可创建创建用户格式:create user 用户名identified by 密码(例如:create user cht id entified by cht;)创建完成后,必须分配权限,否则连不上数据库和sqlplus。
因此要做:grant connect,resource,dba to cht;这样数据库就可以通过cht/cht连上了。
那些select,update,delete,insert的权限就不必分配了,因为每个用户默认都有这些基本权限。
命令行方式连接数据库的方法:开始==》运行==》cmd方式一:输入sqlplus,回车输入用户名:system,回车输入密码:orcl,回车方式二:输入sqlplus system/orcl@orcl,回车(system是用户名,orcl是密码,@后面的or cl是库的名字)(数据库安装完成后,有两个系统级的用户:1)system 默认密码为:manager2)sys 默认密码为:change_on_install)创建用户前必须要先建好临时表空间和数据表空间两个表空间,否则用系统默认的表空间不好。
//创建临时表空间create temporary tablespace zfmi_temp tempfile 'D:\oracle\oradata\zf mi\zfmi_temp.dbf' size 100m autoextend on next 32m maxsize 2048m extent management local;说明:1、zfmi_temp 表空间的名字2、D:\oracle\oradata\zfmi\ 存放数据库文件的地方,一般是安装数据库后有控制文件,数据文件和日志文件的文件夹,再加上要创建表空间的名字+dbf(数据文件)3、100M 表空间的初始大小4、32M 表空间自动增长的大小5、2048M 表空间最大的大小//创建数据表空间create tablespace zfmi logging datafile 'D:\oracle\oradata\zfmi\zfmi.d bf' size 100m autoextend on next 32m maxsize 2048m extent manage ment local;//创建用户并指定表空间create user zfmi identified by zfmi default tablespace zfmi temporary t ablespace zfmi_temp;//给用户授予权限grant connect,resource dba to zfmi;(dba:指定所有权限)到这一步新建一个用户的工作就完成了。
oracle创建⽤户赋予权限,删除权限--删除⽤户及及⽤户下的所有数据drop user xxx cascade;--创建⽤户赋予密码create user xxx identified by1234;--赋予权限grant dba to xxx;--删除权限revoke dba from xxx;--赋予⽤户登录数据库的权限grant create session to xxx;--授予⽤户操作表的权限grant unlimited tablespace to xxx;grant create tablespace to xxx;grant alter tablespace to xxx;grant drop tablespace to xxx;grant manage tablespace to xxx;--撤销⽤户操作表空间的权限revoke unlimited tablespace from xxx;revoke create tablespace from xxx;revoke alter tablespace from xxx;revoke drop tablespace from xxx;revoke manage tablespace from xxx;grant create session to zhangsan;--授予zhangsan⽤户创建session的权限,即登陆权限grant unlimited session to zhangsan;--授予zhangsan⽤户使⽤表空间的权限grant create table to zhangsan;--授予创建表的权限grant drop table to zhangsan;--授予删除表的权限grant insert table to zhangsan;--插⼊表的权限grant update table to zhangsan;--修改表的权限grant select on tablename to zhangsan;--授予zhangsan⽤户查看指定表的权限grant drop on tablename to zhangsan--授予删除表的权限grant insert on tablename to zhangsan;--授予插⼊的权限grant update on tablename to zhangsan;--授予修改表的权限select*from user_sys_privs;--查看当前⽤户所有权限select*from user_tab_privs;--查看所⽤⽤户对表的权限select*from user_sys_privs;--查看当前⽤户所有权限select*from user_tab_privs;--查看所⽤⽤户对表的权限。
Oracle 权限设置一、权限分类:系统权限:系统规定用户使用数据库的权限。
(系统权限是对用户而言)。
实体权限:某种权限用户对其它用户的表或视图的存取权限。
(是针对表或视图而言的)。
二、系统权限管理:1、系统权限分类:DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
2、系统权限授权命令:[系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)]授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...;[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system 用户的权限也可以被回收。
]例:SQL> connect system/managerSQL> Create user user50 identified by user50;SQL> grant connect, resource to user50;查询用户拥有哪里权限:SQL> select * from dba_role_privs;SQL> select * from dba_sys_privs;SQL> select * from role_sys_privs;删除用户:SQL> drop user 用户名 cascade; //加上cascade则将用户连同其创建的东西全部删除3、系统权限传递:增加WITH ADMIN OPTION选项,则得到的权限可以传递。
实验报告三课程名称: Oracle10数据库 实验项目: 数据库安全管理操作 指导教师: 李庆风 实验位置: 计算中心软件工程实验室姓 名: 叶贝贝 学 号: 10401010447 班 级: 计科104 日 期: 2013-3-14一、实验目的掌握Oracle10g 数据用户的管理,学会用户的创建,掌握数据库权限的管理,学会对用户权限的授权和回收操作,掌握数据库角色的管理,学会角色的创建、授权等操作,会的角色权限管理。
掌握概要文件的管理,学会概要文件的创建、修改等操作。
二、实验环境安装有Oracle10g 数据库软件等的计算机。
三、实验内容1.用户管理操作 2.权限管理操作 3.角色管理操作 4.概要文件操作四、实验操作实验内容一: 一、创建用户1.创建用户名user3,口令user3,初始状态为locked(锁定)测试用户结果2.创建用户名user4,密码user4,初始状态为密码过期初次登陆需要更改密码测试用户二、修改用户1.将用户user3的口令设置为newuser3,并解锁帐户2.修改user4默认表空间为orcltbs1,分配额为2M,在users表空间分配额为5M三、删除用户实验内容二:一、系统权限的授权1.为public用户组授予create session系统权限2.为user1授予create session,create table,create view,授权后为user2授予create table二、系统权限的收回将user2的create table功能收回三、对象权限的授权对user1授予select,insert,update 权限四、对象权限的回收收回user1的select和update 权限实验内容三:一、创建角色创建高、中、低三种角色二、授权和回收权限三、删除权限四、对用户或角色授予角色和收回角色实验内容四:一、概要文件的创建创建名为res_profile概要文件,要求最多创建4个并发会话,可持续60分钟/会话,并且20分钟内空闲,结束会话,每个会话私有SQL空间100k 每句占CPU不超过10秒。
Oracle 创建删除用户、角色、表空间、导入导出、备份命令总结导入导出实用程序用于实施数据库的逻辑备份和恢复导出实用将数据库中的对象定义和数据备份到一个操作系统二进制文件中导入使用程序读取二进制导出文件并将对象和数据载入数据库中导出额导入实用程序的特点有:1.可以按时间保存表结构和数据2.允许导出指定的表,并重新导入到新的数据库中3.可以吧数据库迁移到另外一台异构服务器上4.在两个不同版本的Oracle数据库之间传输数据5.在联机状态下进行备份和恢复6.可以重新组织表的存储结构,减少链接及磁盘碎片调用导入导出的三种方法:在命令执行程序的参数和参数值已交互的方式提示用户逐个输入参数的值允许用户将运行参数和参数值存储在参数文件中,以便重复使用参数导入导出数据库对象的四种模式:完全数据库、表、用户、表空间导入导出整个数据库的所有对象导入导出一个或多个指定的表或表空间导入导出一个用户模式中的所有对象导入导出一个或多个指定的表空间中的所有对象导出使用程序有以下常用的命令参数参数说明USERID 确定执行导出实用程序的用户名和口令BUFFER 确定导出数据时所使用的缓冲区大小,其大小用字节表示FILE 指定导出的二进制文件名称,默认的扩展名是.dmpFULL 指定是否以全部数据库方式导出,只有授权用户才可使用此参数OWNER 要导出的数据库用户列表HELP 指定是否显示帮助消息和参数说明ROWS 确定是否要导出表中的数据TABLES 按表方式导出时,指定需导出的表和分区的名称PARFILE 指定传递给导出实用程序的参数文件名TABLESPACES 按表空间方式导出时,指定要导出的表空间名导出实用程序按用户方式导出数据exp gmd/gmd@oracle file=d:/1.dmp owner=gmd按表方式导出数据exp gmd/gmd@oracle tables=(GRP_PROVINCE,GRP_CITY,GRP_AREA) file=d:/2.dmp按表空间方式导出数据exp system/oracle@oracle tablespaces=(gmd) file=d:/3.dmp使用参数文件导出数据exp system/oracle@oracle parfile='d:\parameters.txt'导入使用程序有以下常用的命令参数参数说明USERID 指定执行导入的用户名和密码BUFFER 指定用来读取数据的缓冲区大小,以字节为单位COMMIT 指定是否在每个数组(其大小由BUFFER参数设置)插入后进行提交FILE 指定要导入的二进制文件名FROMUSER 指定要从导出转储文件中导入的用户模式TOUSER 指定要将对象导入的用户名。
FROMUSER与TOUSER可以不同FULL 指定是否要导入整个导出转储文件TABLES 指定要导入的表的列表ROWS 指定是否要导入表中的行PARFILE 指定传递给导入实用程序的参数文件名,此文件可以包含这里列出的所有参数IGNORE 导入时是否忽略遇到的错误,默认为NTABLESPACES 按表空间方式导入,列出要导入的表空间名导入实用程序按整个文件导入数据库imp gmd/gmd@oracle file=d:1.dmp ignore=y full=y按halibut用户的表导入到fantasy用户imp gmd/gmd@oracle file=2.dmp fromuser=halibut touser=fantasy tables=(t_user,role)使用参数文件导入数据imp system/oracle@oracle parfile='d:\paramenters.txt'--------------------------create temporary tablespace zfmi_temptempfile 'D:\oracle\oradata\zfmi\zfmi_temp.dbf'size 32mautoextend onnext 32m maxsize 2048mextent management local;//tempfile参数必须有//创建数据表空间create tablespace zfmiloggingdatafile 'D:\oracle\oradata\zfmi\zfmi.dbf'size 100mautoextend onnext 32m maxsize 2048mextent management local;//datafile参数必须有//删除用户以及用户所有的对象drop user zfmi cascade;//cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数//删除表空间前提:删除表空间之前要确认该表空间没有被其他用户使用之后再做删除drop tablespace zfmi including contents and datafiles cascade onstraints;//including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数//including datafiles 删除表空间中的数据文件//cascade constraints 同时删除tablespace中表的外键参照如果删除表空间之前删除了表空间文件,解决办法:如果在清除表空间之前,先删除了表空间对应的数据文件,会造成数据库无法正常启动和关闭。
可使用如下方法恢复(此方法已经在oracle9i中验证通过):下面的过程中,filename是已经被删除的数据文件,如果有多个,则需要多次执行;tablespace_name是相应的表空间的名称。
$ sqlplus /nologSQL> conn / as sysdba;如果数据库已经启动,则需要先执行下面这行:SQL> shutdown abortSQL> startup mountSQL> alter database datafile 'filename' offline drop;SQL> alter database open;SQL> drop tablespace tablespace_name including contents;//创建用户并指定表空间create user zfmi identified by zfmidefault tablespace zfmi temporary tablespace zfmi_temp;//identified by 参数必须有//授予message用户DBA角色的所有权限GRANT DBA TO zfmi;//给用户授予权限grant connect,resource to zfmi; (db2:指定所有权限)导入导出命令:Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。
exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。
利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于在oracle 8i 中安装目录ora81BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例。
数据导出:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中exp system/manager@TEST file=d:daochu.dmp full=y2 将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)3 将数据库中的表inner_notify、notify_staff_relat导出exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)4 将数据库中的表table1中的字段filed1以"00"打头的数据导出exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面加上compress=y 来实现。
数据的导入1 将D:daochu.dmp 中的数据导入TEST数据库中。
imp system/manager@TEST file=d:daochu.dmpimp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上ignore=y 就可以了。
2 将d:daochu.dmp中的表table1 导入imp system/manager@TEST file=d:daochu.dmp tables=(table1)基本上上面的导入导出够用了。
不少情况要先是将表彻底删除,然后导入。
注意:操作者要有足够的权限,权限不够它会提示。
数据库时可以连上的。
可以用tnsping TEST 来获得数据库TEST能否连上。
附录一:给用户增加导入数据权限的操作第一,启动sql*puls第二,以system/manager登陆第三,create user 用户名IDENTIFIED BY 密码(如果已经创建过用户,这步可以省略)第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW , DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字第五, 运行-cmd-进入dmp文件所在的目录,imp userid=system/manager full=y file=*.dmp或者imp userid=system/manager full=y file=filename.dmp执行示例:F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp屏幕显示Import: Release 8.1.7.0.0 - Production on 星期四2月16 16:50:05 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - ProductionWith the Partitioning optionJServer Release 8.1.7.0.0 - Production经由常规路径导出由EXPORT:V08.01.07创建的文件已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入导出服务器使用UTF8 NCHAR 字符集(可能的ncharset转换). 正在将AICHANNEL的对象导入到AICHANNEL. . 正在导入表"INNER_NOTIFY" 4行被导入准备启用约束条件...成功终止导入,但出现警告。