`
mamacmm
  • 浏览: 200570 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

oracle-学习笔记-4

    博客分类:
  • J2EE
阅读更多

接 oracle-学习笔记-3

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

 

9.查看Oracle的datafile地址,查看表空间地址

set lines 1000 pages 1000
column file_name format A70
column tablespace_name format A30
column status for a15
select status, file_name, tablespace_name, bytes/1024/1024 "Size(M)", AUTOEXTENSIBLE from dba_data_files
union all
select status, file_name, tablespace_name, bytes/1024/1024 "Size(M)", AUTOEXTENSIBLE from dba_temp_files
order by tablespace_name, file_name;


select tablespace_name,
       file_id,
       file_name,
          round(bytes / (1024 * 1024), 0) total_space   
  from dba_data_files   
 order by tablespace_name;

 

10.改变表空间某个数据文件大小

ALTER DATABASE  DATAFILE '/oracle/oradata/yqmora92/ts_yqm.dbf' RESIZE  150M;


alter database datafile 'd:\oracle\product\10.2.0\oradata\test1\test6k.dbf' autoextend on next 50m maxsize 200m;


查看用户表空间的限额

  select * from user_ts_quotas;

  max_bytes字段就是了

  -1是代表没有限制,其它值多少就是多少了.

不对用户做表空间限额控制:

  GRANT UNLIMITED TABLESPACE TO ***(用户);

  这种方式是全局性的.

  或者

  alter user ***(用户名) quota unlimited on ***(表空间);

  这种方式是针对特定的表空间的.

  可以分配自然也可以回收了:

  revoke unlimited tablespace from ***(用户)

  或者

  alter user *** quota 0 on ***

 

11.1主键约束 实体完整性

create table nn(n1 varchar2(10) not null,n2 char(10));
insert into nn values ('abc','def');
alter table nn add constraint pk_nn primary key(n1);

SQL> show user
USER 为 "SCOTT"
SQL> create table nn(n1 varchar2(10) not null,n2 char(10));

表已创建。

SQL> insert into nn values ('abc','def');

已创建 1 行。

SQL> insert into nn values ('abc','def');

已创建 1 行。
SQL> rollback;
回退完成。

SQL> alter table nn add constraint pk_nn primary key(n1);

表已更改。

SQL> insert into nn values ('abc','def');

已创建 1 行。

SQL> insert into nn values ('abc','def');
insert into nn values ('abc','def')
*
第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (SCOTT.PK_NN)

 

11.2 外键约束  参照完整性

SQL> create table mm(m1 char(10),m2 varchar2(10),n1 varchar2(10));

表已创建。

SQL> alter table mm add constraint fk_mn foreign key(n1) references nn(n1);

表已更改。

SQL> insert into mm values ('aav','dd','ds');
insert into mm values ('aav','dd','ds')
*
第 1 行出现错误:
ORA-02291: 违反完整约束条件 (SCOTT.FK_MN) - 未找到父项关键字


SQL> insert into mm values ('aav','dd','abc');

已创建 1 行。

SQL> commit;

提交完成。

11.3 check 约束

SQL> select * from e;

       EID ENAME      SEX         DID
---------- ---------- ---- ----------
        10 aaa        男           25
        15 aa         b            25
         1 赵1        男            1
         2 钱1        女            2
         3 孙1        女            3
         3 李1        男            4
         3 周1        女            5
         4 周2        女

已选择8行。

SQL> update e set sex = '男' where eid = 15;

已更新 1 行。

SQL> commit;

提交完成。

SQL> alter table e add constraint ck_e_sex check(sex = '男' or sex = '女');

表已更改。

SQL> update e set sex = 'aa' where eid = 15;
update e set sex = 'aa' where eid = 15
*
第 1 行出现错误:
ORA-02290: 违反检查约束条件 (SCOTT.CK_E_SEX)


SQL> select * from e;

       EID ENAME      SEX         DID
---------- ---------- ---- ----------
        10 aaa        男           25
        15 aa         男           25
         1 赵1        男            1
         2 钱1        女            2
         3 孙1        女            3
         3 李1        男            4
         3 周1        女            5
         4 周2        女

已选择8行。

11.4 查看约束

SQL> select constraint_name,constraint_type from user_constraints where table_name='MM';

CONSTRAINT_NAME                C
------------------------------ -
FK_MN                          R

SQL> select constraint_name,constraint_type from user_constraints where table_name='E';

CONSTRAINT_NAME                C
------------------------------ -
CK_E_SEX                       C

SQL> select constraint_name,constraint_type from user_constraints where table_name='NN';

CONSTRAINT_NAME                C
------------------------------ -
SYS_C005167                    C
PK_NN                          P

 

12. 表 索引

表 没建索引之前是按堆存放数据的。


在表的经常查询的列上建立索引

SQL> create index my_mm_idx on mm(m1);

索引已创建。

SQL> select * from mm where m1 ='aav';

M1         M2         N1
---------- ---------- ----------
aav        dd         abc


12.1 位图索引

为了解决 表里面数据很多,但是唯一值很少的情况,例如:有一万条记录,sex列 只有 两个不同的值 :男和女

SQL> create bitmap index bit_e on e(sex);

索引已创建。


Oracle中NVARCHAR2与VARCHAR2的区别

VARCHAR2是Oracle提供的特定数据类型,Oracle可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容。
VARCHAR在Oracle中不建议使用。

具体到NVARCHAR2和VARCHAR2的区别,从使用角度来看区别在于:NVARCHAR2在计算长度时和字符集相关的,例如数据库是中文字符集时以长度10为例,则

1、NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符。

2、而VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个。

 

13. SQL Loader

先创建两个文件:

loader.txt 内容:

abc,xyz
avf,ddd
des,ggf

cont.ctl 内容:

load data
infile 'E:\WorkPlace\OracleWork\loader.txt'
append
into table scott.mm(
m1 position(1:3) char,
m2 position(5:7) char)

 

打开一个cmd窗口,执行:

E:\>sqlldr scott/tiger control=E:\WorkPlace\OracleWork\cont.ctl data=E:\WorkPlace\OracleWork\loader.txt

SQL*Loader: Release 10.2.0.1.0 - Production on 星期二 12月 14 17:32:39 2010

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

达到提交点 - 逻辑记录计数 2
达到提交点 - 逻辑记录计数 3


进入sql/plus

查看:

SQL> select * from mm;

M1         M2         N1
---------- ---------- ----------
aav        dd         abc
ddd        ss         abc
abc        xyz
avf        ddd
des        ggf


已经添加了3条记录。

 

以上是处理规则数据,下面处理不规则数据:

loader.txt 内容:

abcddd,xyz
avff,dfddd
d,ggfd


cont.ctl 内容:

load data
infile 'E:\WorkPlace\OracleWork\loader1.txt'
append
into table scott.mm(
m1 terminated by ',',
m2 terminated by ',')

打开一个cmd窗口,执行:

E:\>sqlldr scott/tiger control=E:\WorkPlace\OracleWork\cont1.ctl data=E:\WorkPlace\OracleWork\loader1.txt

SQL*Loader: Release 10.2.0.1.0 - Production on 星期二 12月 14 18:11:40 2010

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

达到提交点 - 逻辑记录计数 2
达到提交点 - 逻辑记录计数 3

 

进入sql/plus

查看:

SQL> select * from mm;

M1         M2         N1
---------- ---------- ----------
aav        dd         abc
ddd        ss         abc
abc        xyz
avf        ddd
des        ggf
abcddd     xyz
avff       dfddd
d          ggfd

已选择8行。

14. OEM配置使用


15. 数据库的备份与恢复


逻辑备份,逻辑恢复
物理备份,物理恢复

导出

F:\>exp scott/tiger@ora

Export: Release 10.2.0.1.0 - Production on 星期二 12月 14 20:47:22 2010

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
输入数组提取缓冲区大小: 4096 > 5000

 导出文件: EXPDAT.DMP > c:\mybak.dmp

(2)U(用户), 或 (3)T(表): (2)U > t

导出表数据 (yes/no): yes > yes

压缩区 (yes/no): yes > yes

已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的表通过常规路径...
要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) > e

. . 正在导出表                               E导出了           8 行

要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) >

导出成功终止, 但出现警告。


F:\>exp scott/tiger@ora

Export: Release 10.2.0.1.0 - Production on 星期二 12月 14 20:48:48 2010

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
输入数组提取缓冲区大小: 4096 > 5000

 导出文件: EXPDAT.DMP > c:\scott.dmp

(2)U(用户), 或 (3)T(表): (2)U > u

导出权限 (yes/no): yes > yes

导出表数据 (yes/no): yes > yes

压缩区 (yes/no): yes > yes

已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户 SCOTT 的外部函数库名
. 导出 PUBLIC 类型同义词
. 正在导出专用类型同义词
. 正在导出用户 SCOTT 的对象类型定义
即将导出 SCOTT 的对象...
. 正在导出数据库链接
. 正在导出序号
. 正在导出簇定义
. 即将导出 SCOTT 的表通过常规路径...
. . 正在导出表                              AA导出了          10 行
. . 正在导出表                             ABC导出了           1 行
. . 正在导出表                            AUTO导出了           7 行
. . 正在导出表                           BONUS导出了           0 行
. . 正在导出表                           BOOKS导出了           8 行
. . 正在导出表                               D导出了          11 行
. . 正在导出表                            DEPT导出了           4 行
. . 正在导出表                               E导出了           8 行
. . 正在导出表                              EE导出了           6 行
. . 正在导出表                             EMP导出了          14 行
. . 正在导出表                              MM导出了           8 行
. . 正在导出表                           MYLOG导出了           3 行
. . 正在导出表                              NN导出了           2 行
. . 正在导出表                        SALGRADE导出了           5 行
. . 正在导出表                               T导出了           2 行
. . 正在导出表                              TT导出了          13 行
. 正在导出同义词
. 正在导出视图
. 正在导出存储过程
. 正在导出运算符
. 正在导出引用完整性约束条件
. 正在导出触发器
. 正在导出索引类型
. 正在导出位图, 功能性索引和可扩展索引
. 正在导出后期表活动
. 正在导出实体化视图
. 正在导出快照日志
. 正在导出作业队列
. 正在导出刷新组和子组
. 正在导出维
. 正在导出 post-schema 过程对象和操作
. 正在导出统计信息
成功终止导出, 没有出现警告。


导入:

SQL> select * from e;

       EID ENAME      SE        DID
---------- ---------- -- ----------
        10 aaa        男         25
        15 aa         女         25
         1 赵1        女          1
         2 钱1        女          2
         3 孙1        男          3
         3 李1        男          4
         3 周1        男          5
         4 周2        男

已选择8行。

SQL> delete from e;

已删除8行。

SQL> commit;

提交完成。

SQL> select * from e;

未选定行


打开一个cmd窗口,

E:\>imp scott/tiger

Import: Release 10.2.0.1.0 - Production on 星期三 12月 15 18:53:44 2010

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

导入文件: EXPDAT.DMP> mybak.dmp

输入插入缓冲区大小 (最小为 8192) 30720>

经由常规路径由 EXPORT:V10.02.01 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
只列出导入文件的内容 (yes/no): no >

由于对象已存在, 忽略创建错误 (yes/no): no > yes

导入权限 (yes/no): yes >

导入表数据 (yes/no): yes >

导入整个导出文件 (yes/no): no > yes

. 正在将 SCOTT 的对象导入到 SCOTT
. 正在将 SCOTT 的对象导入到 SCOTT
. . 正在导入表                             "E"导入了           8 行
IMP-00017: 由于 ORACLE 错误 2264, 以下语句失败:
 "ALTER TABLE "E" ADD CONSTRAINT "CK_E_SEX" CHECK (sex = '男' or sex = '女') "
 "ENABLE NOVALIDATE"
IMP-00003: 遇到 ORACLE 错误 2264
ORA-02264: 名称已被一现有约束条件占用
即将启用约束条件...
成功终止导入, 但出现警告。

E:\>

 

回到sql窗口:

SQL> select * from e;

       EID ENAME      SE        DID
---------- ---------- -- ----------
        10 aaa        男         25
        15 aa         女         25
         1 赵1        女          1
         2 钱1        女          2
         3 孙1        男          3
         3 李1        男          4
         3 周1        男          5
         4 周2        男

已选择8行。

 


物理备份
分为:冷备份和热备份


冷备份,就是把数据库停掉,手动拷贝数据文件

热备份,要把日志模式改为 存档模式


SQL> conn sys/ora as sysdba
已连接。
SQL> archive log list
数据库日志模式             非存档模式
自动存档             禁用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     11
当前日志序列           13


第一步,改为存档模式

alter system set log_archive_start=true scope=pfile;

第二步,停掉数据库

shutdown immediate

第三步,启动数据

startup mount

表示,打开控制文件,不打开数据文件

第四步,将数据库切换到归档方式

alter database archivelog;

第五步,打开数据文件

alter database open;

第六步,查看模式

SQL> archive log list
数据库日志模式             存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     11
当前日志序列           13

第七步,

alter tablespace TRAINING begin backup;

第八步,手动拷贝

把数据库实例目录下的数据文件 TRAINING 拷贝备份

第九步,

alter tablespace TRAINING end backup;

alter system archive log current;

alter system switch logfile;

alter system switch logfile;

注意要切换两次!

完成。

 


如果数据库出现问题

select * from v$recover_file;

假如 第6号 TRAINING 丢失

alter database datafile 6 offline drop;

alter database open;

把以前手工备份的TRAINING拷贝到实例数据文件目录下

recover datafile 6;
auto

alter database datafile 6 online;

恢复完成。


备份控制文件

SQL> alter database backup controlfile to trace;

数据库已更改。

然后,到下面目录下,可以看到产生的脚本,用于以后备份;
E:\oracle\product\10.2.0\admin\ora\udump

ora_ora_1896.trc

 


恢复控制文件

把 ora_ora_1896.trc 另存为 create_ctl.sql

SQL> @create_ctl.sql


完成。

 

假定日志文件丢失

第一步:

recover database until cancle

第二步:

alter database onpen resetlogs

 

分享到:
评论
1 楼 ha00012 2012-06-14  
支持lz ,lz是从哪个网站看的视频学的oracle?

相关推荐

    【源代码】《涂抹Oracle-三思笔记之一步步学Oracle》

    《涂抹Oracle - 三思笔记之一步步学Oracle》是一本旨在深入浅出地教授Oracle数据库技术的书籍。源代码部分提供了配合书本学习的实际操作示例,帮助读者更直观地理解Oracle数据库的工作原理和操作技巧。以下是根据...

    涂抹Oracle--三思笔记

    《涂抹Oracle--三思笔记》是一份专注于Oracle数据库技术的学习资料,主要涵盖了Oracle数据库系统的基础知识、高级特性和常见问题的解决策略。这份文档可能是由一位经验丰富的IT专家撰写,旨在帮助读者深入理解和掌握...

    oracle dba学习笔记

    Oracle DBA 学习笔记 标题:Oracle DBA 学习笔记 描述:学习使用维护 Oracle 数据库数年,对认为值得记录的 Oracle 维护脚本进行记录总结,存起来,虽然今后开源是方向,但不可否认 Oracle 仍然非常有水平的,在...

    涂抹Oracle—三思笔记之一步一步学Oracle

    《涂抹Oracle—三思笔记之一步一步学Oracle》很好的学习oracle书籍,值得一看

    ORACLE-----ORACLE笔记

    4. SQL查询:SQL(结构化查询语言)是与Oracle交互的主要工具,包括SELECT语句用于查询数据,INSERT用于插入数据,UPDATE用于更新数据,DELETE用于删除数据。 5. 视图:视图是从一个或多个表中创建的虚拟表,它不...

    最全的ORACLE-SQL笔记

    【Oracle SQL笔记详解】 Oracle SQL是用于访问和操作Oracle数据库的强大工具,涵盖了各种查询、更新和管理数据的方法。以下是对笔记中提及的一些关键...学习并掌握这些知识,对于有效管理和操作Oracle数据库至关重要。

    oracle安装-卸载-初识oracle-笔记

    【Oracle安装-卸载-初识Oracle-笔记】 Oracle是一种广泛应用的关系型数据库管理系统,尤其在企业级应用中占据重要地位。对于初次接触Oracle的人来说,理解其安装、卸载过程及基本操作是至关重要的。 一、下载地址 ...

    Oracle学习笔记 PDF

    ### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...

    oracle-PROC编程学习笔记

    Oracle PROC编程学习笔记涵盖了对这一技术的深入理解和实践应用。 Oracle PROC允许程序员在C程序中嵌入PL/SQL代码,通过预编译过程将PL/SQL块转换为C函数或过程,然后在C程序中调用这些函数,从而实现高效的数据...

    oracle-SQL笔记

    总结来说,Oracle SQL的学习涵盖了数据控制(权限管理)、数据定义(对象创建与修改)和数据操纵(数据增删改查)等核心概念。对于初学者,理解和熟练掌握这些基本语句是成为合格的数据库管理员或开发者的第一步。...

    oracle-ADF开发笔记,值得学习的资料

    oracle-ADF开发笔记,值得学习的资料

    oracle-MySQL笔记整理资料 适合初学者

    学习Oracle,你需要了解以下关键点: 1. 数据库安装与配置:包括Oracle的安装过程、环境变量设置和数据库实例创建。 2. SQL基础:学习SQL DML语句(INSERT, UPDATE, DELETE)和DDL语句(CREATE, ALTER, DROP)。 3....

    Oracle 10g 学习笔记

    │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置listener.ora【避免出现ORA-12514错误】.txt │ 贴子树状态存储结构.jpg │ 贴子树状态存储结构.sql │ ├─01...

    ORACLE新体系-学习笔记.rar

    "ORACLE新体系-学习笔记.rar"显然是一份详细整理的Oracle数据库学习资料,旨在帮助用户深入理解Oracle的新特性和体系结构。这份笔记可能涵盖了从基础概念到高级技术的各个方面,为提升数据库管理技能提供了全面的...

    Oracle学习笔记-日常应用、深入管理、性能优化

    资源名称:Oracle学习笔记-日常应用、深入管理、性能优化内容简介:Oracle学习笔记-日常应用、深入管理、性能优化Oracle 11g是最具代表性的高端关系型数据库管理系统,它在世界各地的大型商务数据库应用系统中被广泛...

    oracle学习笔记(从入门到精通)

    03-基本查询语句学习笔记.txt 04-高级查询语句学习笔记.txt 05-锁和表分区学习笔记.txt 06-同义词和序列学习笔记.txt 07-视图和索引学习笔记.txt 08-PLSQL和游标结合学习笔记.txt 09-游标学习笔记.txt 10-重要的函数...

    Oracle10g学习笔记

    Oracle10g学习笔记,Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记

    Oracle-ERP开发笔记

    ### Oracle-ERP开发笔记知识点概览 #### 一、Oracle Forms基础 **1. 设置ITEM为必填项** - 在Oracle Forms中,可以为特定的ITEM(字段)设置必填属性,确保用户在提交表单之前必须填写这些字段。这通常通过属性...

Global site tag (gtag.js) - Google Analytics