Oracle数据库实验笔记

更新时间:2024-05-29 13:14:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Oracle数据库实验

数据库移动数据文件 1建立数据库的文本参数文件 一致性停库 2 将所有的文件复制到目标位置

3 在文本参数文件中,修改新的控制文件的的位置 4 将二进制文件删除,留下文本文件 5 将数据库启动mount状态 6 将库中文件名重命名到目标位置

alter database rename file ' 旧文件' to ‘新文件’ 7 启动数据库库到OPen 状态;

移库

SQL> create pfile from spfile;

文件已创建。

SQL> shut immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。

Total System Global Area 104857600 bytes Fixed Size 1247516 bytes Variable Size 62916324 bytes Database Buffers 33554432 bytes Redo Buffers 7139328 bytes 数据库装载完毕。

SQL> select 'alter database rename file'||''''||name||''''||'to'||''''||replace(

name,'D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\','E:\\TEST\\')||''''||';' FROM (SELEC T NAME FROM V$DATAFILE);

'ALTERDATABASERENAMEFILE'||''''||NAME||''''||'TO'||''''||REPLACE(NAME,'D:\\ORACLE

--------------------------------------------------------------------------------

alter database rename file'D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSTEM01.DBF'to

'E:\\TEST\\SYSTEM01.DBF';

alter database rename file'D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\UNDOTBS01.DBF't

o'E:\\TEST\\UNDOTBS01.DBF';

alter database rename file'D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSAUX01.DBF'to

'E:\\TEST\\SYSAUX01.DBF';

alter database rename file'D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\USERS01.DBF'to'

E:\\TEST\\USERS01.DBF';

'ALTERDATABASERENAMEFILE'||''''||NAME||''''||'TO'||''''||REPLACE(NAME,'D:\\ORACLE

--------------------------------------------------------------------------------

alter database rename file'D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\EXAMPLE01.DBF't

o'E:\\TEST\\EXAMPLE01.DBF';

SQL> alter database open;

数据库已更改。

SQL> select name from v$controlfile union select name from v$datafile union select member from v$logfile; NAME

-------------------------------------------------------------------------------- D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\EXAMPLE01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO01.LOG D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO02.LOG D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO03.LOG D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSAUX01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSTEM01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\UNDOTBS01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\USERS01.DBF E:\\TEST\\CONTROL01.CTL E:\\TEST\\CONTROL02.CTL E:\\TEST\\CONTROL03.CTL

已选择11行。

SQL>

位图实验步骤 一.autoallocate 是自动分配的实验 1.create tablespace mytest 2.datafile 'E:\\test01.dbf' size 100M;

3.create table abc tablespace mytest as select * from scott.emp; 4.desc dba_extents

5.select file_id,extent_id,block_id,blocks from dba_extents where segment_name='ABC'; 6.alter system dump datafile 6 block 3

7.select c.value || '/' || d.instance_name || '_ora_' || a.spid || '.trc' trace from v$process a,v$session b,v$parameter c,v$instance d

where a.addr=b.paddr and b.audsid=userenv('sessionid') and c.name= 'user_dump_dest'; 8.打开D:\\ORACLE\\PRODUCT\\10.2.0\\ADMIN\\ORCL\\UDUMP/orcl_ora_2516.trc文件 9. insert into abc select * from abc; 10.alter system dump datafile 6 block 3;

11.select file_id,extent_id,block_id,blocks from dba_extents where segment_name='ABC'; 12.再次打开D:\\ORACLE\\PRODUCT\\10.2.0\\ADMIN\\ORCL\\UDUMP/orcl_ora_2516.trc文件; 13.结果:End dump data blocks tsn: 7 file#: 6 minblk 3 maxblk 3 *** 2012-11-23 10:33:34.781

Start dump data blocks tsn: 7 file#: 6 minblk 3 maxblk 3。 二.uniform 就是区的大小都是一样的的实验 14.CREATE TABLESPACE \ 'E:\\mytbs01.dbf' SIZE 104857600

LOGGING ONLINE PERMANENT BLOCKSIZE 8192

EXTENT MANAGEMENT LOCAL UNIFORM SEGMENT SPACE MANAGEMENT AUTO(uniform与AUTOALLOCATE 的管理区别,实验表明uniform的块的大小是一直不变的,而autoalllocate管理方式是随着增长的)

15.create table abcd tablespace myTBS as select * from scott.emp;

16.select file_id,extent_id,block_id,blocks from dba_extents where segment_name='ABCD'; 17. insert into abcd select * from abcd; 18.alter system dump datafile 7 block 3

19.select c.value || '/' || d.instance_name || '_ora_' || a.spid || '.trc' trace from v$process a,v$session b,v$parameter c,v$instance d

where a.addr=b.paddr and b.audsid=userenv('sessionid') and c.name= 'user_dump_dest'; 20.结果RelFno: 7, BeginBlock: 9, Flag: 0, First: 43, Free: 63445

FFFFFFFFFF070000 0000000000000000 0000000000000000 0000000000000000 三:

空间回收(整理碎片):

1.delete from abcd where deptno=10;

2.alter table abcd enable ROW MOVEMENT; 3.alter table ABCD shrink space;

4.alter table abcd disable ROW MOVEMENT;

5.select file_id,extent_id,block_id,blocks from dba_extents where segment_name='ABCD';

实验结果: 已选择31行

数据库备份 热备要求数据库处于归档状态,在业务不是很繁忙时用热备

shut immediate startup mount

alter database archivelog; alter database open;启动归档模式 archive log list 热备:

alter tablespace users begin backup;

copy D:\\oracle\\product\\10.2.0\\oradata\\orcl \%users01.dbf e:\\test\%users01.dbf alter tablespace users end backup 实验

假设users表空间存在热备份 该空间有一个T2表(scott.emp) 在该表产生交易 update t2 set sal=sal+1; commit;

alter system switch logfile;

然后将USERS表空间的数据文件给它破坏掉 比如用一个txt文件覆盖掉

copy d:\\1.txt d:\%users01.bdf(用txt覆盖掉了users01.bdf) alter system checkpoint;

select file_name,online_status from dba_data_files; 产看当前数据库有哪些数据文件需要恢复 取回备份文件; recover datafile 4:

alter database datafile 4 online; 代码

Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp.

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata\\or cl e:\\test\%users01.dbf

D:\\oracle\\product\\10.2.0\\oradata\\orcl\\CONTROL01.CTL D:\\oracle\\product\\10.2.0\\oradata\\orcl\\CONTROL02.CTL

D:\\oracle\\product\\10.2.0\\oradata\\orcl\\CONTROL03.CTL D:\\oracle\\product\\10.2.0\\oradata\\orcl\\EXAMPLE01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\REDO01.LOG D:\\oracle\\product\\10.2.0\\oradata\\orcl\\REDO02.LOG D:\\oracle\\product\\10.2.0\\oradata\\orcl\\REDO03.LOG D:\\oracle\\product\\10.2.0\\oradata\\orcl\\SYSAUX01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\SYSTEM01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\TEMP01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\UNDOTBS01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\USERS01.DBF 已复制 1 个文件。

C:\\Documents e:\\test\%users01.dbf 系统找不到指定的文件。

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata\\or cl\%users01.dbf e:\\test\%users01.dbf

改写 e:\\test\%users01.dbf 吗? (Yes/No/All): y 已复制 1 个文件。

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata\\or cl\%users01.dbf e:\\test\%users01.dbf

改写 e:\\test\%users01.dbf 吗? (Yes/No/All): y 已复制 1 个文件。

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata D: \\oracle\\product\\10.2.0\\oradata\\orcl\%users01.dbf; D:\\oracle\\product\\10.2.0\\oradata\\1.txt

另一个程序正在使用此文件,进程无法访问。 已复制 0 个文件。

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata D: \\oracle\\product\\10.2.0\\oradata\\orcl\%users01.dbf; D:\\oracle\\product\\10.2.0\\oradata\\1.txt

另一个程序正在使用此文件,进程无法访问。 已复制 0 个文件。

C:\\Documents

and

Settings\\Administrator>copy

D:\\oracle\\product\\10.2.0\\oradata\\1.txt

D:\\oracle\\product\\10.2.0\\oradata\\orcl\%users01.dbf; 已复制 1 个文件。

C:\\Documents and Settings\\Administrator>

8888*************************************************************

and

Settings\\Administrator>copy

D:\\oracle\\product\\10.2.0\\oradata\\orcl\%users01.dbf

----------

7566 JONES MANAGER 7839 02-4月 -81 2976 20

7654 MARTIN SALESMAN 7698 28-9月 -81 1251 1400 30

7698 BLAKE MANAGER 7839 01-5月 -81 2851 30

EMPNO ENAME JOB MGR HIREDATE ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ----------

7782 CLARK MANAGER 7839 09-6月 -81 10

7788 SCOTT ANALYST 7566 19-4月 -87 20

7839 KING PRESIDENT 17-11月-81 10

EMPNO ENAME JOB MGR HIREDATE ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ----------

7844 TURNER SALESMAN 7698 08-9月 -81 30

7876 ADAMS CLERK 7788 23-5月 -87 20

7900 JAMES CLERK 7698 03-12月-81 30

EMPNO ENAME JOB MGR HIREDATE ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ----------

7902 FORD ANALYST 7566 03-12月-81 SAL 2451 3001 5001 SAL 1501 1101 951 SAL 3001

COMM COMM 0 COMM 20

7934 MILLER CLERK 7782 23-1月 -82 1301 10

已选择14行。 SQL>

日志文件

C:\\Documents and Settings\\Administrator>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 11月 2 10:02:17 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> starup mount

SP2-0734: 未知的命令开头 \忽略了剩余的行。 SQL> statup mount

SP2-0734: 未知的命令开头 \忽略了剩余的行。 SQL> startup mount

ORA-01031: insufficient privileges SQL> conn /as sysdba 已连接。

SQL> shut immediate ORA-01109: 数据库未打开

已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。

Total System Global Area 289406976 bytes Fixed Size 1248576 bytes Variable Size 100664000 bytes Database Buffers 180355072 bytes Redo Buffers 7139328 bytes 数据库装载完毕。

SQL> select * from v$logfile;

GROUP# STATUS TYPE

---------- ------- ------- MEMBER

-------------------------------------------------------------------------------- IS_ ---

3 ONLINE

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO03.LOG NO

2 STALE ONLINE

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO02.LOG NO

GROUP# STATUS TYPE ---------- ------- ------- MEMBER

-------------------------------------------------------------------------------- IS_ ---

1 ONLINE

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO01.LOG NO

SQL> alter system switch logfile; alter system switch logfile *

第 1 行出现错误: ORA-01109: 数据库未打开

SQL> alter database open 2 ;

数据库已更改。

SQL> alter system switch logfile;

系统已更改。

SQL> alter system switch logfile;

系统已更改。

SQL> shut immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。

Total System Global Area 289406976 bytes Fixed Size 1248576 bytes Variable Size 104858304 bytes Database Buffers 176160768 bytes Redo Buffers 7139328 bytes 数据库装载完毕。

SQL> alter system switch logfile; alter system switch logfile *

第 1 行出现错误: ORA-01109: 数据库未打开

SQL> alter database archivelog;

数据库已更改。

SQL> archive log list;

数据库日志模式 存档模式 自动存档 启用

存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 4 下一个存档日志序列 6 当前日志序列 6 SQL> alter database open;

数据库已更改。

SQL> alter system switch logfile;

系统已更改。

SQL> show parameter log_archive_dest;

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string log_archive_dest_1 string log_archive_dest_10 string log_archive_dest_2 string log_archive_dest_3 string log_archive_dest_4 string log_archive_dest_5 string log_archive_dest_6 string log_archive_dest_7 string log_archive_dest_8 string log_archive_dest_9 string

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_state_1 string enable log_archive_dest_state_10 string enable log_archive_dest_state_2 string enable log_archive_dest_state_3 string enable log_archive_dest_state_4 string enable log_archive_dest_state_5 string enable log_archive_dest_state_6 string enable log_archive_dest_state_7 string enable log_archive_dest_state_8 string enable log_archive_dest_state_9 string enable SQL> alter system set log_archive_dest_1'location=E:/oracle'; alter system set log_archive_dest_1'location=E:/oracle' * 第 1 行出现错误: ORA-00927: 缺失等号

SQL> alter system set log_archive_dest_1='location=E:/oracle';

系统已更改。

SQL> alter system switch logfile;

系统已更改。

SQL> select name from V$archive_log; select name from V$archive_log *

第 1 行出现错误:

ORA-00942: 表或视图不存在

SQL> select name from$archived_log; select name from$archived_log * 第 1 行出现错误:

ORA-00923: 未找到要求的 FROM 关键字

SQL> select name from v$archived_log; NAME

--------------------------------------------------------------------------------

D:\\ORACLE\\PRODUCT\\10.2.0\\FLASH_RECOVERY_AREA\\ORCL\\ARCHIVELOG\\2012_11_02\\O1_MF_1_ 6_896C0PD6_.ARC

E:\\ORACLE\\ARC00007_0794570482.001

SQL> select log_mode from v$database;

LOG_MODE ------------ ARCHIVELOG

SQL> archive log list;

数据库日志模式 存档模式 自动存档 启用 存档终点 E:/oracle 最早的联机日志序列 6 下一个存档日志序列 8 当前日志序列 8

SQL> alter system set log_archive_dest_1='location=E:/oracle1';

系统已更改。

SQL> alter system switch logfile;

系统已更改。

SQL> alter system set log_archive_dest_2='location=E:/oracle2'; 产生多分归档日志文档;

系统已更改。

SQL> alter system switch logfile;

系统已更改。 SQL>

日志挖掘 DDL直接挖 但挖掘dml语句需要将数据库置为 追加日志数据模式.

1.修改追加日志数据模式

SYS@beijing> select SUPPLEMENTAL_LOG_DATA_MIN from v$database;

SUPPLEME -------- NO

SYS@beijing> alter database add SUPPLEMENTAL log data;

Database altered.

SYS@beijing> select SUPPLEMENTAL_LOG_DATA_MIN from v$database;

SUPPLEME -------- YES

SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database;

SUPPLEME -------- NO

SQL> alter database add SUPPLEMENTAL log data;

数据库已更改。

SQL> select SUPPLEMENTAL_LOG_DATA_MIN from v$database;

SUPPLEME --------

YES

SQL> conn /as sysdba 已连接。

SQL> exec dbms_logmnr.add_logfile('/home/oracle/oradata/ora10g/redo01abc.log'); BEGIN dbms_logmnr.add_logfile('/home/oracle/oradata/ora10g/redo01abc.log'); END; *

第 1 行出现错误:

ORA-01284: 文件 /home/oracle/oradata/ora10g/redo01abc.log 无法打开 ORA-00308: 无法打开归档日志 '/home/oracle/oradata/ora10g/redo01abc.log' ORA-27041: 无法打开文件 OSD-04002: 无法打开文件

O/S-Error: (OS 3) 系统找不到指定的路径。 ORA-06512: 在 \ORA-06512: 在 line 1

SQL> exec dbms_logmnr.add_logfile('D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO03.LOG');

PL/SQL 过程已成功完成。

SQL> NO

SP2-0042: 未知命令 \其余行忽略。 SQL> alter database add SUPPLEMENTAL log data;

数据库已更改。

SQL> alter user scott account unlock identified by seker;

用户已更改。

SQL> update scott.emp set sal=100 ;

已更新14行。

SQL> commit;

提交完成。

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- ---------- --- ----------------

FIRST_CHANGE# FIRST_TIME ------------- --------------

1 1 11 52428800 1 NO CURRENT 606095 02-11月-12

2 1 9 52428800 1 YES INACTIVE 604778 02-11月-12

3 1 10 52428800 1 YES INACTIVE 604811 02-11月-12

SQL> select * from v$logfile;

GROUP# STATUS TYPE ---------- ------- ------- MEMBER

-------------------------------------------------------------------------------- IS_ ---

3 ONLINE

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO03.LOG NO

2 ONLINE

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO02.LOG NO

GROUP# STATUS TYPE ---------- ------- ------- MEMBER

-------------------------------------------------------------------------------- IS_ ---

1 ONLINE

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO01.LOG NO

SQL> exec dbms_logmnr.add_logfile(' D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO03.LOG ERROR:

ORA-01756: 引号内的字符串没有正确结束

SQL> NO');

SP2-0042: 未知命令 \其余行忽略。

SQL> exec dbms_logmnr.add_logfile('D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO03.LOG'); BEGIN dbms_logmnr.add_logfile('D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO03.LOG'); END; *

第 1 行出现错误:

ORA-01289: 无法添加重复的日志文件

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO03.LOG ORA-06512: 在 \ORA-06512: 在 line 1

SQL> exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL 过程已成功完成。

SQL> select sql_redo from v$logmnr_contents where lower(sql_redo) like '%update%' and seg_name='EMP'; 未选定行

SQL> select sql_redo from v$logmnr_contents where lower(sql_redo) like '%update%' and seg_name='emp'; 未选定行

SQL> exec dbms_logmnr.add_logfile('D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO02.LOG');

PL/SQL 过程已成功完成。

SQL> exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL 过程已成功完成。

SQL> select sql_redo from v$logmnr_contents where lower(sql_redo) like '%update%' and seg_name='EMP'; 未选定行

SQL> exec dbms_logmnr.add_logfile('D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\REDO01.LOG');

PL/SQL 过程已成功完成。

SQL> exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL 过程已成功完成。

SQL> select sql_redo from v$logmnr_contents where lower(sql_redo) like '%update%' and seg_name='EMP';

SQL_REDO

--------------------------------------------------------------------------------

update \EAAAAAgAAA';

update \AEAAAAAgAAB';

update \AEAAAAAgAAC';

update \AEAAAAAgAAD';

SQL_REDO

--------------------------------------------------------------------------------

update \AEAAAAAgAAE';

update \AEAAAAAgAAF';

update \AEAAAAAgAAG';

update \

SQL_REDO

-------------------------------------------------------------------------------- AEAAAAAgAAH';

update \AEAAAAAgAAI';

update \AEAAAAAgAAJ';

update \AEAAAAAgAAK';

SQL_REDO

--------------------------------------------------------------------------------

update \EAAAAAgAAL';

update \AEAAAAAgAAM';

update \AEAAAAAgAAN';

已选择14行。

SQL> select sql_undo from v$logmnr_contents where lower(sql_redo) like '%update%' and seg_name='EMP';

SQL_UNDO

--------------------------------------------------------------------------------

update \EAAAAAgAAA';

update \AEAAAAAgAAB';

update \AEAAAAAgAAC';

update \AEAAAAAgAAD';

SQL_UNDO

--------------------------------------------------------------------------------

update \AEAAAAAgAAE';

update \AEAAAAAgAAF';

update \AEAAAAAgAAG';

update \

SQL_UNDO

-------------------------------------------------------------------------------- AEAAAAAgAAH';

update \AEAAAAAgAAI';

update \AEAAAAAgAAJ';

update \AEAAAAAgAAK';

SQL_UNDO

--------------------------------------------------------------------------------

update \EAAAAAgAAL';

update \AEAAAAAgAAM';

update \AEAAAAAgAAN';

已选择14行。 SQL>

SGA

SQL> show parameter sga

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 276M sga_target big integer 200M

SQL> alter system set sga_target=300M; alter system set sga_target=300M *

第 1 行出现错误:

ORA-02097: 无法修改参数, 因为指定的值无效 ORA-00823: 指定的 sga_target 的值大于 sga_max_size

SQL> alter system set sga_max_size=200M; alter system set sga_max_size=200M * 第 1 行出现错误:

ORA-02095: 无法修改指定的初始化参数

SQL> alter system set sga_max_size=200M scope=spfile;

系统已更改。

SQL> startup force ORACLE 例程已经启动。

Total System Global Area 230686720 bytes Fixed Size 1248236 bytes Variable Size 75498516 bytes Database Buffers 146800640 bytes Redo Buffers 7139328 bytes 数据库装载完毕。 数据库已经打开。 SQL> show parameter sga

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 220M sga_target big integer 220M SQL> alter system set sga_target=250M; alter system set sga_target=250M *

第 1 行出现错误:

ORA-02097: 无法修改参数, 因为指定的值无效 ORA-00823: 指定的 sga_target 的值大于 sga_max_size

SQL> alter system set sga_max_size=200M scope=spfile;

系统已更改。

SQL> startup force ORACLE 例程已经启动。

Total System Global Area 230686720 bytes Fixed Size 1248236 bytes Variable Size 75498516 bytes Database Buffers 146800640 bytes Redo Buffers 7139328 bytes 数据库装载完毕。 数据库已经打开。 SQL> show parameter sga

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 220M sga_target big integer 220M SQL> alter system set sga_max_size=300M scope=spfile;

系统已更改。

SQL> startup force ORACLE 例程已经启动。

Total System Global Area 314572800 bytes Fixed Size 1248768 bytes Variable Size 159384064 bytes Database Buffers 146800640 bytes Redo Buffers 7139328 bytes 数据库装载完毕。 数据库已经打开。 SQL> show parameter sga

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 300M

sga_target big integer 220M SQL> alter system set sga_target=290M;

系统已更改。

SQL> show parameter sga

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 300M sga_target big integer 292M SQL> select * from v$sgainfo;

NAME BYTES RES -------------------------------- ---------- ---

Fixed SGA Size 1248768 No Redo Buffers 7139328 No Buffer Cache Size 222298112 Yes Shared Pool Size 67108864 Yes Large Pool Size 4194304 Yes Java Pool Size 4194304 Yes Streams Pool Size 0 Yes Granule Size 4194304 No Maximum SGA Size 314572800 No Startup overhead in Shared Pool 37748736 No Free SGA Memory Available 8388608

已选择11行。

SQL> select COMPONENT,CURRENT_SIZE from v$sga_dynamic_components where CURRENT_S IZE <> 0;

COMPONENT CURRENT_SIZE ------------------------------ ------------

shared pool ########## large pool ########## java pool ########## DEFAULT buffer cache ########## SQL>

*****************************表空间**************************************

SQL> create user u1 identified by u1 2 default tablespace users --10g 3 temporary tablespace temp --9i 4 quota 10M on users 5 password expire 6 SQL>

SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users whe

re username='U1';

未选定行

SQL> create user u1 identified by u1 2 default tablespace users --10g 3 temporary tablespace temp --9i 4 quota 10M on users 5 password expire 6 ;

用户已创建。

SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users wher e username='U1';

USERNAME DEFAULT_TABLESPACE ------------------------------ ------------------------------ TEMPORARY_TABLESPACE ------------------------------

U1 USERS TEMP

SQL> select temporary_tablespace from dba_users where username='SCOTT';

TEMPORARY_TABLESPACE ------------------------------ TEMP

SQL> create temporary tablespace temp2 tempfile 'D:\\oracle\\product\\10.2.0\\oradat a\\orcl\\TEMP02.DBF' size 10M;

表空间已创建。

SQL> alter user scott temporary tablespace temp2;

用户已更改。

SQL> create temporary tablespace temp03 tempfile 'D:\\oracle\\product\\10.2.0\\orada ta\\orcl\\TEMP.DBF' size 10M;

表空间已创建。

SQL> select name from V$datafile; NAME

--------------------------------------------------------------------------------

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSTEM01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\UNDOTBS01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSAUX01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\USERS01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\EXAMPLE01.DBF

SQL> create temporary tablespace temp04 tempfile 'D:\\test\\temp1.dbf' size 10M;

表空间已创建。

SQL> select TABLESPACE_NAME,CONTENTS from dba_tablespaces;

TABLESPACE_NAME CONTENTS ------------------------------ ---------

SYSTEM PERMANENT UNDOTBS1 UNDO SYSAUX PERMANENT TEMP TEMPORARY USERS PERMANENT EXAMPLE PERMANENT TEMP2 TEMPORARY

TEMP03 TEMPORARY TEMP04 TEMPORARY

已选择9行。

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME STATUS ------------------------------ ---------

SYSTEM ONLINE UNDOTBS1 ONLINE SYSAUX ONLINE TEMP ONLINE USERS ONLINE EXAMPLE ONLINE TEMP2 ONLINE TEMP03 ONLINE TEMP04 ONLINE

已选择9行。 SQL>

数据库移库以及恢复 SQL> select name from v$datafile; NAME

------------------------------------------------------------------------------

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSTEM01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\UNDOTBS01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSAUX01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\USERS01.DBF D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\EXAMPLE01.DBF

SQL> shut immediate; ORA-01109: 数据库未打开

已经卸载数据库。 ORACLE 例程已经关闭。

SQL> host copy D:\\oracle\\product\\10.2.0\\oradata\\orcl\\*.dbf E:\\test; D:\\oracle\\product\\10.2.0\\oradata\\orcl\\EXAMPLE01.DBF

D:\\oracle\\product\\10.2.0\\oradata\\orcl\\SYSAUX01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\SYSTEM01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\TEMP01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\UNDOTBS01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\USERS01.DBF 已复制 6 个文件。

SQL> conn / as sysdba 已连接到空闲例程。 SQL> startup mount ORACLE 例程已经启动。

Total System Global Area 289406976 bytes Fixed Size 1248576 bytes Variable Size 100664000 bytes Database Buffers 180355072 bytes Redo Buffers 7139328 bytes 数据库装载完毕。

SQL> select instance_name from v$instance;

INSTANCE_NAME ---------------- orcl

SQL> alter database rename file 'D:\\oracle\\product\\10.2.0\\oradata\\orcl\\EXAMPL 1.DBF' to 'E:\\test\\EXAMPLE01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\\oracle\\product\\10.2.0\\oradata\\orcl\\SYSAUX .DBF' to 'E:\\test\\SYSAUX01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\\oracle\\product\\10.2.0\\oradata\\orcl\\SYSTEM .DBF' to 2

SQL> alter database rename file 'D:\\oracle\\product\\10.2.0\\oradata\\orcl\\SYSTEM0 DBF' to 'E:\\test\\SYSTEM01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\\oracle\\product\\10.2.0\\oradata\\orcl\\TEMP01

BF' to 'E:\\test\\TEMP01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\\oracle\\product\\10.2.0\\oradata\\orcl\\UNDOTBS .DBF' to 'E:\\test\\UNDOTBS01.DBF';

数据库已更改。

SQL> alter database rename file 'D:\\oracle\\product\\10.2.0\\oradata\\orcl\\USERS01 BF' to 2

SQL> alter database rename file 'D:\\oracle\\product\\10.2.0\\oradata\\orcl\\USERS0 DBF' to 'E:\\test\\USERS01.DBF';

数据库已更改。

SQL> recover database; 完成介质恢复。

SQL> alter database open;

数据库已更改。

SQL> select name from V$datafile; NAME

------------------------------------------------------------------------------

E:\\TEST\\SYSTEM01.DBF E:\\TEST\\UNDOTBS01.DBF E:\\TEST\\SYSAUX01.DBF E:\\TEST\\USERS01.DBF E:\\TEST\\EXAMPLE01.DBF

临时表空间

select name from v$datafile;

create user u1 identified by u1 -----------创建用户指定默认表空间和临时表空间 default tablespace users --10g temporary tablespace temp --9i quota 10M on users password expire;

数据库备份恢复 热备要求数据库处于归档状态,在业务不是很繁忙时用热备

shut immediate startup mount

alter database archivelog; alter database open;启动归档模式 archive log list 热备:

alter tablespace users begin backup;

copy D:\\oracle\\product\\10.2.0\\oradata\\orcl \%users01.dbf e:\\test\%users01.dbf alter tablespace users end backup 实验

假设users表空间存在热备份 该空间有一个T2表(scott.emp) 在该表产生交易 update t2 set sal=sal+1; commit;

alter system switch logfile;

然后将USERS表空间的数据文件给它破坏掉 比如用一个txt文件覆盖掉

copy d:\\1.txt d:\%users01.bdf(用txt覆盖掉了users01.bdf) alter system checkpoint;

select file_name,online_status from dba_data_files; 产看当前数据库有哪些数据文件需要恢复 取回备份文件; recover datafile 4:

alter database datafile 4 online; 代码

Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp.

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata\\or cl e:\\test\%users01.dbf

D:\\oracle\\product\\10.2.0\\oradata\\orcl\\CONTROL01.CTL D:\\oracle\\product\\10.2.0\\oradata\\orcl\\CONTROL02.CTL D:\\oracle\\product\\10.2.0\\oradata\\orcl\\CONTROL03.CTL D:\\oracle\\product\\10.2.0\\oradata\\orcl\\EXAMPLE01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\REDO01.LOG D:\\oracle\\product\\10.2.0\\oradata\\orcl\\REDO02.LOG D:\\oracle\\product\\10.2.0\\oradata\\orcl\\REDO03.LOG

D:\\oracle\\product\\10.2.0\\oradata\\orcl\\SYSAUX01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\SYSTEM01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\TEMP01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\UNDOTBS01.DBF D:\\oracle\\product\\10.2.0\\oradata\\orcl\\USERS01.DBF 已复制 1 个文件。

C:\\Documents

and

Settings\\Administrator>copy

D:\\oracle\\product\\10.2.0\\oradata\\orcl\%users01.dbf

e:\\test\%users01.dbf 系统找不到指定的文件。

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata\\or cl\%users01.dbf e:\\test\%users01.dbf

改写 e:\\test\%users01.dbf 吗? (Yes/No/All): y 已复制 1 个文件。

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata\\or cl\%users01.dbf e:\\test\%users01.dbf

改写 e:\\test\%users01.dbf 吗? (Yes/No/All): y 已复制 1 个文件。

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata D: \\oracle\\product\\10.2.0\\oradata\\orcl\%users01.dbf; D:\\oracle\\product\\10.2.0\\oradata\\1.txt 另一个程序正在使用此文件,进程无法访问。 已复制 0 个文件。

C:\\Documents and Settings\\Administrator>copy D:\\oracle\\product\\10.2.0\\oradata D: \\oracle\\product\\10.2.0\\oradata\\orcl\%users01.dbf; D:\\oracle\\product\\10.2.0\\oradata\\1.txt 另一个程序正在使用此文件,进程无法访问。 已复制 0 个文件。

C:\\Documents

and

Settings\\Administrator>copy

D:\\oracle\\product\\10.2.0\\oradata\\1.txt

D:\\oracle\\product\\10.2.0\\oradata\\orcl\%users01.dbf; 已复制 1 个文件。

C:\\Documents and Settings\\Administrator>

8888************************************************************* Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp.

C:\\Documents and Settings\\Administrator>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 11月 30 10:37:43 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn /as sysdba 已连接。

SQL> shut immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。

Total System Global Area 289406976 bytes Fixed Size 1248576 bytes Variable Size 100664000 bytes Database Buffers 180355072 bytes Redo Buffers 7139328 bytes 数据库装载完毕。

SQL> alter database archivelog 2 archive log list

3 alter tablespace users begin backup 4 alter tablespace users begin backup; archive log list *

第 2 行出现错误:

ORA-00933: SQL 命令未正确结束

SQL> alter database archivelog;

数据库已更改。

SQL> alter v 2 ; alter v *

第 1 行出现错误:

ORA-00940: 无效的 ALTER 命令

SQL> alter database open 2 ;

数据库已更改。

SQL> alter tablespace users begin backup 2 ;

表空间已更改。

SQL> copy D:\\oracle\\product\\10.2.0\\oradata\\orcl e:\\test\%users01.dbf 用法: COPY FROM TO {()} USING : 数据库字符串, 例如, hr/your_password@d:chicago-mktg : 下列关键字之一: APPEND, CREATE, INSERT 或 REPLACE : 目标表名称

: 用逗号分隔的目标列别名列表 : 任何有效的 SQL SELECT 语句

缺失的 FROM 或 TO 子句使用当前的 SQL*Plus 连接

SQL> copy D:\\oracle\\product\\10.2.0\\oradata\\orcl e:\\test\%users01.dbf ; 用法: COPY FROM TO {()} USING : 数据库字符串, 例如, hr/your_password@d:chicago-mktg : 下列关键字之一: APPEND, CREATE, INSERT 或 REPLACE : 目标表名称

: 用逗号分隔的目标列别名列表 : 任何有效的 SQL SELECT 语句

缺失的 FROM 或 TO 子句使用当前的 SQL*Plus 连接 SQL> alter tablespace users end backup;

表空间已更改。

SQL> create table t2 tablespace users as select * from scott.emp;

表已创建。

SQL> alter tablespace users begin backup;

表空间已更改。

SQL> alter tablespace users end backup;

表空间已更改。

SQL> update t2 set sal=sal+1;

已更新14行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> alter system checkpoint;

系统已更改。

SQL> select file_name,online_status from dba_data_files;

FILE_NAME

--------------------------------------------------------------------------------

ONLINE_ -------

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\USERS01.DBF RECOVER

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSAUX01.DBF ONLINE

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\UNDOTBS01.DBF ONLINE

FILE_NAME

--------------------------------------------------------------------------------

ONLINE_ -------

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSTEM01.DBF SYSTEM

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\EXAMPLE01.DBF ONLINE

SQL> select * from v$recovery_log;

未选定行

SQL> select file#,name from v$datafile;

FILE# ---------- NAME

--------------------------------------------------------------------------------

1

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSTEM01.DBF

2

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\UNDOTBS01.DBF

3

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSAUX01.DBF

FILE# ---------- NAME

--------------------------------------------------------------------------------

4

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\USERS01.DBF

5

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\EXAMPLE01.DBF

SQL> recover datafile 4; 完成介质恢复。

SQL> select file_name,online_status from dba_data_files;

FILE_NAME

--------------------------------------------------------------------------------

ONLINE_ -------

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\USERS01.DBF OFFLINE

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSAUX01.DBF ONLINE

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\UNDOTBS01.DBF ONLINE

FILE_NAME

--------------------------------------------------------------------------------

ONLINE_ -------

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\SYSTEM01.DBF SYSTEM

D:\\ORACLE\\PRODUCT\\10.2.0\\ORADATA\\ORCL\\EXAMPLE01.DBF ONLINE

SQL> alter database datafile 4 online;

数据库已更改。

SQL> select * from t2;

EMPNO ENAME JOB MGR HIREDATE ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ----------

7369 SMITH CLERK 7902 17-12月-80 20

7499 ALLEN SALESMAN 7698 20-2月 -81 30

7521 WARD SALESMAN 7698 22-2月 -81 30

EMPNO ENAME JOB MGR HIREDATE ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ----------

7566 JONES MANAGER 7839 02-4月 -81 20

7654 MARTIN SALESMAN 7698 28-9月 -81 SAL COMM 801 1601 300 1251 500 SAL COMM 2976 1251 1400

30

7698 BLAKE MANAGER 7839 01-5月 -81 2851 30

EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ----------

7782 CLARK MANAGER 7839 09-6月 -81 10

7788 SCOTT ANALYST 7566 19-4月 -87 20

7839 KING PRESIDENT 17-11月-81 10

EMPNO ENAME JOB MGR HIREDATE ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ----------

7844 TURNER SALESMAN 7698 08-9月 -81 30

7876 ADAMS CLERK 7788 23-5月 -87 20

7900 JAMES CLERK 7698 03-12月-81 30

EMPNO ENAME JOB MGR HIREDATE ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ----------

7902 FORD ANALYST 7566 03-12月-81 20

7934 MILLER CLERK 7782 23-1月 -82 10

2451 3001 5001 SAL 1501 1101 951 SAL 3001 1301 COMM 0 COMM

已选择14行。 SQL>

System恢复 SQL> conn/as sysdba 已连接。

SQL> shut immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。

Total System Global Area 535662592 bytes Fixed Size 1375792 bytes Variable Size 234881488 bytes Database Buffers 293601280 bytes Redo Buffers 5804032 bytes 数据库装载完毕。

SQL> alter database archivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> archive log list

数据库日志模式 存档模式 自动存档 启用

存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 13 下一个存档日志序列 15 当前日志序列 15

SQL> alter tablespace system begin backup;

表空间已更改。

SQL> host copy D:\\app\\Administrator\\oradata\\orcl\\system01.dbf d:\\system01.dbf; 已复制 1 个文件。

本文来源:https://www.bwwdw.com/article/kqy6.html

Top