第1章 控制文件

1.1. oracle数据库启动,关闭操作

1.1.1 数据库open状态,创建pfile(静态参数)文件

>create pfile='c:\pfile1.ora' from spfile;

1.1.2 根据pfile启动oracle数据库

在控制台中登录sqlplus / as sysdba

>shutdown immediate

>startup open pfile='c:\pfile1.ora'

1.1.3 数据库open转为nomount状态

当前为open状态时:

>shutdown immediate

>startup nomount

1.1.4 数据库nomount状态转为mount状态

当前为nomount状态时:

>alter database mount;

1.1.5 数据库mount状态转为open状态

当前为mount状态时:

>alter database open;

1.1.6 数据库open状态转为mount状态

当前为open状态:

>shutdown immediate

>startup mount

1.2.控制文件操作

1.2.1 查看控制文件信息

>select * from v$controlfile;

>select * from v$parameter;

>show parameter contril_files

1.2.2 根据静态参数文件创建动态参数文件

>create spfile='c:\spfile1.ora' from pfile='c:\pfile1.ora';

1.2.3 根据动态参数文件创建静态参数文件

>create pfile='c:\pfile1.ora' from spfile;

1.2.4 控制文件损坏,把控制文件删除,重新创建控制文件

当前状态为nomount

>create controlfile reuse database "ORCL" noresetlogs noarchivelog

maxlogfiles 16

maxlogmembers 4

maxdatafiles 10

maxloghistory 20

logfile

group 1 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG.log' size 50m,

group 2 'C:\ORACLE\ORADATA\ORCL\REDO02.LOG.log' size 50m,

group 3 'C:\ORACLE\ORADATA\ORCL\REDO03.LOG.log' size 50m,

datafile

    'C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF',

'C:\ORACLE\ORADATA\ORCL\USERS01.DBF '

      'C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF '

  'C:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF'

  'C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF'

character set UTF8;

重启数据库 >shutdown immediate

>startup open

[>alter database open resetlogs;

>select checkpoint_change# from v$database;

>select checkpoint_change# from v$datafile;

>select checkpoint_change# from v$datafile_header;]

恢复数据库[>recover database until cancel;

>recover database until cancel using backup controlfile;]

1.3.修改控制文件

1.3.1 根据pfile参数文件增加控制文件

原静态参数文件pfile1.ora

图1.1原静态参数文件pfile1.ora

增加控制文件后

图1.2增加控制文件后pfile1.ora

1.3.2 根据动态参数文件增加控制文件

>alter system set control_files='C:\oracle\oradata\orcl\control01.ctl',

'C:\oracle\oradata\orcl\control02.ctl'

'C:\oracle\flash_recovery_area\orcl\control02.ctl'

scope=spfile;

1.3.3 根据pfile参数文件移动控制文件

原静态参数文件pfile1.ora,

图1.3.3.1静态参数文件pfile1.ora

C:\oracle\flash_recovery_area\orcl\目录中的control02.ctl

移动到C:\oracle\oradata\orcl文件夹中

移动控制文件后

图1.3.3.2移动控制文件后pfile1.ora

1.3.4 根据动态参数文件移动控制文件

原控制文件位置

图1.3.4.1原控制文件位置

C:\oracle\flash_recovery_area\orcl\目录中的control02.ctl

移动到C:\oracle\oradata\orcl文件夹中

>alter system set control_files='C:\oracle\oradata\orcl\control01.ctl',

'C:\oracle\oradata\orcl\control02.ctl'

scope=spfile;

重启数据库 >shutdown immediate

>startup open

移动后控制文件信息

图1.3.4.1移动后控制文件信息

1.3.5 删除控制文件

原控制文件

图1.3.5.1 原控制文件

>alter system set control_files='C:\oracle\oradata\orcl\control01.ctl',

scope=spfile;

重启数据库 >shutdown immediate

>startup open

删除后控制文件信息

图1.3.5.2 删除后控制文件信息

第2章 表空间、数据文件管理操作

2.1.表空间操作

2.1.1查询表空间,还原表空间、默认临时表空间、临时表空间

>select * from dba_data_files;查询数据文件

>select * from v$tempfile;查询临时数据文件

>select * from v$tablespace;查询系统表空间

>select * from dba_tablespaces;查询数据库表空间

>select * from dba_free_space;查询空闲表空间

2.1.2 设置表空间脱机、联机操作

USERS表空间为例

>alter tablespace USERS offline;设置表空间脱机

>alter tablespace USERS online;设置表空间联机

2.1.3设置表空间为只读、可读可写状态

USERS表空间为例

>alter tablespace USERS read only;设置表空间为只读状态

>alter tablespace USERS read write;设置表空间为可读写状态

2.1.4两种方法完成移动数据文件操作

<1>表空间脱机法

>alter tablespace USERS

rename datafile 'C:\ORACLE\ORADATA\ORCL\USERS01.DBF'

to 'C:\USERS02.DBF';

(1)使用数据字典获取所需的表空间和数据文件的相关信息

(2)将表空间置为脱机 >alter tablespace USERS offline;

(3)使用操作系统命令移动或复制要移动的数据文件

(4)执行alter tablespace rename datafille命令

(5)将表空间联机 >alter tablespace USERS online;

(6)使用数据字典获取所需的表空间和数据文件的相关信息

<2>关闭数据库法

>alter tablespace USERS

rename datafile 'C:\ORACLE\ORADATA\ORCL\USERS01.DBF'

to 'C:\USERS02.DBF';

(1)若数据库开启,则使用数据字典获取所需的表空间和数据文件的相关信息

(2)关闭数据库系统 >shutdown immediate

(3)使用操作系统命令移动或复制要移动的数据文件

(4)将数据库置为加载状态 >startup mount

(5)执行alter tablespace rename datafille命令

(6)打开数据库系统 >alter database open

(7)使用数据字典获取所需的表空间和数据文件的相关信息

2.1.5创建表空间stu,包含两个数据文件stu01.dbf size 10m,stu02.dbf size 20m

创建过程

>create tablespace stu

datafile 'c:\stu01.dbf' size 10m,

'c:\stu02.dbf' size 20m;

查询过程

>select * from v$tablespace;

>select * from dba_data_files;

2.1.6修改表空间stu,增加数据文件stu03.dbf size 30m.

>alter tablespace stu

add datafile 'c:\stu03.dbf' size 30m;

2.1.7增大数据文件stu01.dbf的大小为50m

> alter database datafile 'c:\stu01.dbf' resize 50m;

2.1.8收缩表空间的大小

USERS为例

(1)找出最大的block_id.

>select max(block_id) from dba_extents where tablespace_name='USERS';

图2.1.8.1最大的BLOCK_ID

(2)查看块的大小 >show parameter db_block_size

图2.1.8.2查看块的大小

(3)计算 select max(block_id)*块大小/1024/1024 from dual ;


图2.1.8.3计算 select max(block_id)*块大小/1024/1024 from dual

(4)收缩表空间的大小

>alter database datafile     'C:\ORACLE\ORADATA\ORCL\USERS01.DBF' resize 4.07m;

2.1.9完成对数据文件的脱机和联机操作

更改数据库的非归档模式为归档模式

关闭数据库,然后装载数据库
(1)SHUTDOWN IMMEDIATE
STARTUP MOUNT
(2)
更改日志模式,打开数据库
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

>alter database datafile 'stu01.dbf' online;

>alter database datafile 'stu02.dbf' offline;

第3章 日志文件的操作

3.1如何更改数据库的日志模式

查看数据库当前的日志模式

    >Archive log list

>select log_mode from v$database;


图3.1.1查看数据库当前的日志模式

更改数据库的归档模式为非归档模式

1)关闭数据库,然后装载数据库
shutdown immediate
startup mount
2)更改日志模式,打开数据库
alter database noarchivelog;
alter database open;

(1)更改数据库的非归档模式为归档模式

关闭数据库,然后装载数据库
shutdown immediate
startup mount
2)更改日志模式,打开数据库
alter database archivelog;
alter database open;

3.2新增加日志文件组,包含两个文件reg01.log和reg02.log

>alter database add logfile group 4 ('c:\reg01.log','c:\reg02.log')         size 15m;

3.3增加一个日志文件reg03.log

>alter database add logfile member

'c:\reg03.log' to group 4

3.4查看归档文件存放的位置

使用ARCHIVE LOG LIST命令可以显示日志操作模式,归档位置,自动归档机器要归档的日志序列号等信息.


图3.4.1 查看归档文件存放的位置

3.5更改归档进程数

>alter system set log_archive_max_processes=3;

3.6更改位置

>alter system set log_archive_dest='E:\oracle' scope=spfile;

3.7更改归档模式的格式

>alter system set log_archive_format='%t_%s_%r' scope=spfile;

初始化参数LOG_ARCHIVE_FORMAT用于指定归档日志的文件名格式,设置该初始化参数时,可以指定以下匹配符:

%s: 日志序列号 :

%S: 日志序列号(带有前导0)

%t: 重做线程编号.

%T: 重做线程编号(带有前导0)

%a: 活动ID

%d: 数据库ID

%r RESETLOGSID.

3.8切换手工归档模式

>alter database archivelog manual;

>shutdown immediate

>startup


图3.8.1切换手工归档模式

启用自动归档模式 >alter system archive log start;

关闭自动归档模式 >alter system archive log stop;

3.9将日志文件归档操作

mount 状态下操作。查询v$database里的log_mode字段。

>alter system archive log all

因为没有要归档的文件,故出现如下问题

图3.9.1将日志文件归档操作

3.10启用LOG_ARCHIVE_DEST_2归档位置

查看数据库当前状态>select status from v$instance;

>show parameter log_archive_dest

图3.10.1查看log_archive_dest

图3.10.2查看log_archive_dest

>alter system set log_archive_dest_stage_2='enable';

3.11如何进行日志切换,并在切换前和切换后进行查询检查点

>select * from v$log

>alter system switch logfile;

图3.11.1切换前

图3.11.2日志切换

图3.11.3切换后

3.12查询当前数据库的检查点

>show parameter checkpoint

图3.12.1 show parameter checkpoint

3.13完成移动重做日志文件操作,移动到另一个目录中


>alter database ORCL

rename file 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG'

to 'C:\REDO01.LOG';

(1)关闭数据库系统 >shutdown immediate

(2)使用操作系统命令移动或复制要移动的日志文件

(3)将数据库置为加载状态 >startup mount

(4)执行alter database rename fille命令

(5)打开数据库系统 >alter database open

图3.13.1 移动日志文件

3.14删除重做日志文件成员reg03.log

创建日志文件reg03.log> alter database add logfile

('C:\reg03.log','C:\reg02.log','C:\reg01.log') size 15M;

>Alter database ORCL drop logfile member 'C:\reg03.log';


图3.14.1 删除日志文件成员

3.15删除重做日志文件组

>alter database drop logfile group 4;


图3.15.1 删除日志文件组

3.16说明每一个查询表的字段功能

显示归档日志信息select * from v$archived_log;

显示日志操作模式select * from v$database;

显示日志历史信息select * from v$loghist;

显示归档进程信息select * from v$archive_processes;

第4章 用户和权限管理

4.1创建一用户student、clstu、teacher密码abcd,默认表空间为users

>create user student identified by abcd default tablespace users;

>create user clstu identified by abcd default tablespace users;

>create user teacher identified by abcd default tablespace users;

4.2修改用户student密码为1234;


>Alter user student identified by 1234 ;

4.3 授予用户student : create session,create table 权限并测试

>Grant create session,create table to student;

>conn student/1234


4.3.1登录成功


4.3.2创建表


4.3.3查看表

4.4为用户student加锁,测试。之后为用户student解锁并测试

>alter user student account lock;


4.4.1 student加锁操作

>alter user student account unlock;


4.4.2登录成功

4.5收回权限create session并测试

>revoke create session from student;


4.5.1收回create session

4.6查看当前student用户权限

4.6.1查看当前用户所有权限

student用户下查看

>Select * from user_sys_privs;

4.6.2 查看所用用户对表的权限

student用户下查看

>Select * from user_tab_privs;

4.7查看用户会话v$session

>select * from v$session;

4.8删除用户student的会话

>select sid,serial#,username from v$session;


图4.8.1查询进程并删除进程

>alter system kill session '6,1';

4.9 ORACLE数据库系统预先定义了CONNECT、RESOURCE、DBA、EXP_FULL_DATABASE、IMP_FULL_DATABASE五个角色

4.9.1创建一角色sturole

>create role sturole;

4.9.2授予权限create session 和角色resource

>grant create session,resource to sturole;

4.9.3将以上角色授予用户clstu

>grant sturole,resource to clstu;

4.9.4查询用户clstu包含的权限

>select * from dba_sys_privs where grantee='CLSTU';


图4.9.4 查询用户clstu包含的权限

4.10收回clstu用户的resource角色权限,并查询

>revoke resource from clstu

>select * from dba_sys_privs where grantee='CLSTU';


图4.10.1 查询用户clstu包含的权限

4.11 创建一个带有口令的角色tr密码abcd

>create role tr identified by abcd;


图4.11查询角色TR

4.11.1修改角色口令没有密码

>alter role TR not identified;


图4.11.1 查询角色TR

4.11.2修改角色口令密码

>alter role TR identified by abcd;


图4.11.2 查询角色TR

4.12 将对scott.emp查询权限授予用户clstu,执行登陆查询和修改操作,查看结果

>grant select on scott.emp to clstu;


图4.12.1登录clstu用户,查询scott.emp表


图4.12.2修改scott.emp表

4.13设置角色tr生效,并查询

>set role TR identified by abcd;

4.14查看角色和角色权限

>select * from dba_role_privs;查询用户权限角色

确定角色的权限
>select * from role_tab_privs ;              包含了授予角色的对象权限
>select * from role_role_privs ;             包含了授予另一角色的角色
>select * from role_sys_privs ;              包含了授予角色的系统权限

查看当前用户权限:
SQL> select * from session_privs;

ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA。

USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息

ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息

DBA_*:有关整个数据库中对象的信息 (这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)

1、查看所有用户

select * from dba_user;

select * from all_users;

select * from user_users;

2、查看用户系统权限

select * from dba_sys_privs;

select * from all_sys_privs;

select * from user_sys_privs;

3、查看用户对象权限

select * from dba_tab_privs;

select * from all_tab_privs;

select * from user_tab_privs;

4、查看所有角色

select * from dba_roles;

5、查看用户所拥有的角色

select * from dba_role_privs;

select * from user_role_privs;

6、查看当前用户的缺省表空间

select username,default_tablespace from user_users;

7、查看某个角色的具体权限

如grant connect,resource,create session,create view to TEST;

8、查看RESOURCE具有那些权限

用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';

数据字典视图      描述

ROLE_SYS_PRIVS 角色拥有的系统权限

ROLE_TAB_PRIVS 角色拥有的对象权限

USER_TAB_PRIVS_MADE 查询授出去的对象权限(通常是属主自己查)

USER_TAB_PRIVS_RECD 用户拥有的对象权限

USER_COL_PRIVS_MADE 用户分配出去的列的对象权限

USER_COL_PRIVS_RECD 用户拥有的关于列的对象权限

USER_SYS_PRIVS 用户拥有的系统权限

USER_TAB_PRIVS 用户拥有的对象权限

USER_ROLE_PRIVS 用户拥有的角色

第5章 导入导出

5.1exp,imp备份工具

5.1.1使用exp工具导出emp和dept表

导出scott用户下emp和dept表

  1. 解锁scott用户 >alter user scott account unlock;
  2. 退出数据库,在windows命令行中输入

    >exp scott/tiger buffer=64000 file=C:\qzw.dmp tables=(dept,emp)


    图5.1.1.1导出dept,emp表

    5.1.2使用exp工具导出scott方案

    Windows下输入 >exp scott/tiger buffer=64000 file=c:\qzw01.dmp owner=scott

    图5.1.2.1导出scott方案

    5.1.3使用exp工具导出数据库

    Windows下输入 >exp qzw/12345 buffer=64000 file=c:\qzw01.dmp


    图5.1.3.1导出数据库

    5.1.4使用imp工具导入emp和dept表

    导入empdept表到用户qzw

  3. 创建用户qzw >create user qzw identified by 12345 default tablespace users;
  4. 赋予qzw 导入权限 >grant create session,resource to qzw;
  5. 退出数据库,在windows命令行中输入

    >imp qzw/12345 buffer=64000 file=C:\qzw.dmp tables=(dept,emp)


    图5.1.4.1导入dept,emp表

    5.1.5使用imp工具导入scott方案

    Windows下输入 >imp qzw/12345 buffer=64000 file=c:\qzw01.dmp

    图5.1.5.1导入scott方案

    5.1.6使用imp工具导入数据库

    Windows下输入 >imp system/oracle buffer=64000 file=c:\qzw02.dmp full=y

    图5.1.6.1导入数据库

    5.2impdp expdp备份工具

    5.2.1基本操作

    (1)连接Oracle数据库

    SQL> conn / as sysdba

    (2)创建一个操作目录

    SQL>create directory dump_dir as 'd:\oracle\dump';

    注意同时需要使用操作系统命令在硬盘上创建这个物理目录。

     目录已创建。

    5.2.2查询v$transportable_platform数据库impdp expdp应用的平台

    >select * from v$transportable_platform

    图5.2.1.1查询v$transportable_platform数据库impdp expdp应用的平台

    导出表、方案、表空间、数据库时需要具有dba或exp_full_database角色

    5.2.3使用expdp工具导出emp,dept表

    (1)授权scott用户到dump_dir目录

    >grant read,write on directory dump_dir to scott;

    (2)导入dept,emp表

    >expdp scott/tiger directory=dump_dir dumpfile=qzw.dmp tables=dept,emp


    图5.2.3.1导出dept,emp表

    5.2.4使用expdp工具导出scott方案

    >expdp scott/tiger directory=dump_dir dumpfile=qzw01.dmp schemas=scott

    图5.2.4.1导出scott方案

    5.2.5使用expdp工具导出users表空间

    >expdp system/oracle directory=dump_dir dumpfile=tablespace.dup tablespaces=USERS


    图5.2.5.1导出users表空间

    5.2.6使用expdp工具导出数据库

    图5.2.6.1导出数据库

    图5.2.6.2导出数据库

    5.2.7使用impdp工具导入emp,dept表到scott方案下和system方案    (remap_schema=scott:system)

    >impdp system/oracle directory=dump_dir dumpfile=qzw.dmp remap_schema=scott:system

    或者>impdp system/oracle directory=dump_dir dumpfile=qzw.dmp tables=scott.dept,scott.emp remap_schema=scott:system

    图5.2.7.1导入emp,dept表


    图5.2.7.2导入emp,dept表

    5.2.8使用impdp工具导入SCOTT方案到scott方案下和system方案下

    >impdp system/oracle directory=dump_dir dumpfile=qzw01.dmp remap_schema=scott:system


    图5.2.8.1导入scott方案到scott和system方案下

    5.2.9使用impdp工具导入users表空间到system方案下

    >impdp system/oracle directory=dump_dir dumpfile=tablespace.dmp tablespaces=USERS


    图5.2.9.1导入USERS表空间到system方案下

    5.2.10使用impdp工具导入整个数据库到system方案下

    >impdp system/oracle directory=dump_dir dumpfile=qzw02.dmp full=y

    
    						

    图5.2.10.1导入数据库到system

    图5.2.10.2 导入数据库到system

 

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐