杂乱无章之Oracle(一)
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;
1、导出表
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=dept.dmp TABLES=dept
注:在unix下要注意directory目录的读写权限问题,如:
查看dump_dir所在的目录:用sys用户查看数据字典dba_directories
更该该文件夹的权限:chown–R oracle:dba /exp,问题解决
2、导出方案
expdp scott/tiger directory=dump_dir dumpfile=schema.dmp logfile=schema.log schemas=system
3、导出表空间
expdp scott/tiger directory=dump_dir dumpfile=tb.dmp logfile=tb.log tablespaces=users
4、导出数据库
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y
Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y
注:提示scott用户没有相应的权限,给scott相应的权限或使用system来做全库导出 。
SQL> grant exp_full_database to scott;
Grant succeeded.
然后在做全库的导出:
五、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’