下面这些基本的SQL语句应该熟悉,能够灵活运用。最好在不查资料的情况下,能够写出如下的任何代码。
--create user username identified by password --[default tablespace tablespace_default] --[temporary tablespace tablespace_temp] --[profiles profilename] --[account lock|account unlock] --创建用户 create user df identified by pass1 default tablespace users temporary tablespace temp; --修改用户配额 alter user df quota 20m on users; --修改用户密码 alter user df identified by pass2; --解锁用户 alter user df account unlock; --删除用户 drop user df cascade; --授权 --grant sys_privi|role to user|role|public with admin option grant connect to mytest; grant resource to mytest; grant dba to mytest; grant exp_full_database to mytest; grant imp_full_database to mytest; --回收权限 --revoke sys_privi|role from user|role|public revoke dba from mytest; --对象授权 --grant obj_privi|all column on schema.object to user|role|public [with grant option]|[with hierarchy option] grant select,insert,delete,update on BBS.BBSDETAIL to MYTEST; --回收对象授权 --revoke obj_privi|all on schema.object from user|role|public cascade constraints revoke delete,update,insert,select on BBS.BBSDETAIL from MYTEST;
表1:部分常用预定义角色的权限说明
角色名 | 包含权限 |
CONNECT | ALTER SESSION CREATE CLUSTER CREATE DATABASE LINK CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE VIEW |
CREATE CLUSTER CREATE INDEXTYPE CREATE OPERATOR CREATE PROCEDURE CREATE SEQUENCE CREATE TABLE CREATE TRIGGER CREATE TYPE |
|
DBA | 所有权限,不受限制 |
EXP_FULL_DATABASE | SELECT ANY TABLE BACKUP ANY TABLE EXECUTE ANY PROCEDURE EXECUTE ANY TYPE ADMINS RESOURCE MANAGER |
IMP_FULL_DATABASE | EXECUTE_CATALOG_ROLE SELECT_CATALOG_ROLE |
数据泵导出包括导出表、导出模式、导出表空间和导出全部数据库4种模式。EXPDP工具只能将导出的转储文件存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。因此,使用EXPDP工具时,必须首先建立DIRECTORY对象,并且需要为数据库用户授予使用使用DIRECTORY对象的权限。
示范:
create directory DUMP_DIR as 'F:\dpdump'; grant read,write on directory DUMP_DIR to MYTEST;
其中,我这里的F盘为移动硬盘,数据库存放目录与DUMP目录不在一个物理盘上,保证了导出与导入的速度。
expdp mytest/test001@orcl directory=DUMP_DIR dumpfile=mytest_s.dmp schemas=MYTEST
EXPDP命令参数:
1). CONTENT
该参数用于指定要导出的内容,默认值为ALL,语法如下:
content=[all|data_only|metadata_pnly]
2). QUERY
该参数用于指定过滤导出数据的WHERE条件,语法如下:
query=[schema.][table_name:]query_clause
expdp mytest/test001@orcl directory=DUMP_DIR dumpfile=mytest_s.dmp tables=DEPT query='where DEPTNO=10'
3). DIRECTORY
该参数指定转储文件和日志文件所在的目录,语法如下:
directory=directory_object
4). DUMPFILE
该参数用于指定转储文件的名称,默认名称为expdat.dmp,语法如下:
dumpfile=[directory_object:]file_name[,...]
5). FULL
该参数用于指定数据库模式导出,默认为n,语法如下:
full={y|n}
6). LOGFILE
该参数用于指定导出日志文件的名称,默认名称为export.log,语法如下:
logfile=[directory_object:]file_name
7). STATUS
该参数用于指定显示导出作业进程的详细状态,默认值为0,语法如下:
status=integer
integer用于指定显示导出作业状态的时间间隔,单位为秒。指定该参数后,每隔特定时间间隔会显示作业完成的百分比。
8). TABLES
该参数用于指定表模式导出,语法如下:
tables=[schema.]table_name[:partition_name][,...]
9). TABLESPACE
该参数用于指定要导出表空间列表。
10). COMPRESSION
减少转储文件大小。
有效的关键字值为: ALL, DATA_ONLY, [METADATA_ONLY] 和 NONE。
11). ENCRYPTION
加密某个转储文件的一部分或全部。
有效的关键字值为: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY 和 NONE
12). ENCRYPTION_MODE
生成加密密钥的方法。
有效的关键字值为: DUAL, PASSWORD 和 [TRANSPARENT]。
13). ENCRYPTION_PASSWORD
用于在转储文件中创建加密数据的口令密钥。
综合示范(将数据库模式为mytest下面内容导出到mytest_s.dmp文件,压缩,加密):
expdp mytest/test001@orcl compression=ALL directory=DUMP_DIR dumpfile=mytest_s.dmp
encryption=ALL encryption_mode=PASSWORD encryption_password=yourpasshere schemas=MYTES
impdp mytest/test001@orcl directory=DUMP_DIR dumpfile=mytest_s.dmp schemas=MYTEST
IMPDP命令参数:
1). REMAP_SCHEMA
将一个方案中的对象加载到另一个方案。语法如下:
remap_schema=source_schema:target_schema
2). REMAP_TABLESPACE
将表空间对象重新映射到另一个表空间。语法如下:
remap_tablespace=source_tablespace:target_tablespace
3). SQLFILE
可以从DMP文件中提取对象的 SQL DDL 语句,写入指定的文件,以便之后使用。
4). TABLE_EXISTS_ACTION
导入对象已存在时执行的操作。
有效的关键字为: APPEND, REPLACE, [SKIP] 和 TRUNCATE。
5). TRANSPORT_DATAFILES
按可传输模式导入的数据文件的列表。示范(向当前数据库中导入test.dbf数据文件):
impdp system/1qaz2wsx directory=DUMP_DIR dumpfile=tran_datafiles.dmp transport_datafile='d:\OracleData\test.dbf'
综合示范(导入加密的文件):
impdp mytest/test001@orcl directory=DUMP_DIR dumpfile=mytest_s.dmp encryption_password=yourpasshere schemas=MYTEST