杂乱无章之Oracle(一)

时间:2021-05-09 12:45:03

1、 设置共享池大小

SQL>ALTER  SYSTEM  SET  SHARED_POOL_SIZE=32M;

2、 数据库高速缓冲区(database  buffer  cache):SQL语句首先在数据库高速缓冲区(database  buffer  cache)中搜寻所需的数据,如果找到了就直接使用而不进行磁盘操作;反之,就将进行磁盘操作把数据文件中的数据读入到数据库高速缓冲区中。

设置数据库高速缓冲区大小

SQL>ALTER  SYSTEM  SET  DB_CACHE_SIZE=40M;

3、 内存缓冲区顾问(v$db_cache_advice):用来帮助获得调整数据库高速缓冲区的统计信息。有三种状态:

(1) ON:打开,为该工具分配内存并进行统计信息的收集,有内存和CPU开销。

(2) READY:关闭,为该工具分配内存但不进行统计信息的收集,没有CPU开销。

(3) OFF:关闭,不为该工具分配内存和统计信息的收集,没有内存和CPU开销。

查看内存缓冲区顾问状态

SQL>SELECT  *  FROM  v$db_cache_advice;

设置内存缓冲区顾问状态

SQL>ALTER  SYSTEM  SET  DB_CACHE_ADVICE=OFF;

4、显示SGA信息

SQL>SHOW  SGA

5、 利用v$parameter获取SGA_MAX_SIZE的值(或者是SGA_TARGET)

SQL>SELECT  *  FROM  v$parameter  WHERE  NAME=’sga_max_size’;或者

SQL>SHOW  PARAMETER  sga_max_size;

6、 动态服务器参数是通过PFILE通过用CREATE SPFILE命令建立

SQL>CREATE  SPFILE  FROM  PFILE;

启动数据库先后顺序:

(1) 首先使用服务器上的spfileSID文件启动实例

(2) 若没找到spfileSID文件,就使用服务器上默认的SPFILE文件启动实例

(3) 若没找到SPFILE文件,就使用服务器上initSID文件启动实例

(4) 若没找到initSID文件,就使用服务器上默认的PFILE文件启动实例。

7、防止用户修改数据库数据,设置数据库为只读状态

SQL>ALTER  DATABASE  READ  ONLY;

8、设置数据库为正常状态

SQL>ALTER  DATABASE  READ  WRITE;

9、查看数据库信息

SQL>SELECT  *  FROM  v$database;

10、数据库主机名、实例名、oracle数据库管理系统版本号

SQL>SELECT  *  FROM  v$instance;

11、查看oracle数据库系统详细版本号

SQL>SELECT  *  FROM  v$version;

12、查看控制文件路径、状态

SQL>SELECT  *  FROM  v$controlfile;

13、查看重做日志文件的配置信息

SQL>SELECT  *  FROM  v$log;

14、查看重做日志的状态和路径

SQL>SELECT  *  FROM  v$logfile;

15、查看归档文件的模式等信息

SQL>ARCHIVE  LOG  LIST;

16、查看表空间个数及表空间状态

SQL>SELECT  *  FROM  dba_tablespaces;

17、查看表空间的数据文件路径

SQL>SELECT  *  FROM  dba_data_files;

18、查看数据库的用户信息

SQL>SELECT  *  FROM  dba_users;

控制文件的备份

SQL>ALTER  DATABASE  BACKUP  CONTROLFILE  TO  ‘c:\zhen\controlfile.ctl’;

SQL>ALTER  DATABASE  BACKUP  CONTROLFILE  TO  ‘c:\zhen\controlfile.bak’;

创建控制文件的命令备份到追踪文件中(追踪文件包含重建控制文件所需的SQL语句)

SQL>ALTER  DATABASE  BACKUP  CONTROLFILE  TO  TRACE  AS  ‘C:\zhen\ctrbak.sql’

19、移动控制文件(正文的初始化参数文件(PFILE)移动控制文件)

(1)查看控制文件路径

SQL>SELECT  *  FROM  v$controlfile;

(2)关闭数据库

SQL>shutdown  immediate;

(3)复制控制文件到新路径

SQL>host  copy  D:\ORACLE\ORADATA\MOON\CONTROL01.CTL  D:\DISK1\ CONTROL01.CTL

SQL>host  copy  D:\ORACLE\ORADATA\MOON\CONTROL02.CTL  D:\DISK1\ CONTROL02.CTL

(4)打开数据库

SQL>startup

(1) 确认是否移动文件,查看控制文件路径

SQL> SELECT  *  FROM  v$controlfile;

20、移动控制文件(二进制的初始化参数文件(SPFILE)移动控制文件)

(1)查看控制文件路径

SQL>SELECT  *  FROM  v$controlfile;

(2)用alter system set control_files命令移动控制文件到新的文件夹中

SQL>ALTER  SYSTEM  SET  CONTROL_FILES=

‘D:\DISK1\ CONTROL01.CTL’,

‘D:\DISK1\ CONTROL02.CTL’  SCOPE=SPFILE;

(3)关闭数据库

SQL>shutdown  immediate;

(4)复制控制文件到新路径

SQL>host  copy  D:\ORACLE\ORADATA\MOON\CONTROL01.CTL  D:\DISK1\ CONTROL01.CTL

SQL>host  copy  D:\ORACLE\ORADATA\MOON\CONTROL02.CTL  D:\DISK1\ CONTROL02.CTL

(5)打开数据库

SQL>startup

(6)确认是否移动文件,查看控制文件路径(查看文件中是否有文件移动过去),并删除老的数据文件

SQL> SELECT  *  FROM  v$controlfile;

21、强制性产生重做日志切换命令

SQL>ALTER  SYSTEM  SWITCH  LOGFILE;

22、强制性产生检查点命令

SQL>ALTER  SYSTEM  CHECKPOINT;

23、查看重做日志组状态及其他信息

SQL>SELECT  *  FROM  V$LOG;//status解释如下:

(1) inactive:实例已恢复,不再需要这组联机重做日志了

(2) active:这组日志是活动的,但不是当前组,在实例恢复时需要用到,例如:这组重做日志正在归档。

(3) current:这组重做日志组是当前组,隐含是当前活动的

(4) unused:Oracle服务器从来没写过该组联机重做日志组,是重做日志刚被添加到数据库中的状态。

24、查看重做日志路径及其他信息

SQL>SELECT  *  FROM  V$LOGFILE;//status解释如下:

(1) 空白:该文件正在使用

(2) Stale:该文件中的内容是不完全的

(3) Invalid:该文件不可以被访问

(4) Deleted:该文件已不再有用了

25、配置重做日志

(1)分别用v$log和v$logfile查看重做日志信息,主要看是否同在一个组和所有重做日志文件是否都在同一个硬盘上(最好不要在同一个组和同一个硬盘上)

(2)添加两个重做日志组

SQL>ALTER  DATABASE  ADD  LOGFILE

(‘D:\DISK1\MOON\ONLINGLOG\REDO01A.LOG’,

‘D:\DISK2\MOON\ONLINGLOG\REDO01B.LOG’)

SIZE  15M;

SQL>ALTER  DATABASE  ADD  LOGFILE

(‘D:\DISK1\MOON\ONLINGLOG\REDO02A.LOG’,

‘D:\DISK2\MOON\ONLINGLOG\REDO02B.LOG’)

SIZE  15M;

(3)确认是否成功,用v$log和v$logfile查看确认

(4)删除第2和3组重做日志

SQL>ALTER  DATABASE  DROP  LOGFILE  GROUP  2,3;

(5)重新在数据库中加入所需要的第3组重做日志

SQL>ALTER  DATABASE  ADD  LOGFILE  GROUP  3

(‘D:\DISK1\MOON\ONLINGLOG\REDO03A.LOG’,

‘D:\DISK2\MOON\ONLINGLOG\REDO03B.LOG’)

SIZE  15M;

(6)活动的日志是不能被删除的,要想删除必须切换成不是当前重做日志文件后删除

SQL>ALTER  SYSTEM  SWITCH  LOGFILE;

为日志组2添加成员

SQL>ALTER DATABASE ADD LOGFILE MEMBER ‘D:\DISK1\MOON\ONLINGLOG\REDO03A.LOG’ TO GROUP 2

26、创建表空间

SQL>CREATE  TABLESPACE  jinlian

DATAFILE  ‘D:\DISK1\MOON\JINLIAN01.DBF’  SIZE  50M,

DATAFILE  ‘D:\DISK2\MOON\JINLIAN02.DBF’  SIZE  50M

MININUM  EXTENT  50K  EXTENT  MANAGEMENT  DICTIONARY

DEFAULT  STORAGE  (INITIAL  50K  NEXT 50K MAXEXTENTS 100 PCTINCREASE  0);

27、创建还原表空间

SQL>CREATE  UNDO  TABLESPACE  jinlian_undo

DATAFILE  ‘D:\DISK1\MOON\jinlian_undo.DBF’  SIZE  50M;

28、得到临时表空间和对应的数据文件,可以用数据字典v$tablespace和v$tempfile

29、创建临时表空间

SQL>CREATE  TEMPORARY  TABLESPACE  jinlian_temp

TEMPFILE  ‘D:\DISK1\MOON\jinlian_temp.dbf’  SIZE  10M

EXTENT  MANAGEMENT  LOCAL  UNIFORM  SIZE  2M;

30、设置默认临时表空间

SQL>ALTER  DATABASE  DEFAULT  TEMPORARY  TABLESPACE  jinlian_temp;

31、设置表空间为脱机状态

SQL>ALTER  TABLESPACE  jinlian  OFFLINE;

32、设置表空间为只读状态和读写状态

SQL>ALTER  TABLESPACE  jinlian  READ  ONLY;

SQL>ALTER  TABLESPACE  jinlian  READ  WRITE;

33、移动数据文件(脱机状态下)

(1)用dba_data_files查看数据文件路径

(2)设置表空脱机状态

SQL>ALTER  TABLESPACE  USERS  OFFLINE;

(3)根据查询数据文件的路径拷贝到新的文件目录下

SQL>HOST  COPY  D:\ORACLE\ORADATA\ORACLE9I\USERS01.DBF  D:\DISK1\ORADATA

(4)重命名表空间users对应的数据文件名(在控制文件中修改了指向这些文件的地址或指针)

SQL>ALTER  TABLESPACE  users  RENAME  DATAFILE  ‘D:\ORACLE\ORADATA\ORACLE9I\USERS01.DBF’  TO  ‘D:\DISK1\ORADATA\USERS01.DBF’

(5)设置表空间为联机状态

SQL>ALTER  TABLESPACE  users  ONLINE;

最终利用dba_data_files查看一下是否移动成功,并删除不用的物理数据文件

34、移动数据表空间(联机状态下)

(1)关闭数据库

SQL>SHUTDOWN  IMMEDIATE

(2)启动例程

SQL>STARTUP  MOUNT

(3)找到表空间数据文件目录,复制到新的文件目录下

SQL>HOST  COPY  D:\ORACLE\ORADATA\ORACALE9I\SYSTEM01.DBF  D:\DISK1\ORADATA

(4)重命名表空间system对应的数据文件名(在控制文件中修改了指向这些文件的地址或指针)

SQL>ALTER  DATABASE  RENAME  FILE  ‘D:\ORACLE\ORADATA\ORACALE9I\SYSTEM01.DBF’  TO  ‘D:\DISK1\ORADATA’;

(5)打开数据库

SQL>ALTER  DATABASE  OPEN

最终利用dba_data_files查看一下是否移动成功,并删除不用的物理数据文件

35、删除表空间

SQL>DROP  TABLESPACE  jinlian  INCLUDING  CONTENTS  AND  DATAFILES;

36、SQL语句建表

SQL>CREATE  TABLE  user  AS  SELECT  *  FROM  SALES;

37、为还原表空间增添一个25M的数据文件

SQL>ALTER  TABLESPACE  jinlian_undo ADD DATAFILE  ‘d:\zhen\jinlian_undo2.dbf’ SIZE 50M;

38、将数据文件设置为自动扩展

SQL>ALTER  DATABASE  DATAFILE  ‘d:\zhen\jinlian_undo.dbf’  AUTOEXTEND  ON;

39、动态切换当前表空间jinlian_undo

SQL>ALTER  SYSTEM  SET  UNDO_TABLESPACE=jinlian_undo;

40、v$undostat显示系统还原数据的统计信息,它既可以在自动还原数据管理模式中使用,也可以在手动还原数据管理模式中使用;还原信息也可以通过以下字典查询v$rollname、v$rollstat、v$vsession、v$transaction

41、创建普通表

SQL>CREATE  TABLE  scott.person

(personid  varchar2(8),

Name  varchar2(15),

Birthday  varchar2(8)

Passaway  date)  TABLESPACE  pioneer_data;

42、创建临时表

SQL>CREATE  GLOBAL  TEMPORARY  TABLE  scott.emp_temp

ON  COMMIT  PRESERVE  ROWS

AS

SELECT  *  FROM  scott.emp  WHERE  job  NOT  LIKE  ‘%sal%’;

(1) ON  COMMIT  DELETE  ROWS:说明数据行只有在事务(transaction)中可见,也是默认值。

(2) ON  COMMIT  PRESERVE  ROWS:说明数据行在整个会话中可见。

43、动态修改PCTFREE和PCTUSED这两个参数

SQL>ALTER  TABLE  scott.product  PCTFREE  20  PCTUSED  50;

43、利用dba_segments和dba_tables可以查看用户所建表的信息

44、dba_constraints获取int_zzrk2010用户所有的约束信息,

SQL>SELECT  *  FROM  DBA_CONSTRAINTS  WHERE  OWNER  =’ INT_ZZRK2010’;

45、将表scott.product移到表空间users中

SQL>ALTER  TABLE  scott.product  MOVE  TABLESPACE  users;

SQL>SELECT  object_id,object_name,object_type,status,created  FROM  dba_objects  WHERE  owner=’SCOTT’;

注:查询表dba_objects的目的就是查看所含的索引status状态是否正常,当表移到新的表空间中要查看表中所含有的索引是否正常。

46、修改列名格式如下:

SQL>ALTER  TABLE  用户名.表名  RENAME  COLUMN  旧列名  TO  新列名;

注:尽量不要修改列名,会影响数据或者索引失效

47、删除列的命令格式如下:

SQL>ALTER  TABLE  用户名.表名  DROP  COLUMN  列名  CASCADE  CONSTRAINTS  CHECKPOINT  行数;

注:可以通过使用“CHECKPOINT 行数”选项来减少还原磁盘空间的使用量。例如在删除命令中说明了CHECKPOINT  500时,Oracle每做了500行的操作就会产生一个检查点。如果在执行该命令期间系统崩溃,当重新启动系统后该命令可以从检查点开始继续它的工作,而不必重新开始。其命令格式如下:

SQL>ALTER  TABLE  用户名.表名  DROP  COLUMNS  CONTINUE;

48、如数据库特别繁忙时,删除列处理如下:

SQL>ALTER  TABLE  用户名.表名  SET  UNUSED  列名  CASCADE  CONSTRAINTS;//先把要删除的列设置为无用。

SQL>ALTER  TABLE  用户名.表名  DROP  UNUSED  COLUMNS  CHECKPOINT  行数;//当数据库空闲时再执行删除命令。

49、表的截断(删除表内容,不可以恢复)

SQL>TRUNCATE  TABLE  用户名.表名;

50、创建新的用户dog

SQL>CREATE  USER  dog

IDENTIFIED  BY  wangwang

DEFAULT  TABLESPACE  pioneer_data //该用户的默认空间是pioneer_data

TEMPORARY  TABLESPACE  pioneer_temp //若该用户在外存排序,则是用pioneer_temp表空间。这样可以有效地控制排序

QUOTA  68M  ON  pioneer_data //该用户使用pioneer_data表空间最多使用68M

QUOTA  28M  on  users //该用户使用users表空间最多使用28M

PASSWORD  EXPIRE; //该用户在第一次登录数据库时,口令作废,系统会提示用户输入新的口令。这样做的目的是可以让用户在一开始就使用他所选定的比较安全的口令。

51、改变用户pioneer_data表空间上的磁盘空间配额从68M改为38M

SQL>ALTER  USER  dog  QUOTA  38M  ON  pioneer_data;

52、删除用户

DROP  USER  用户名  [CASCADE]

注:使用CASCADE子句来删除模式中的所有对象。删除用户的操作时一个很危险的操作。因此在这一操作之前最好做备份。

53、概要文件的好处:可以将用户按它们的安全控制和资源使用要求分成若干个组,然后为每一组按用户的需求创建一个概要文件,最后再将这些概要文件分别赋予相关的用户。这样可以大大地减轻数据库管理员的工作负担,也提高了工作效率,同事也减少了出错的机会。

概要文件的特性如下

(1) 赋予用户的概要文件并不影响当前的会话。

(2) 只能将概要文件赋予用户而不能将概要文件赋予角色或其他的概要文件。

(3) 如果在创建用户时没有赋予一个概要文件,默认的概要文件将赋予这个用户。

概要文件使用步骤如下:

(1) 利用CREATE  PROFILE命令创建一个概要文件,在这个概要文件中定义资源和口令的限制。

(2) 使用CREATE  USER或ALTER  USER命令将概要文件赋予用户。

(3) 用以下方法之一来开启资源限制。

【1】 在初始化参数文件中将RESOURCE_LIMIT设为TRUE。

【2】 使用ALTER  SYSTEM命令将RESOURCE_LIMIT设为TRUE。

要想利用概要文件来控制资源的使用必须开启资源限制,否则即使在概要文件中已经定义了资源限制也没有用。但是口令限制只要定义了就起作用。这可能是Oracle认为安全比较率更重要吧!

以下是开启资源限制的方法:

(1) 利用操作系统编辑器,在初始化参数文件中做这样的设置:RESOURCE_LIMIT=TRUE,之后存盘退出。

(2) 在系统正在运行时,利用ALTER  SYSTEM命令来设置初始化参数从而开启资源限制。其命令如下:ALTER  SYSTEM  SET  RESOURCE_LIMIT=TRUE;.

54、查看概要文件设置情况

SQL>SELECT  *  FROM  dba_profiles;

55、授予用户cat连接数据库、查询所有表、建表、建视图的权限

SQL>GRANT  CREATE  SESSION , SELECT  ANY  TABLE , CREATE  TABLE , CREATE  VIEW  TO  cat ;

56、回收用户cat所有的权限

SQL>REVOKE  CREATE  SESSION , SELECT  ANY  TABLE , CREATE  TABLE , CREATE  VIEW  FROM  cat ;

如果在GRANT命令中使用了WITH  ADMIN  OPTION子句,被授予权限的用户可以进一步将这些系统权限授予其他用户(任命权)。

SQL>REVOKE  CREATE  SESSION , SELECT  ANY  TABLE , CREATE  TABLE , CREATE  VIEW  FROM  cat  WITH  ADMIN  OPTION ;

SQL>SELECT  *  FROM  dba_sys_privs  WHERE  grantee=’CAT’ ; //查看cat授权情况。

57、收回4个用户的select any table系统权限

SQL>REVOKE  select  any  table  FROM  cat,dog,fox,pig ;

a) GRANT用法

1、 把查询IT_EMPLOYEES表的权限授给用户USER1。

GRANT  SELECT  ON  TABLE  IT_EMPLOYEES  TO  USER1

2、 把对IT_EMPLOYEES表和JOBS表的全部操作权限授予用户USER2和USER3。

GRANT  ALL  PRIVILEGES  ON  TABLE  IT_EMPLOYEES,JOBS  TO  USER2,USER3

3、 把对表DEPARTMENT的查询权限授予所有用户。

GRANT  SELECT  ON  TABLE  DEPARTMENT  TO  PUBLIC

4、 把查询IT_EMPLOYEES表和修改雇员编号的权限授给用户USER4。

GRANT  UPDATE(EMPLOYEE_ID),SELECT  ON  TABLE  IT_EMPLOYEES  TO  USER4

5、 把对表DEPARTMENT的INSERT权限授予USER5用户,并允许将此权限再授予其他用户。

GRANT  INSERT  ON  TABLE  DEPARTMENT  TO  USER5  WITH  ADMIN  OPTION

6、 USER5将此权限授予USER6

GRANT  INSERT  ON  TABLE  DEPARTMENT  TO  USER6

7、 DBA把在数据库DB_EMPLOYEES中建立表的权限授予用户USER7

GRANT  CREATEAB  TO  DATABASE  DB_EMPLOYEES  TO  USER7

b) REVOKE用法

1、 把用户USER4修改雇员编号的权限收回

REVOKE  UPDATE(EMPLOYEE_ID)  ON  TABLE  IT_EMPLOYEES  FROM  USER4

2、 收回所有用户对表DEPARTMENT的查询权限

REVOKE  SELECT  ON  TABLE  DEPARTMENT  FROM  PUBLIC

3、 把用户USER5对DEPARTMENT表的INSERT权限收回

REVOKE  INSERT  ON  TABLE  DEPARTMNET  FROM  USER5

58、创建一个不需要口令标识的角色clerk

SQL>CREATE  ROLE  clerk;

59、创建一个需要口令money标识的角色sales

SQL>CREATE  ROLE  sales  IDENTIFIED  BY  money;

60、创建一个需要使用外部标识(如操作系统)的角色manager

SQL>CREATE  ROLE  manager  IDENTIFIED  EXTERNALLY;

61、将角色clerk更改为外部标识(如操作系统)

SQL>ALTER  ROLE  clerk  IDENTIFIED  EXTERNALLY;

62、将角色sales更改为不需要任何标识的方法

SQL>ALTER  ROLE  sales  NOT  IDENTIFIED;

63、将角色manager更改为口令为vampire

SQL>ALTER  ROLE  manager  IDENTIFIED  BY  vampire;

64、角色授权

SQL>GRANT  CREATE  SESSION,CREATE  TABLE,CREATE  VIEW  TO  clerk;

65、将角色clerk授权给manager

SQL>GRANT  SELECT  ANY  TABLE,clerk  TO  manager;

66、将角色manager授予用户cat,并带有WITH  ADMIN  OPTION的权限

SQL>GRANT  manager  TO  cat  WITH  ADMIN  OPTION;

在ALTER  USER语句中的DEFAULT  ROLE子句只适用于那些使用GRANT语句直接授予用户的角色。DEFAULT  ROLE子句在下列情形之下是不能使用的:

(1) 通过其他角色授予的角色。

(2) 没有直接授予该用户的角色。

(3) 通过外部服务(如操作系统)管理的角色。

67、将用户cat的所有角色都设置为非默认角色

SQL>ALTER  USER  cat  DEFAULT  ROLE  NONE;

68、将用户cat的所有的角色重新设置为默认角色。

SQL>ALTER  USER  cat  DEFAULT  ROLE  ALL;

69、将用户cat设置除sales角色之外的所有角色赋予的系统权限都有效。

SQL>ALTER  USER  cat  DEFAULT  ROLE  ALL  EXCEPT  sales;

70、禁止cat用户所拥有的全部由角色赋予的系统权限

SQL>SET  ROLE  NONE;

71、查看用户所拥有的所有系统权限(SELECT  *  FROM  SESSION_PRIVS;)

72、激活带有口令标识的manger角色

SQL>SET  ROLE  manager  IDENTIFIED  BY  vampire;

73、激活除了manager角色外的所有角色

SQL>SET  ROLE  ALL  EXCEPT  manager;

74、从用户pig和fox用户收回sales和manager这两个角色

SQL>REVOKE  manager,sales  FROM  pig,fox;

75、将sales和manager这两个角色赋予所有的用户

SQL>GRANT  manager,sales  TO  PUBLIC;

76、收回所有用户所拥有的sales和manager这两个角色

SQL>REVOKE  manager,sales  FROM  PUBLIC;

77、删除sales角色

SQL>DROP  ROLE  sales;

78、脱机备份应用实例

(1)利用v$controlfile、v$logfile、dba_data_files分别查看控制文件、日志文件和数据文件的路径等信息。

(2)用户登录连接数据库

SQL>CONN  system/manager  as  sysdba;

SQL>SHUTDOWN  IMMEDIATE;

SQL>HOST  COPY  F:\oracle\pruduct\10.2.0\oradata\moon\*.*  F:\backup\     (将文件拷到指定文件夹内)

SQL>HOST  COPY  F:\oracle\pruduct\10.2.0\db_1\dbs\SPFILEMOON.ORA  F:\backup\dbs

SQL>HOST  COPY  F:\oracle\pruduct\10.2.0\db_1\database\PWDMOON.ORA   F:\backup\database

SQL>HOST  COPY  F:\DISK2\MOON\PIONEER_DATA.DBF  F:\backup\disk2

SQL>HOST  COPY  F:\DISK4\MOON\PIONEER_INDEX.DBF  F:\backup\disk4

SQL>STARTUP

注:以上所有语句可以写入到一个文本中,例如全部写入到coolbak.sql中然后在SQL下执行以下就可以了(SQL>@F:\oracle\mgt\coolbak)

79、脱机恢复到原来位置的应用实例

SQL>CONN  system/manager  as  sysdba;

SQL>SHUTDOWN  IMMEDIATE;

SQL>HOST  COPY  F:\backup\*.*  F:\oracle\pruduct\10.2.0\oradata\moon\

SQL>HOST  COPY  F:\backup\dbs\SPFILEMOON.ORA  F:\oracle\pruduct\10.2.0\db_1\dbs\

SQL>HOST  COPY  F:\backup\database\ PWDMOON.ORA  F:\oracle\pruduct\10.2.0\db_1\database\

SQL>HOST  COPY  F:\backup\disk2\PIONEER_DATA.DBF  F:\DISK2\MOON\

SQL>HOST  COPY  F:\backup\disk4\PIONEER_INDEX.DBF  F:\DISK4\MOON\

SQL>STARTUP

80、脱机恢复到非原来位置的应用实例

SQL>CONN  system/manager  as  sysdba;

SQL>SHUTDOWN  IMMEDIATE;

SQL>HOST  COPY  F:\backup\*.*  F:\oracle\pruduct\10.2.0\oradata\moon\

SQL>HOST  COPY  F:\backup\dbs\SPFILEMOON.ORA  F:\oracle\pruduct\10.2.0\db_1\dbs\

SQL>HOST  COPY  F:\backup\database\ PWDMOON.ORA  F:\oracle\pruduct\10.2.0\db_1\database\

SQL>HOST  COPY  F:\backup\disk2\PIONEER_DATA.DBF  F:\DISK3\MOON\

SQL>HOST  COPY  F:\backup\disk4\PIONEER_INDEX.DBF  F:\DISK4\MOON\

SQL>STARTUP  MOUNT;

SQL>ALTER  DATABASE  RENAME  FILE  ‘F:\DISK2\MOON\PIONEER_DATA.DBF’  TO  ‘F:\DISK3\MOON\PIONEER_DATA.DBF’;

SQL>ALTER  DATABASE  OPEN;

81、将数据库设置为归档模式步骤

SQL>CONN  system/manager  as  sysdba;

SQL>ARCHIVE  LOG  LIST;

SQL>SHUTDOWN  IMMEDIATE;

SQL>STARTUP  MOUNT;

SQL>ALTER  DATABASE  ARCHIVELOG

SQL>ALTER  DATABASE  OPEN;

82、由用户的服务器进程来完成重做日志文件的归档

SQL>ALTER  SYSTEM  ARCHIVE  LOG  CURRENT;

83、使用Oracle命令启动归档后台进程

SQL>ALTER  SYSTEM  ARCHIVE  LOG  START;

SQL>ARCHIVE  LOG  LIST;//确保操作准确无误

84、改变归档模式

SQL>CONN  system/manager  AS  SYSDBA;

SQL>ARCHIVE  LOG  LIST  //查看归档模式

SQL>SHUTDOWN  IMMEDIATE;

SQL>STARTUP  MOUNT;

SQL>ALTER  DATABASE  ARCHIVELOG;//修改数据库为归档模式

SQL>ALTER  DATABASE  OPEN;

SQL>ARCHIVE  LOG  LIST;//查看数据库的归档模式

85、数据库联机(热)备份 hotbak.sql

conn  system/manager  as  sysdba

alter  system  archive  log  start;

alter  tablespace  zzrk_tablespace  begin  backup;

host  copy  F:\ORACLE\TABLESPACE\INT_ZZRK2010.DBF  E:\zhen\tablespace  (这步要通过dba_data_files得到数据文件的路径)

alter  tablespace  zzrk_tablespace  end  backup;

alter  system  archive  log  current;

alter  tablespace  user  begin  backup;

host  copy  F:\ORACLE\TABLESPACE\USER.DBF  E:\zhen\tablespace

alter  tablespace  user  end  backup;

alter  system  archive  log  current;

SQL>@F:\oracle\mgt\hotbak.sql //执行hotbak.sql中的语句

86、直接启动sqlplus文件

新建记事本,然后输入如下内容,之后将它们存入f:\oracle\mgt\Cool.bat中

F:\oracle\product\10.2.0\db_1\BIN\sqlplus  /nolog  @basedbak.sql

说明:直接创建快捷方式执行basedbak.sql中的SQLPLUS语句

87、最初关闭状态下进行开启数据库恢复的实例

SQL>conn  system/manager  as  sysdba

SQL>shutdown  immediate;

SQL>startup  mount;(有时使用startup,根据出现的错误判断问题)

SQL>alter  database  datafile  6  offline;

SQL>alter  database  open;

SQL>select  *  from  v$datafile;//查看数据文件的当前状态

SQL>select  *  from  v$recover_file;//查看文件是否存在,根据情况判断恢复

SQL>host  copy  f:\tbbackup\disk2\pioneer_data.dbf  f:\disk2\monn\

SQL>recover  datafile  6

SQL>alter  tablespace  pioneer_data  online;

SQL>select  *  from  v$datafile;//查看数据文件的当前状态

88、在关闭状态下进行数据库恢复的实例

SQL>conn  system/manager  as  sysdba

SQL> select  *  from  dba_data_files;//查看数据文件的目录路径

SQL>shutdown  immediate

SQL>startup  mount

SQL>host  copy  f:\tbbackup\disk2\pioneer_data.dbf  f:\disk2\monn\

SQL>alter  database  rename  file  ‘F:\oracle\product\oradata\SYSTEM01.DBF’  to  ‘F:\disk2\moon\system01.dbf’;

SQL>recover  database;

SQL>alter  database  open;

89、Exp 数据导出到F盘,导出数据的条件是登记日期=’20120909’

C:\>exp  int_zzrk2010/int_zzrk2010@114  file=f:\export\zzrk_xxb.dmp  tables=(zzrk_xxb)  query=\” where 登记日期=’20120909’ \”

导出zzrk_xxb和zzrk_dw两个表中所有的数据

C:\>exp  int_zzrk2010/int_zzrk2010@114  file=f:\export\zzrk.dmp  tables=(zzrk_xxb,zzrk_dw)

导入数据

C:\>imp  int_zzrk2010/int_zzrk2010@114  file=f:\zzrk_xxb.dmp  tables=(zzrk_xxb)  full=y  ignore=y

90、使用数据泵导出数据

SQL>select  *  from  dba_directories ;//查看有关目录获取对象全部信息 SQL>GRANT  WRITE,READ  ON  DIRECTORY  DATA_DUMP_DIR  to  int_zzrk2010;//授予目录的读写权限,当然也可以重新建立自己的目录,不过不易删除,因为涉及到dba_directories字典

SQL> CREATE DIRECTORY MY_DIR AS 'f:\zhen\bak';//建立自己的目录,首先要在f盘建立f:\zhen\bak'这个目录,这句SQL语句是将目录写入到dba_directories字典中。

新建文本文档zzrk_par.txt,其内容如下

DIRECTORY= DATA_DUMP_DIR //存放文件的路径是DATA_DUMP_DIR所指的操作系统目录

Tables=(zzrk_xxb,zzrk_dw) //导出数据表的名称

DUMPFILE=zzrk.dmp //导出的数据文件名为zzrk.dmp

QUERY=int_zzrk2010.zzrk_xxb:” where 出生日期>’19800101’ and 登记日期=’20110101’”,int_zzrk2010.zzrk_dw:”where 登记日期>=’20010101’”

F:\>expdp  int_zzrk2010/int_zzrk2010@114  parfile=f:\zhen\zzrk_par.txt

使用数据泵导入数据

F:\>impdp  int_zzrk2010/int_zzrk2010@114  parfile=f:\zhen\zzrk_par.txt

不同用户及不同表空间之间的数据的移动

1、数据泵导出数据

新建文本文档exp_par.txt,其内容如下

DIRECTORY= DATA_DUMP_DIR //存放文件的路径是DATA_DUMP_DIR所指的操作系统目录

SCHEMAS=scott //导出SCOTT用户(模式)下的对象

DUMPFILE=schema_scott.dat //导出的二进制物理文件名为schema_scott.dat

EXCLUDE=PACKAGE //不(包括)导出PACKAGE(软件包)

EXCLUDE=VIEW //不(包括)导出VIEW(视图)

EXCLUDE=TABLE:”LIKE  ‘%DUMP’” //不(包括)导出以DUMP结尾的表。

除了EXCLUDE,数据泵还包括INCLUDE参数。INCLUDE的含义是包含,与EXCLUDE的含义相反。

F:\>expdp int_zzrk2010/int_zzrk2010@114  parfile=exp_par.txt

2、数据泵导入数据

新建文本文档imp_par.txt,其内容如下

DIRECTORY= DATA_DUMP_DIR //导入文件所存放的路径是DATA_DUMP_DIR所指的操作系统目录

DUMPFILE=schema_scott.dat //导入的二进制物理文件名为schema_scott.dat

REMAP_SCHEMA=SCOTT:PJINLIAN //将文件中原来SCOTT用户(模式)下的所有对象导入到PJINLIAN用户中。

REMAP_TABLESPACE=USERS:PIONEER_DATA //将文件中原来存在于USERS表空间的所有对象导入到PIONEER_DATA表空间中。

其中,REMAP_SCHEMA参数用来完成不同用户之间的数据移动,而REMAP_TABLESPACE参数用来完成不同的表空间之间的数据移动。

F:\impdp  int_zzrk2010/int_zzrk2010@114  parfile=imp_par.txt

91、数据泵导出导入与传统导出导入的区别

(1)EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。

(2)EXPDP和IMPDP是服务端的工具程序,它们只能在Oracle服务端使用,不能在客户端使用。

(3)IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP值适用于EXPDP导出的文件,而不适用于EXP导出文件。

数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式。

92、数据泵的各种类型的用法

EXPDP用法

使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录.因此,使用EXPDP工具时,必须首先建立DIRECTORY对象.并且需要为数据库用户授予使用DIRECTORY对象权限.

CREATE DIRECTORY dump_dir AS ‘c:\emp’;

GRANT READ, WRITE ON DIRECTORY dump_dir TO scott;

杂乱无章之Oracle(一)

1、导出表

Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=dept.dmp TABLES=dept

杂乱无章之Oracle(一)

注:在unix下要注意directory目录的读写权限问题,如:

杂乱无章之Oracle(一)

查看dump_dir所在的目录:用sys用户查看数据字典dba_directories

杂乱无章之Oracle(一)

杂乱无章之Oracle(一)

更该该文件夹的权限:chown–R oracle:dba /exp,问题解决

2、导出方案

expdp scott/tiger directory=dump_dir dumpfile=schema.dmp logfile=schema.log schemas=system

杂乱无章之Oracle(一)

3、导出表空间

expdp scott/tiger directory=dump_dir dumpfile=tb.dmp logfile=tb.log tablespaces=users

杂乱无章之Oracle(一)

4、导出数据库

Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y

Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y

杂乱无章之Oracle(一)

注:提示scott用户没有相应的权限,给scott相应的权限或使用system来做全库导出 。

SQL> grant exp_full_database to scott;

Grant succeeded.

然后在做全库的导出:

杂乱无章之Oracle(一)

五、IMPDP参数

IMPDP与EXPDP的不同参数:

1、REMAP_DATAFILE

该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项.

REMAP_DATAFIEL=source_datafie:target_datafile

2、REMAP_SCHEMA

该选项用于将源方案的所有对象装载到目标方案中.

REMAP_SCHEMA=source_schema:target_schema

3、REMAP_TABLESPACE

将源表空间的所有对象导入到目标表空间中

REMAP_TABLESPACE=source_tablespace:target:tablespace

4、REUSE_DATAFILES

该选项指定建立表空间时是否覆盖已存在的数据文件.默认为N

REUSE_DATAFIELS={Y | N}

5、SKIP_UNUSABLE_INDEXES

指定导入是是否跳过不可使用的索引,默认为N

6、SQLFILE

指定将导入要指定的索引DDL操作写入到SQL脚本中

SQLFILE=[directory_object:]file_name

Impdp scott/tiger DIRECTORY=dumpDUMPFILE=tab.dmp SQLFILE=a.sql

7、STREAMS_CONFIGURATION

指定是否导入流元数据(StreamMatadata),默认值为Y.

8、TABLE_EXISTS_ACTION

该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP

TABBLE_EXISTS_ACTION={SKIP | APPEND |TRUNCATE | FRPLACE }

当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表并追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项

9、TRANSFORM

该选项用于指定是否修改建立对象的DDL语句

TRANSFORM=transform_name:value[:object_type]

Transform_name用于指定转换名,其中SEGMENT_ATTRIBUTES用于标识段属性(物理属性,存储属性,表空间,日志等信息),STORAGE用于标识段存储性,VALUE用于指定是否包含段属性或段存储属性,object_type用于指定对象类型.

Impdp scott/tiger directory=dumpdumpfile=tab.dmp

Transform=segment_attributes:n:table

10、TRANSPORT_DATAFILES

该选项用于指定搬移空间时要被导入到目标数据库的数据文件

TRANSPORT_DATAFILE=datafile_name

Datafile_name用于指定被复制到目标数据库的数据文件

Impdp system/manager DIRECTORY=dumpDUMPFILE=tts.dmp

TRANSPORT_DATAFILES=’/user01/data/tbs1.f’