精通oracle10g系统管理课后答案

来源:互联网 发布:js 取前几个字符 编辑:程序博客网 时间:2024/05/08 15:56
1
1.C D E 
2.A 
3.C 
4.A B C D 
5.C
6.A C
7.B
8.A
9.B
10.A
11.A
12.A
13.B
14.C
15.A B
16 A B C
17 C
18 A B C
19 A C D
20 B


3
1.B
2.A B
3 A
4 D
5.SCOTT会话:
c:\>sqlplus scott/tiger
sql>update emp set sal=2300 where ename='BLAKE';
6.SYS会话:
c:\>sqlplus sys/oracle as sysdba
sql>shutdown transactionale
执行了该关闭操作后,因为scott会话存在未结束的事物,所以sys会话处于等待状态。
7.scott会话:
sql>commit;
当scott会话执行了commit后,因为事物已经结束,所以sys会话将关闭Oracle Server。
8.sys会话:
sql>startup
9.sys会话:
sql〉show parameter db_block_size
10.sys会话:
sql>alter session set nls_date_format='YYYY-MM-DD';
sql>select sysdate from dual;
11.sys会话:
sql>conn sys/admin as sysdba
sql>select sysdate from dual;
因为alter session命令只对当前会话生效,所以当sys用户重新登录后,会按照初始化
参数NLS_DATE_FORMAT的默认设置显示系统日期。


4
1.B C
2.C
3.C
4.A
5.连接到ORCL数据库建立pfile文件initprod.ora。
C:\>sqlplus sys/admin as sysdba
sql>create pfile='%oracle_home%\database\initprod.ora' from spfile;
6.使用文本编辑器编辑initprod.ora(其他参数保留原有设置)。
*.db_name=prod
*.instance_name=prod
*.control_files=d:\prod\prod01.ctl
*.background_dump_dest=d:\prod\bdump
*.user_dump_dest=d:\prod\udump
*.shared_pool_size=52428800
*.log_buffer=131072
*.db_block_size=2048
*.db_cache_size=20971520
*.undo_tablespace=undotbs1
读者需要注意,因为prod目录BDUMP子目录UDUMP子目录不存在,所以读者一定要手工建立这些目录。
7.连接到ORCL数据库建立SPFILE文件。
sql>create spfile='%oracle_home%\database\spfileprod.ora'
from pfile='%oracle_home%\database\initprod.ora';
8.建立例程服务是在命令行通过执行oradim命令完成的。
c:\>oradim -new -sid prod -intpwd admin -startmode auto
9.建立数据库是使用create database命令完成的。建立数据库之前,必须首先设置环境变量
ORACLE_SID,然后启动例程。读者需要注意,建立数据库必须以sysdba身份来完成。
C:\>set oracle_sid=prod
c:\>sqlplus sys/admin as sysdba
sql>startup nomount
sql>create database prod
logfile group 1 'd:\prod\redo1a.log' size 10m,
group 2 'd:\prod\redo2a.log' size 10m
datafile 'd:\prod\system01.dbf' size 150m
autoextend on next 10m
sysaux datafile 'd:\prod\sysaux01.dbf' size 20m
undo tablespace undotbs1 datafile 'd:\prod\undotbs1.dbf' size 30m
default temporary tablespace temp
tempfile 'd:\prod\temp.dbf' size 20m
character set zhs16gbk
user sys indentified by admin
user system indentified by manager;
10.建立了数据库后,必须安装数据字典视图 PL/SQL包和PROFILE。读者需要注意,数据字典和pl/sql包必须以sys用户身份安装,profile必须
以system用户身份安装。
sql>conn sys/admin as sysdba
sql>@%oracle_home%\rdbms\admin\catalog
sql>@%oracle_home%\rdbms\admin\catproc
sql>conn system/manager
sql>@%oracle_home%\sqlplus\admin\pupbld
11.配置监听程序LISTENER(手工编辑listener.ora文件)。
SID_LIST_LISTENER部分:
(SID_DESC=
(GLOBAL_DBNAME = prod)
(ORACLE_HOME = d:\oracle\ora10)
(SID_NAME = prod)
)
保存listener.ora文件
停止监听程序listener: lsnrctl stop
启动监听程序listener: lsnrctl start
12.配置网络服务名(手工编辑tnsnames.ora文件)。
在文件尾部增加以下内容:
prod =
  (description=
(address_list =
(address = (protocol=tcp)(host=wanghailiang) (port=1521))
   )
   (connect_data=
(service_name = prod)
   )
)


保存tnsnames.ora文件
测试网络服务名:
c:\>sqlplus system/manager@prod
sql>select name from v$database;


5
1.C D
2.A D
3.C E
4参考附录建立示例用户SCOTT和示例表DEPT和EMP。
5.如果以SYSTEM用户登录查询SCOTT用户所包含的表,那么既可以使用数据字典视图
DBA_OBJECTS,也可以使用数据字典DBA_TABLES。
sql>conn system/manager@prod
sql>select table_name from dba_tables where owner='SCOTT';
sql>select object_name from dba_objects
where owner='SCOTT' and object_type='TABLE';
6.如果以SCOTT用户登录查询其所包含的表,那么既可以使用数据字典视图USER_OBJECTS,也可以使用数据字典USER_TABLES。
SQL>conn scott/tiger@prod
sql>select table_name from user_tables;
sql>select object_name from user_objects
where object_type='talbe';
7.通过查询动态性能视图V$DATABASE,可以显示数据库名及其日志操作模式。
sql>conn system/manager@prod
sql>select name,log_mode from v$database;
8.通过查询动态性能视图V$INSTANCE,可以显示例程名及其状态。
sql>conn system/manager@prod
sql>select instance_name,status from v$instance;
9.通过查询动态性能视图V$DATAFILE,可以显示数据库所包含的所有数据文件:通过查询动态性能视图V$controlfile,可以显示数据库所包含的所有控制文件;
通过查询动态性能视图V$LOGFILE,可以显示数据库所包含的所有重做日志。
sql>conn system/manager@prod
sql>select name from v$datafile
union
select name from v$controlfile
union
select member from v$logfile;


6
1.B
2.B
3.C
4.当要确定例程所使用的参数文件类型时,以特权用户登录,显示初始化参数SPFILE的值。如果该参数无返回值,表示例程使用PFILE;如果有返回值,
则表示例程使用SPFILE。
C:\>sqlplus sys/admin@prod as sysdba
sql>show parameter spfile;
5.通过查询动态性能视图V$CONTROLFILE,可以显示数据库的所有控制文件。
sql>select name from v$controlfile;
6.为了防止控制文件损坏,应该多元化控制文件。
c:\>sqlplus sys/admin@prod as sysdba
sql>alter system set control_files='d:\prod\prod01.ctl',
'd:\prod\prod02.ctl','d:\prod\prod03.ctl' scope=spfile;
sql>shutdown immediate
sql>host copy d:\prod\prod01.ctl d:\prod\prod02.ctl
sql>host copy d:\prod\prod01.ctl d:\prod\prod03.ctl
sql>startup
7.当数据库包含多个控制文件时,如果某个控制文件损坏,那么只需要修改初始化参数control_files,去掉损坏的控制文件即可。
c:\>sqlplus sys/admin@prod as sysdba
sql>shutdown immediate
sql>host del d:\prod\prod03.ctl
sql>startup
sql>alter system set control_files=
'd:\prod\prod01.ctl','d:\prod\prod02.ctl' scope=spfile;
sql>startup force
8.通过查询动态性能视图V$CONTROLFILE_RECORD_SECTION,可以显示控制文件所记载的永久参数设置。
sql>select type,records_total,records_used
from v$controlfile_record_section
where type in ('REDO LOG','DATAFILE','FILENAME');
9.通过重新建立控制文件可以改变永久参数的设置。
C:\>sqlplus sys/admin@prod as sysdba
sql>shutdown immediate
sql>startup nomount
sql>create controlfile reuse database "PROD"
maxlogfiles 50
maxlogmembers 4
maxdatafiles 100
logfile
group 1 'd:\prod\redo1a.log' size 10m,
group 2 'd:\prod\redo2a.log' size 10m
datafile
'd:\prod\system01.dbf',
'd:\prod\undotbs1.dbf',
'd:\prod\sysaux01.dbf'
character set zhs16gbk;
sql>alter database open;
sql>alter tablespace temp add tempfile 'd:\prod\temp.dbf'
size 20971520 reuse autoextend off;


7
1.B
2.B
3.A B
4.通过执行alter database add logfile命令,可以为数据库增加日志组。读者需要注意,在增加日志组时,首先应该确保在c盘建立了prod目录。
c:\>sqlplus system/manager@prod
sql>alter database add logfile
('d:\prod\redo3a.log','c:\prod\redo3b.log') size 10m;
5.通过查询动态性能视图V$LOG,可以显示日志组的详细信息。
sql>select group#,members,bytes,status,sequence# from v$log;
6.通过执行alter database add logfile member命令可以为日志组增加日志成员。读者需要注意,同一个日志组的不同日志成员应该分布到不同磁盘上。
sql>alter database add logfile member
'c:\prod\redo1b.log' to group 1,
'c:\prod\redo2b.log' to group 2;
7.通过查询动态性能视图V$LOGFILE,可以显示日志成员的信息。
sql>col member format a20
sql>select group#,member,status from v$logfile;
8.通过执行alterdatabase rename file命令,可以逻辑移动重做日志成员的位置。读者需要注意,当移动日志成员时,应该确保目标日志文件已经存在,另外不能移动当前日志组的日志成员。
sql>host copy d:\prod\redo3a.log c:\prod\redo3a.log
sql>alter database rename file 'd:\prod\redo3a.log' to 'c:\prod\redo3a.log';
9.通过执行ALTER DATABASE DROP LOGFILE GROUP 命令,可以删除日志组。读者需要注意,删除日志组只是进行逻辑删除,其日志成员文件需要手工删除。
sql>alter database drop logfile group 3;
sql>host del c:\prod\redo3a.log
sql>host del c:\prod\redo3b.log


8
1.B
2.D
3.通过查询动态性能视图V$DATABASE,可以显示数据库名称及日志操作模式。
c:\>sqlplus system/manager@prod
sql>select name,log_mode from v$database;
4.改变日志操作模式必须由特权用户完成。读者需要注意,在改变日志操作模式之前,应该首先建立ARCHIVE目录。
sql>conn sys/admin@prod as sysdba
sql>alter system set log_archive_dest_1=
'location=c:\prod\archive' scope=spfile;
sql>alter system set log_archive_dest_2=
'location=d:\prod\archive' scope=spfile;
sql>alter system set log_archive_format='%s_%t_%r.arc'
scope=spfile;
sql>shutdown immediate
sql>startup mount
sql>alter database archivelog;
sql>alter database open;
5.手工执行日志切换命令两次,然后显示所有归档日志文件名和对应的日志序列号。
sql>alter system switch logfile;
sql>alter system switch logfile;
sql>col name format a50
sql>select name,sequence# from v$archived_log;
6.通过执行ARCHIVE LOG LIST命令,可以显示日志操作模式 归档目录及当前日志序列号。读者需要注意,该命令只能由特权用户执行。
C:\>sqlplus sys/admin@prod as sysdba
sql>archive log list


9
1.B
2.A
3.A B
4.C D
5.B C
6.A
7.C
8.通过查询数据字典视图DBA_TABLESPACES,可以显示数据库所有表空间的详细信息。
sql>select tablespace_name,status,extent_management
from dba_tablespaces;
9.使用create tablespace命令可以建立表空间。因为默认空间管理方式为局部管理,所以建立字典管理表空间时,必须提供EXTENT 
MANAGEMENT DICTIONARY选项。读者需要注意,建立字典管理表空间时,要求SYSTEM表空间必须采用字典管理方式。
sql>create tablespace data01 datafile 'd:\prod\data01_1.dbf'
size 10M uniform size 128k;
sql>alter system set db_cache_size=16m;
sql>alter system set db_16k_cache_size=2m;
sql>create tablespace data02 datafile 'd:\prod\data02.dbf'
size 10M uniform size 256k blocksize 16k;
sql>create tablespace data03 datafile 'd:\prod\data03.dbf'
size 10m extent management dictionary
default storage(initial 10k next 10k pctincrease 50);
sql>create bigfile tablespace data04
datafile 'd:\prod\data04.dbf' size 10m;
sql>create temporary tablespace temp01
tempfile 'd:\prod\data04.dbf' size 10m;
sql>create temporary tablespace temp01
tempfile 'd:\prod\temp01.dbf' size 10m;
sql>create temporary tablespace temp02
tempfile 'd:\prod\temp02.dbf' size 10m;
sql>alter session set db_create_file_dest='d:\prod';
sql>create table query_data datafile size 5m;
10.从Oracle Database 10g开始,允许DBA用户执行ALTER TABLESPACE RENAME命令修改表空间的名称。
sql>alter tablespace query_data rename to ronly;
11.建立表空间时,表空间处于read write状态。此时,既可以查询表空间上的数据,也可以在表空间上执行DDL和DML操作。
create table t1(cola int) tablespace ronly;
insert into t1 values(9);
commit;
12.执行ALTER TABLESPACE命令可以将表空间转变为只读状态。将表空间转变为只读状态后,只能查询表空间上的数据,
不允许在表空间上指定DDL和DML操作,但是DROP操作例外。
sql>alter tablespace ronly read only;
sql>create table t2(cola int) tablespace ronly;
sql>insert into t1 values(10);
sql>select * from t1;
sql>drop table t1;
13.执行DROP TABLESPACE 命令可以删除表空间。
sql>drop tablespace ronly including contents and datafiles;
14.通过查询数据字典视图DBA_DATA_FILES,可以显示数据文件的详细信息。
sql>col file_name format a30
sql>select file_name,bytes,autoextensible from dba_data_files
where tablespace_name='DATA01';
15.通过为表空间增加数据文件,可以扩展表空间。读者需要注意,BIGFILE表空间只能包含一个数据文件。
sql>alter tablespace data01 add datafile
'd:\prod\data01_2.dbf' size 5m
autoextend on next 1m;
16.通过查询数据字典视图DBA_DATA_FILES,可以显示数据文件的详细信息。
sql>select file_name,bytes,autoextensible from dba_data_files
where tablespace_name='DATA01';
17.移动数据文件时,除了SYSTEM表空间和SYSAUX表空间的数据文件之外,其它数据文件应该使用ALTER TABLESPACE命令进行移动。
sql>alter tablespace data01 offline;
sql>host copy d:\prod\data01_2.dbf c:\prod\data01_2.dbf
sql>alter tablespace data01 rename datafile
'd:\prod\data01_2.dbf' to 'c:\prod\data01_2.dbf';
sql>alter tablespace data01 online;
18.使用alter tablespace group 可以将临时表空间追到临时表空间组,使用alter database default temporary tablespace可以设置
数据库的默认临时表空间。
sql>alter tablespace temp01 tablespace group temp_group;
sql>alter tablespace temp02 tablespace group temp_group;
sql>alter database default temporary tablespace temp_group;
19.通过查询数据字典dba_users,可以显示用户所使用的临时表空间。
sql>select temporary_tablespace from dba_users
where username='SYSTEM';


10
1.B C
2.A
3.B C
4.执行create undo tablespace 命令可以建立UNDO表空间。
sql>create undo tablespace undotbs2
datafiel 'd:\prod\un dotbs2.dbf' size 10m;
5.通过查看初始化参数undo_tablespace的值,可以显示当前例程正在使用的undo表空间。
sql>select value from v$parameter where name='undo_tablespace';
6.使用alter system命令可以切换undo表空间。
sql>alter  system set undo_talbespace=undotbs2;
sql>show parameter undo_tablespace
7.通过查看初始化参数undo_retention,可以显示undo数据的最大保留时间。
sql>select value from v$parameter where name='undo_retention';
sql>alter system set undo_rentention=7200;


11
1.B
2.A
3.A
4.通过查询数据字典视图DBA_TABLESPACES,可以显示表空间的详细信息。
sql>select extent_amanagement,allocation_type,initial_extnet
from dba_talbespaces where talbespace_name='data01';
5.通过查询数据字典视图DBA_FREE_SPACE,可以显示表空间的空闲空间。
sql>select sum(butes) from dba_free_space
where talbespace_name='data01';
6.当在特定表空间上建表时,需要指定talbespace选项。
sql>create talbe t1(cola int)
talbespace data01 storage(minextents 2);
sql>create table t2(cola int)
tablespace data01 torage(minextents 5);
7.因为表空间DATA01采用局部管理方式,并且区分方式为一致分配,所以该表空间的所有区尺寸全部都是128K。
通过查询数据字典视图DBA_SEGEMTS,可以显示数据库所有段的详细信息。
sql>col segment_name format a12
sql>col talbespace_name format a15
sql>select segment_name,talbespace_name,extents,bytes
from dba_segments where segment_name in('t1','t2);
8.表空间上被分配的区越多,表空间的空闲空间就越小。通过查询数据字典视图DBA_FREE_SPACE,可以显示表空间的空闲空间。
sql>select sum(bytes) from dba_free_space
where tablespace_name='DATA01';
9.通过查询数据字典视图DBA_TABLESPACES,可以显示表空间详细信息。
sql>select extents_management,initial_extent,
next_extent,pct_increase
from dba_tablespaces where tablespace_name='DATA03';
10.当在特定表空间上建表时,需要指定tablespace选项。
sql>create table t3(cola int)
tablespace data03 storage(minextents 3);
sql>create table t4(cola int)
tablespace data03 storage(minextents 4);
11.因为表空间DATA03采用字典管理方式,所以段T3和T4的第一个区和第二个区德尺寸都是10K,第三个区德尺寸都是20k,
段T4的第四个区尺寸为30K。因此,段T3尺寸为40K,而段T4尺寸为70k。通过查询数据字典视图DBA_SEGMENTS,可以显示数据库所有段的详细信息。
sql>select segment_name,tablespace_name,extents,bytes
from dba_segments where segment_name in('T3','T4');
12.通过查询数据字典视图DBA_EXTENTS,可以显示已分区的详细信息:通过查询数据字典视图DBA_DATA_FILES,可以显示数据文件的详细信息。
sql>col file_name format a30
sql>select a.extent_di,a.bytes,b.file_name
from dba_extents a,dba_data_files b
where a.file_id=b.file_id and a.segment_name='T3';


12
1.A
2.A B
3.B
4.通过执行CREATE USER命令,可以建立数据库用户。
1)sql>conn system/manager@prod
sql>create user adams indentified by adams
default tablespace data01
temporary tablespace data01
temporary talblespace temp
quota 1m on data01
quota 5m on data02;
2)sql>create user james identified by james
default tablespace data03
temporary tablespace temp_group;
3)sql>create user "ops$wanghailiang\wanghailiang"
identified externaliy
default tablespace data01
temporary tablespace temp
quota 2m on data01
quota 1m on data02;
5.在特定方案中建表时,如果不指定TABLESPACE选项,将把表段建立在用户的默认表空间上。
c:\>sqlplus system/manager@prod
sql>create table adams.test(cola int);
sql>select tablespace_name from dba_segements
where owner='ADAMS' and segment_name='TEST';
6.在特定表空间上建表时,要求用户必须在该表空间上具有空间配额。如果用户在特定表空间上没有空间配额,将显示错误信息。
C:\>sqlplus system/manager@prod
sql>create table james.test(cola int);
sql>alter user james quota 1m on data03;
sql>create table james.test(cola int);
7.当为os验证用户授予了connect角色后,该用户将可以连接到prod数据库。
c:\>sqlplus system/manager@prod
sql>grant connect to "OPS$WANGHAILIANG\WANGHAILIANG";
sql> conn / @prod
8.通过查询数据字典视图DBA_USERS显示用户的详细信息。
sql>select created,default_tablespace,temporary_tablespace
from dba_users where username='ADAMS';
9.通过查询数据字典视图DBA_TS_QUOTAS显示用户的表空间配额。
sql>col username format a10
sql>col tablespace_name format a15
sql>select username,tablespace_name,max_bytes
from dba_ts_quotas where username in('ADAMS','JAMES');
10.通过执行DROP USER语句删除数据库用户。
sql>drop user adams cascade;
sql>drop user james cascade;


13
1.A C
2.C
3.B D E
4.通过执行create user 命令可以建立用户,为了使用户可以在特定表空间上建立对象,必须分配空间配额。
C:\>sqlplus system/manager@prod
sql>create user allen identified by allen default tablespace data01 quota 1m on data01;
sql>create user clark identified by clark default tablespace data02 quota 1m on data02;
5.为了使用户可以登录数据库,必须授予create session系统权限;为了使用户可以建表,必须授予create table系统权限。
如果授予系统权限时带有with admin option选项,那么该用户可以将相应的系统权限授予其它用户。
sql>grant create session,create table to allen
with admin option;
sql>conn allen/allen@prod
sql>create table test1(cola int);
6.因为allen用户在系统权限create session和create table上具有with admin option选项,所以该用户可以将系统权限授予
clark用户。将这两个权限授予clark用户后,该用户可以连接到数据库并执行建表操作。
sql> conn allen/allen@prod
sql>grant create session,create table to clark;
sql>conn clark/clark@prod
sql>create talbe test1(cola int);
7.通过查询数据字典视图DBA_SYS_PRIVS显示用户或角色具有的系统权限。
sql>col grant format a10
sql>col privilege format a20
sql>select * from dba_sys_privs
where grantee in('ALLEN','CLARK');
8.收回用户的系统权限时,因为系统权限不会级联收回,所以ALLEN用户将不能建表,而CLARK用户仍然可以建表。
sql>conn system/manager@prod
sql>revoke create table from allen;
sql>conn allen/allen@prod
sql>create talbe test2(cold int);
sql>conn clark/clark@prod
sql>create table test2(cola int);
9.将查询DEPT表的对象权限授予ALLEN用户后,ALLEN用户将可以查询DEPT表。因为在授予查询权限时带有WITH GRANT OPTION选项,
所以ALLEN用户可以将查询SCOTT.DEPT表的权限授予其它用户。将更新LOC列的权限授予ALLEN用户后,ALLEN用户只能更新LOC列,而不能更新其它列。
sql>conn scott/tiger@prod
sql>grant select on dept to allen with grant option;
sql>grant update(loc) on dept to allen;
sql>conn allen/allen@prod
sql>select * from scott.dept;
sql>update scott.dept set loc='BEIJING' where deptno=10;
sql>update scott.dept set dname='AMIN' where deptno=10;
10.因为ALLEN用户在SCOTT.DEPT表的查询权限上具有with grant option选项,所以ALLEN用户可以将查询scott.dept表的权限授予clark用户。
sql>conn allen/allen@prod
sql>grant select on scott.dept to clark;
sql>conn clark/clark@prod
sql>select * from scott.dept;
11.通过查询数据字典视图USER_TAB_PRIVS_RECD显示用户被授予的对象权限;通过查询数据字典视图USER_COL_PRIVS_RECD显示用户被
授予的列权限;通过查询数据字典视图ALL_TAB_PRIVS_MADE显示用户授出的对象权限。
sql>conn allen/allen@prod
sql>col privilege format a12
sql>col owner format a12
sql>col table_name format a12
sql>select privilege,owner,table_name from user_tab_privs_recd;
sql>select privilege,owner,table_name||'.'||column_name
tab_col from user_col_privs_recd;
sql>select grantee,privilege,owner,table_name from all_tab_privs_made;
12.收回ALLEN用户的查询权限时,该用户将不能查询scott.dept表。因为对象权限被级联收回,所以CLARK用户也不能查询scott.dept表。
sql>conn scott/tiger@prod
sql>revoke select on dept from allen;
sql>conn allen/allen@prod;
sql>select * from scott.dept;
sql>conn clark/clark@prod
sql>select * from scott.dept;


14
1.A C
2.C D
3.建立角色使用create role命令完成的。需要注意,为角色授予权限时,不能在一条grant语句中同时授予系统权限和对象权限。
c:\>sqlplus system/manager@prod
sql>create role def_role;
sql>grant create session to def_role;
sql>grant select on scott.emp to def_role;
sql>create role prv_role identified by prv;
sql>grant insert,delete on scott.emp to prv_role;
sql>grant update(sal) on scott.emp to prv_role;
4.通过查询数据字典视图DBA_SYS_PRIVS或ROLE_SYS_PRIVS,可以显示角色所具有的系统权限。
sql>col role format a10
sql>col privilege format a20
sql>select * from role_sys_privs where role='DEF_ROLE';
5.通过查询数据字典视图ROLE_TAB_PRIVS,可以显示角色所具有的对象权限和列权限。
sql>col privilege format a10
sql>col tab format a20
sql>col column_name format a10
sql>select privilege,owner||'.'||table_name tab,column_name
from role_tab_privs where role='PRV_ROLE';
6.当角色DEF_ROLE和PRV_ROLE授予ALLEN用户后,因为带有WITH ADMIN OPTION选项,所以ALLLEN用户可以将这两个角色授予其它用户。
当设置DEF_ROLE角色为ALLEN用户的默认角色后,以ALLEN用户登录时会自动激活该角色。
sql>grant def_role,prv_role to allen with admin option;
sql>alter user allen default role def_role;
7.当以ALLEN用户登录到prod数据库后,会自动激活默认角色def_role,allen用户将可以执行该角色所具有的权限操作,但不能执行
prv_role角色所具有的权限操作。因为ALLEN用户在角色DEF_ROLE和PRV_ROLE上具有WITH ADMIN OPTION选项,所以该用户可以将这两个角色
授予CLARK用户。需要注意,设置用户的默认角色时,必须由具有DBA角色或ALTER USER权限的用户完成。
sql>conn allen/allen@prod
sql>select ename,sal from scott.emp where deptno=10;
sql>update scott.emp set sal=3000 where ename='BLAKE';
sql>grant def_role,prv_role to clark;
sql>conn system/manager@prod
sql>alter user clark default role def_role;
8.通过查询数据字典视图DBA_ROLE_PRIVS,可以显示用户或角色所具有的其他角色。
sql>col grantee format a10
sql>col granted_role format a12
sql>select * from dba_role_privs
where grantee in ('ALLEN','CLARK');
9.当以CLARK用户登录到PROD数据库后,会自动激活默认角色DEF_ROLE,CLARK用户将可以执行该角色所具有的权限操作,但不能执行PRV_ROLE角色所具有的
权限操作。激活PRV_ROLE角色后,将可以执行该角色所具有的权限操作,但因为激活新角色回自动禁止先前激活的角色,所以CLARK用户不能查询SCOTT.EMP表。
sql>conn clark/clark@prod
sql>select ename,sal from scott.emp where deptno=10;
sql>update scott.emp set sal=3000 where ename='BLAKE';
sql>set role prv_role identified by prv;
sql>update scott.emp set sal=3000 where ename='BLAKE';
sql>select sal from scott.emp where ename='BLAKE';
sql>select * from session_roles;
10.为了实现精细访问控制,必须结合使用应用上下文和包DBMS_RLS。
(1)建立应用上下文。
sql>conn system/manager@prod
sql>create context ctx using scott.emp_pack;
(2)建立用于设置ctx属性的包emp_pack。
create or replace package scott.emp_pack as 
procedure set_deptno;
end;
/
create or replace package body scott.emp_pack as
procedure set_deptno is
id number;
begin
if sys_context('userenv','session_user')='ALLEN' THEN
DBMS_SESSION.SET_CONTEXT('ctx','deptno',30);
elsif sys_context('userenv','session_user')='CLARK' THEN
DBMS_SESSION.SET_CONTEXT('ctx','deptno',10);
ELSE
DBMS_SESSION.SET_CONTEXT('ctx','deptno',20);
END IF;
   END;
END;
/
(3)以SYS用户建立登录触发器(调用包emp_pack设置会话属性)。
sql>conn sys/admin@prod as sysdba
sql>create or replace trigger login_trig
after logon on database call scott.emp_pack.set_deptno
/
(4)建立安全策略包及策略函数。
create or replace scott.emp_access as
function emp_sec(p1 varchar2,p2 varchar2) return varchar2;
end;
/
create or replace package body scott.emp_access as
function emp_sec(p1 varchar2,p2 varchar2) return varchar2
is
d_predicate varchar2(2000);
begin
if user not in('sys','system','scott') then
d_predicate :=
'deptno =sys_context(''ctx'',''deptno'')';
return d_predicate;
end if;
return '1=1';
end;
end;
/
(5)建立策略函数后,定义安全策略和策略函数的对应关系。
sql>exec dbms_rls.add_policy('scott','emp','emp_policy',-
'scott','emp_access.emp_sec');
(6)当以system用户登录到prod数据库后,查询scott.emp表会显示所有表行数据。
sql>conn system/manager@prod
sql>select ename,sal,deptno from scott.emp;
(7)当以ALLEN用户登录到prod数据库后,查询scott.emp表只会显示部门30的雇员数据。
sql>conn allen/allen@prod
sql>select ename,sal,deptno from scott.emp;
(8)当以CLARK用户登录到PROD数据库后,查询scott.emp表只会显示部门10的雇员数据。
sql>conn clark/clark@prod
sql>select ename,sal,deptno from scott.emp;


15
1.B
2.C
3.B
4.建立profile是使用create profile命令完成的。当将profile分配给用户后,口令管理选项直接生效。
sql>conn system/manager@prod
sql>create profile password_management limit
failed_login_attempts 3 password_reuser_time 60
password_life_time 10 password_grace_time 2;
sql>alter user scott profile password_management;
sql>conn scott/admin@prod
sql>conn scott/admin@prod
sql>conn scott/admin@prod
sql>conn scott/tiger@prod
sql>conn sys/admin@prod as sysdba
sql>alter user scott account unlock;
sql>select resource_name,limit from dba_profiles
where profile='PASSWORD_MANAGEMENT'
and resource_type='password';
5.使用create profile命令可以建立profile。需要注意,使用profile管理资源时,必须激活资源限制。使用scott用户建立并发会话时,
第三格会话中将显示错误信息。
sql>conn system/manager@prod
sql>create profile resource_management limit
sessions_per_user 2 connect_time 60 IDLE_TIME 10;
sql>alter system set resource_limit=true;
sql>alter user scott profile resource_management;
c:\>sqlplus scott/tiger@prod
sql>select profile='RESOURCE_MANAGEMENT'
and resource_type='KERNEL';
6.使用系统口令校验函数VERIFY_FUNCTION时,必须以SYS用户建立函数。如果要禁用特定PROFILE的口令校验函数,需将PASSWORD_VERIFY_FUNCTION选项设置为NULL。
sql>conn sys/admin@prod as sysdba
sql>@%oracle_home%\rdbms\admin\utlpwdmg
sql>alter profile default limit password_verify_function null;
sql>alter profile resource_management limit
password_verify_function verify_function;
sql>alter user scott indentified by admin;
7.使用DROP PFOFILE命令可以删除PROFILE。如果PROFILE已经分配给用户,那么删除PROFILE时必须带有cascade选项。
sql>drop profile resource_management cascade;
sql>select profile from dba_users where username='SCOTT';


16
1.B
2.A B
3.C D
4.审计特权用户的操作时,必须将初始化参数AUDIT_SYS_OPERATIONS设置为TRUE,并且其审计结果只能查看os审计跟踪。
sql>conn sys/admin@prod as sysdba
sql>alter system set audit_sys_operations=TRUE SCOPE=SPFILE;
sql>startup force
sql>drop user allen cascade;
5.激活数据库审计时,必须将修改初始化参数AUDIT_TRAIL,并重新启动数据库。
C:\>sqlplus sys/admin@prod as sysdba
sql>alter system set audit_trail=DB SCOPE=SPFILE;
sql>startup force
6.激活数据库审计,并指定了审计语句操作后,特权用户的操作不会被审计。
sql>conn sys/admin@prod as sysdba
sql>audit user;
sql>create user allen indentified by allen;
sql>conn system/manager@prod
sql>alter user allen default tablespace data01;
sql>create user king identified by king;
sql>select audit_option from dba_stmt_audit_opts;
sql>col username format a10
sql>col action_name format a12
sql>select username,action_name,obj_name,timestamp
from dba_audit_trail where action_name like '%USER%';
7.审计权限操作时,只能用户执行了与系统权限相关的sql操作后,该sql操作信息才会被存放到审计跟踪中。
sql>conn system/manager@prod
sql>grant create session,select any table to king;
sql>conn sys/admin@prod as sysdba
sql>audit select any table;
sql>conn system/manager@prod
sql>select * from scott.dept;
sql>conn scott/tiger@prod
sql>select * from scott.dept;
sql>conn king/king@prod
sql>select * from scott.dept;
sql>conn system/manager@prod
sql>select privilege from dba_priv_audit_opts;
sql>select username,priv_used,obj_name,timestamp
from dba_audit_trail where obj_name='DEPT';
8.为了审计特定用户所执行的对象操作,应该指定BY选项。
sql>conn scott/tiger@prod
sql>audit all on emp;
sql>select sal from scott.emp where ename='CLARK';
sql>conn king/king@prod
sql>select sal from scott.emp where ename='CLARK';
sql>conn system/manager@prod
sql>select sel,ins,upd,del from dba_obj_audit_opts
where object_name='EMP';
sql>select username,timestamp,ses_actions from dba_audit_trail
where obj_name='EMP';
9.通过使用精度审计,可以审计特定行和特定列的信息,精细审计是使用ORACLE系统包DBMS_FGA来实现的。通过查询数据字典视图DBA_FGA_AUDIT_TRAIL,
可以显示精度审计结果。
sql>conn system/manager@prod
sql>exec dbms_fga.add_policy(object_schema=>'scott',-
object_name=>'emp',policy_name=>'chk_emp',-
audit_column=>'sal',statement_types=>'update')
sql>conn scott/tiger@prod
sql>select sal from emp where ename='CLARK';
sql>update emp set sal=2000 where ename='CLARk';
sql>conn system/manager@prod
sql>update scott.emp set comm=100 where ename='CLARK';
sql>col db_user format a10
sql>col sql_text fromat a50
sql>select db_user,sql_text from dba_fga_audit_trail;


17
1.B C
2.A
3.B
4.执行create user语句可以建立用户。
sql>conn system/manager@prod
sql>create user ford identified by ford
default tablespace data01;
sql>grant connect,resource to ford;
5.执行create table语句可以建表。建表时,如果不指定TABLESPACE选项,Oracle会将表段建立在用户的默认表空间上。
sql>conn ford/ford@prod
sql>create table author(
id number(3),name varchar2(10),sal number(6,2)
);
6.通过查询数据字典视图USER_SEGMENTS,可以显示当前用户的所有段信息。
sql>select tablespace_name,bytes from user_segments
where segment_name='AUTHOR';
7.执行alter table语句可以扩展表段AUTHOR。
sql>alter table author allocate extent (size 100k);
sql>select tablespace_name,bytes from user_segments
where segment_name='AUTHOR';
8.执行INSERT语句可以为表插入数据,使用包DBMS_ROWID可以确定行数据所在文件号、块号以及行号。
sql>insert into author values(1,'张强',1200);
sql>insert into author values(2,'马云',1300);
sql>commit;
sql>select dbms_rowid.rowid_relative_fno(ROWID) file#,
dbms_rowid.rowid_block_number(ROWID) block#,
dbms_rowid.rowid_row_number(ROWID) row#
from author where id=2;
9.建立索引表时,必须定义主键列,并且必须指定ORGANIZATION INDEX选项。
sql>conn ford/ford@prod
sql>create table prisoner(
id number(5) constraint pk_prisoner primary key,
name varchar2(10),sex char(2),put_date date,
remark varchar2(500)
)organization index
including remark overflow tablespace data02;
10.通过使用外部表,可以在数据库中直接访问OS文件中的数据。在Oracle数据库中,必须建立DIRECTORY对象(对应于OS目录),
才能通过DIRECTORY对象访问OS文件。建立外部表时,必须定义列表和访问参数。
sql>conn system/manager@prod
sql>create directory ext as 'd:\ext';
sql>grant read,write on directory ext to ford;
sql>conn ford/ford@prod
sql>alter session set nls_date_language=AMERICAN;
sql>create table emp(
id number(4),name varchar2(20),job varchar2(10),
hiredate date,sal number(8,2),dept_id number(4)
)organization external(
type oracle_loader default directory ext access parameters(
records delimited by newline fields terminated by '|'
missing field values are null(
id,name,job,hiredate char date_format
date mask "dd-mon-yyyy",sal,dept_id)
)location('emp.dat'));
11. 建立外部表emp后,通过执行select语句可以显示其所有数据。
sql>select * from emp;
12.通过查询数据字典视图USER_TABLES,可以显示当前用户包含的表信息。
sql>select table_name,iot_type from user_tables;


18
1.A
2.A B D
3.A D
4.B
5.C
6.通过执行create index命令可以建立索引。建立索引时,如果不指定TABLESPACE选项,oracle会将索引段放在用户的默认表空间上。通过查询数据字典视图USER_SEGMENTS,可以显示当前用户的段信息。
C:\sqlplus ford/ford@prod
sql>create index author_id_idx on author(id);
sql>select tablespace_name,bytes from user_segments
where segment_name='AUTHOR_ID_IDX';
7.当使用alter table命令重新组织表时,因为表行ROWID全部发生了改变,所以将导致表上的所有索引都转变为无效状态。
为了使用这些索引,必须重新建立索引。
sql>alter table author move tablespace data02;
sql>select index_name,status from ind where table_name='AUTHOR';
sql>alter index author_id_idx rebuild;
8.建立函数索引时,要求用户必须具有系统权限query rewrite。
sql>conn system/manager@prod
sql>grant query rewrite to ford;
sql>conn ford/ford@prod
sql>create index upper_name on author(upper (name));
9.通过使用create index命令可以建立B*-树索引,使用create bitmap index命令可以建立位图索引,使用drop index命令可以删除索引。
sql>conn ford/ford@prod
sql>create table numbers(no number,odd_even varchar2(1));
sql>begin
for i in 1..100000 loop
if mod(i,2)=1 then
insert into numbers values(i,'o');
else
insert into numbers values(i,'E');
end if;
if mod(i,500)=0 then
commit;
end if;
end loop;
end;
/
sql>create index idx_no on numbers(no) tablespace data02;
sql>create index idx_oe on numbers(odd_even) tablespace data02;
sql>select segment_name,bytes from user_segments
where segment_name in ('IDX_NO','IDX_OE');
sql>drop index idx_no;
sql>drop index idx_oe;
sql>create bitmap index idx_no on numbers(no) tablespace data02;
sql>create bitmap index idx_oe on numbers(add_even) tablespace data02;
sql>select segment_name,bytes from user_segments where segment_name in('IDX_NO','IDX_OE');
对于重复值很少的列,应该建立B*-树索引;对于重复值很多,不同值固定的列,应该建立位图索引。


19
1.B C
2.A
3.B
4.B C D
5.建表时可以定义约束,当定义主键约束或唯一约束时,默认情况下会在约束列上建立唯一索引,并会将唯一索引放在用户的默认表空间上。如果要将索引分布到其他表空间,需要使用using index选项。
C:\>sqlplus ford/ford@prod
sql>create table article(
id number(3) primary key using index tablespace data03,
title varchar2(10) unique,
pub_date date,author_id number(3)
);
6.增加not null约束时,需要使用modify选项,而增加其他约束需要使用add选项。
sql>drop index author_id_idx;
sql>alter table author add constraint pk_author primary key(id);
sql>alter table author modify name not null;
sql>alter table article add foreign key(author_id) references author(id);
7.通过查询数据字典视图USER_CONSTRAINTS,可以显示特定表上的所有约束;通过查询数据字典视图user_cons_columns,可以显示约束对应的列。
sql>select constraint_name,constraint_type,status
from user_constraints where table_name='ARTICLE';
sql>select column_name from user_cons_columns
where constraint_name='PK_AUTHOR';
8当定义主键约束或唯一约束时,如果不指定DEFERRABLE选项,将在约束列上建立唯一索引;如果指定DEFERRABLE选项,将在约束列上建立非唯一索引。因为唯一约束要求列值必须唯一,所以插入第二条数据时会显示错误信息。
sql>create table product(
id number(6) unique deferrable,
description varchar2(30),price number(6,2)
);
sql>insert into product values(124201,'黄豆‘,800);
sql>insert into product values(124201,'黑豆',600);
9.禁止或激活约束时,除了主键约束之外,其他约束必须提供约束名。定义约束时,如果没有指定约束名,oracle会自动生成约束名。
sql>select constraint_name from user_constraints
where table_name='PRODUCT';
sql>alter table product disable constraint sys_c002246;
sql>insert into product values(124201,'黑豆',600);
当使用ENABLE NOVALIDATE选项激活约束时,因为不检查已存在数据,所以即使存在约束规则的数据,约束也可以被激活,但新数据必须符合规则。
sql>alter table product enable novalidate constraint sys_c002246;
sql>insert into product values(124201,'绿豆',600);
当使用ENABLE VALIDATE 选项激活约束时,要求已存在数据必须符合约束规则,否则会提示错误信息。
sql>alter table product enable constraint sys_c002246;
为了确保数据满足约束规则,并使用enable validate选项激活约束,必须使用exceptions表处理违反约束规则的数据。
sql>@%oracle_home%\rdbms\admin\utlexcept
sql>alter table product enable constraint sys_c002246
exceptions into exceptions;
sql>select id,description from product
where rowid in (select row_id from exceptions);
sql>update product set id=124202
where rowid in (select max(row_id) from exceptions);
sql>alter table product enable constraint sys_c002246;


20
1.A
2.C
3.B
4.要将数据按照月份存放到不同分区段时,需要建立范围分区表。建立范围分区表sales应使用sales_date作为分区列。
sql>alter session set nls_date_format='YYYY-MM-DD';
create table sales(
cust_id number(6),prod_name varchar2(10),
price_unit number(6,2),amount number(6),sales_date date)
partition by range (sales_date)(
partition p1 values less than ('2004-02-01') tablespace data01,
partition p2 values less than ('2004-03-01') tablespace data01,
partition p3 values less than ('2004-04-01') tablespace data01,
partition p4 values less than ('2004-05-01') tablespace data01,
partition p5 values less than ('2004-06-01') tablespace data01,
partition p6 values less than ('2004-07-01') tablespace data01,
partition p7 values less than ('2004-08-01') tablespace data03,
partition p8 values less than ('2004-09-01') tablespace data03,
partition p9 values less than ('2004-10-01') tablespace data03,
partition p10 values less than ('2004-11-01') tablespace data03,
partition p11 values less than ('2004-12-01') tablespace data03,
partition p12 values less than ('2005-01-01') tablespace data03
);
5.建立分区索引时,必须指定local选项。
sql>create index ind_sales_date on sales(sales_date) local;
6.通过查询数据字典视图USER_TAB_PARTITIONS,可以显示分区表的详细分区信息。
sql>select partition_name,tablespace_name
from user_tab_partitions where table_name='SALES';
7.要均匀分布大表数据时,需要建立散列分区表。建立散列分区表product时,应指定ID作为分区列。
sql>create table product(
id number(6),description varchar2(30),price number(6,2)
)partition by hash(id)(
partition p1 tablespace data01,
partition p2 tablespace data03,
partition p3 tablespace data04
);
8.要按照地区部署大表数据时,应建立列表分区表。建立列表分区表sales_region时,应指定city列作为分区表。
sql>create table sales_region(
dno number(6),dname varchar2(30),
sales_amount number(6),city varchar2(20)
)partition by list (city)(
partition p1 values('北京','天津','石家庄','太原',
'呼和浩特','济南') tablespace data01,
partition p2 values('哈尔滨','长春','沈阳','大连')
tablespace data03,
partition p3 values('银川','兰州','西安','乌鲁木齐',
'西宁') tablespace data04,
partition p4 values('武汉','长沙','郑州','南昌')
tablespace data01,
partition p5 values('上海','南京','杭州','合肥')
tablespace data03,
partition p6 values('广州','深圳','厦门','福州',
'海口','南宁') tablespace data04,
partition p7 values ('昆明','贵阳','成都','重庆')
tablespace data01
);


21
1.A
2.B
3.使用create cluster命令可以建立索引 。建立索引 并为其增加了 表之后还必须建立 索引。
sql>create cluster ord_clu(ord_id number(3)) tablespace data01;
sql>create table ord(
ord_id number(3),ord_date date,cust_code varchar2(3)
)cluster ord_clu(ord_id);
sql>create table item(
ord_id number(3),prod_code number(6),qty number(4)
)cluster ord_clu(ord_id);
sql>create index ind_ord_clu on cluster ord_clu;
4.通过查询数据字典视图USER_SEGMENTS,可以显示当前用户的所有段信息。
sql>select tablespace_name,bytes from user_segments
where segment_name='ORD_CLU';
5.建立单表散列族时,必须指定single table选项和hashkeys选项。
sql>create cluster prod_clu(id number(6))
single table hashkeys 1000 hash is mod(id,1000);
sql>create table product(
id number(6),description varchar2(30),price number(6,2)
)cluster prod_clu(id);


22
1.A
2.B
3.C
4.B
5.执行create view语句可以建立简单视图,用户不仅可以在简单视图上执行select操作,还可以执行DML操作(INSERT/UPDATE/DELETE)。
sql>conn scott/tiger@prod
sql>create view emp_vu(eno,name,salary,job,dno) as
select empno,ename,sal,job,deptno from emp;
sql>select text from user_views where view_name='EMP_VU';
sql>select text from user_view where view_name='EMP_VU';
sql>delete from emp_vu where name='MARY';
sql>drop view emp_vu;
6.执行create view语句可以建立复杂视图,复杂视图主要用于简化查询语句。
sql>create view dept_emp_vu as
select a.dname,a.loc,b.ename,b.sal,b.job
from dept a,emp b where a.deptno=b.deptno;
sql>select * from dept_emp_vu where dname='SALES';
7.执行create sequence语句可以建立序列,首先引用序列时,必须使用伪列NEXTVAL。
sql>create sequence deptno_seq
start with 50 increment by 1 maxvalue 99;
sql>insert into dept
values(deptno_seq.nextval,'ADMIN',DEFAULT);
sql>select * from dept;
sql>select deptno_seq.currval from dual;
sql>select sequence_name,increment_by,max_value from seq;
8.执行create public synonym 可以建立公共同义词,执行create synonym可以建立私有同义词。
sql>conn system/manager@prod
sql>create public synonym public_dept for scott.dept;
sql>conn scott/tiger@prod
sql>create synonym private_emp for emp;
sql>select a.dname,b.ename,b.sal
from public_dept a,scott.private_emp b
where a.deptno=b.deptno and a.deptno=10;


23
1.A C
2.B
3.B
4.执行create dierctory语句可以建立目录对象,使用GRANT语句可以为用户授予对象权限。
C:\>sqlplus system/manager@prod
sql>create directory dump as 'd:\dump';
sql>grant read,write on directory dump to scott;
5.使用数据泵导出工具EXPDP时,导出表使用tables选项,导出方案使用schemas选项,导出表空间使用tablespaces选项,
导出数据库使用FULL=Y选项。
expdp scott/tiger@prod directory=dump dumpfile=tab.dmp
tables=dept,emp
expdp system/manager@prod directory=dump dumpfile=scott.dmp
schemas=scott
expdp system/manager@prod directory=dump dumpfile=data01.dmp
tablespaces=data01
expdp system/manager@prod directory=dump dumpfile=prod.dmp
full=y
6.使用数据泵导入工具IMPDP导入表时,需要使用TABLES选项。
c:\>sqlplus scott/tiger@prod
sql>drop table emp;
sql>drop table dept;
impdp scott/tiger@prod directory=dump dumpfile=tab.dmp
tables=dept,emp
7.使用数据泵导入工具IMPDP导入方案时,需要使用schemas选项。
sql>conn system/manager@prod
sql>drop user scott cascade;
impdp system/manager@prod directory=dump dumpfile=scott.dmp schemas=scott
8.使用数据泵导入工具IMPDP导入表空间时,需要使用tablespaces选项。
sql>conn system/manager@prod
sql>drop table ford.article;
sql>drop table ford.author;
impdp system/manager@prod directory=dump dumpfile=data01.dmp tablespaces=data01
9.使用数据泵导入工具IMPDP导入数据库时,需要使用FULL=Y选项。
sql>conn system/manager@prod
sql>drop user scott cascade;
sql>drop user ford cascade;
sql>drop tablespace data01 including contents and datafiles;
impdp system/manager@prod directory=dump dumpfile=prod.dmp full=y


24
1.B D
2.C
3.A
4.当使用传统导出工具EXP时,导出表使用TABLES选项,导出方案使用OWNER选项,导出数据库使用FULL=Y选项。
exp scott/tiger@prod file=tab.dmp tables=dept,emp
exp system/manager@prod file=scott.dmp owner=scott
exp system/manager@prod file=prod.dmp full=y
5.当使用传统导入工具IMP导入表时,需要指定TABLES选项。
C:\>sqlplus scott/tiger@prod
sql>drop table emp;
sql>drop table dept;
imp scott/tiger@prod file=tab.dmp tables=dept,emp
6.当使用传统导入工具IMP导入方案时,需要指定FROMUSER选项。
c:\>sqlplus scott/tiger@prod
sql>drop table emp;
sql>drop table dept;
imp system/manager@prod file=scott.dmp fromuser=scott
7.当使用传统导入工具IMP导入数据库时,需要指定FULL=Y选项。
sql>conn system/manager@prod
sql>drop user scott cascade;
sql>drop user ford cascade;
sql>drop tablespace data01 including contents and datafiles;
imp system/manager@prod file=prod.dmp full=y


25
1.B C D
2.B
3.A
4.为了充分利用LogMiner提供的特征,必须激活补充日志操作。
sql>conn sys/admin@prod as sysdba
sql>alter database add supplemental log data;
5.当使用LogMiner分析重做日志的DML操作时,最简单的方式是直接使用源数据库数据字典分析重做日志。需要注意,日志分析结果只能由当前用户查看。
sql>conn system/manager@prod
sql>insert into scott.dept values(60,'salesman','New York');
sql>commit;
sql>select a.member from v$logfile a,v$log b
where a.group#=b.group# and b.status='CURRENT';
sql>exec dbms_logmnr.add_logfile(-
logfilename=>'d:\prod\redo1a.log',options=>dbms_logmnr.new)
sql>exec dbms_logmnr.start_logmnr(-
options=>dbms_logmnr.dict_from_online_catalog)
sql>select sql_redo,sql_undo from v$logmnr_contents where seg_name='DEPT';
sql>exec dbms_logmnr.end_logmnr
sql>delete from "scott"."DEPT" where "DEPTNO" = '60' and
"DNAME" = 'SALESMAN' and "LOC" = 'New York'
and ROWID = 'AAACRqAABAAARgZAAF';
sql>commit;
6.当使用DBVERIFY工具验证DATA02表空间的数据文件时,因为数据块尺寸不是8K,所以必须指定BLOCKSIZE选项。
sql>conn system/manager@prod
sql>select file_name from dba_data_files
where tablespace_name='DATA02';
7.当使用NID工具改变数据库名时,要求数据库必须处于MOUNT状态。另外,运行了NID工具之后,必须修改初始化参数DB_NAME,并且需要重新建立口令文件。
sql>conn sys/admin@prod as sysdba
sql>select name from v$database;
sql>shutdown immediate
sql>startup mount
sql>host nid target=sys/admin@prod dbname=product setname=y
编辑PFILE文件,修改DB_NAME为PRODUCT,然后重新建立SPFILE。
sql>conn sys/admin@prod as sysdba
sql>startup nomount pfile=%oracle_home%\database\initprod.ora
sql>create spfile from pfile;
sql>host orapwd file=%oracle_home%\database\pwdprod.ora password=admin
sql>startup force





























原创粉丝点击