首页 > 数据库 > Oracle > [转]oracle 学习笔记
1.连接数据库:
set
oracle_sid=orcl
sqlplus /nolog
conn /as sysdba 或者conn
连接串在目录 /network/admin/tnsnames.ora中更改并保存。
使用连接命令connect username/password@连接串。
查看实例名字和状态:select instance_name,status from v$instance;
————————————————————————————————————
2.连接启动listener监听器:
$ lsnrctl status 或者
port1521到1529 监听器端口 新建立监听器时使用;
数据库服务的动态注册(默认监听器端口为1521)和静态注册;
service 就是进入数据库的一个入口;
建立注册service;alter system set service_names='oracle,test';
查看命令; show parameter service;
——————————————————————————————————————————————————————————————
3.启动database conrol 登陆em管理器
查看em端口 路径下D:/oracle/product/10.2.0/db_1/install
文件portlist.ini
4.登录SQL
——————————————————————————————————————————————————————
5.创建用户:create user yuli identified by password default tablespace
temporary
创建用户:create user name identified by password default tablespace
users temporary tablespace temp;
选择用户select * from all_users;
查看当前用户show user;
切换用户:conn 用户名/密码
给用户授予连接权限: grant connect, resource to name;
授权和撤销:grant select any table to xiao;
锁住用户账号使之无法登录:alter user juncky identified by oracle account
lock;
alter user juncky identified by oracle account unlock;
角色的建立:create role role01;
角色集:set role role01;
查看角色表:select * from session_roles;
————————————————————————————————————————————————————————————
6.创建表空间:create tablespace name datafile path size
10m;
清除表空间 ;purge tablespace tbs01;
创建表:create table name(name varchar2(20),sal number) tablespace
name;
创建带约束条件的表;create table test02(x int constraint check_x
check(x>0)
deferrable
initially immediate,y int constraint check_y check(y>0)
deferrable
initially
deferred);
启用约束条件; alter table test01 enable novalidate constraint
ck_sal;
禁用约束条件; alter table test01 disable novalidate constraint
ck_sal;
移动表到另一个表空间;alter table test01 move tablespace tbs02;
创建临时表; create global temporary table bbb on commit preserve rows as
select * from v$instance;
查看是否是临时表: select table_name,temporary from user_tables;(其中bbb是表名子,
v$instance是视图名)
向表里插入值:insert into test01(name,sal) values('tom', 1000);
更新值:update test01 set sal=2000;
删除表里的项: delete test01;
删除一个表将会删除;数据 表结构
数据库触发器 相应的索引
删除表语句;drop table name 可选子句 cascade constraints 相关的引用完整性约束条件
删除表:drop table test01 purge;
truncate 截断表;与drop的区别是不用提交
查看表内容:select * from test01;
查看表结构: desc test01;
插入新的列:alter table test01 add id number;
创建索引:
显示用户索引 desc user_indexes;
索引失效;索引重建;
通过重建不可用索引来重算指针,可使不可用索引变为有效。重建不可用索引会在新位置
重新创建索引,然后会删除不可用索引。使用Enterprise Manager 或通过SQL 命令可完成
此操作:
ALTER INDEX HR.emp_empid_pk REBUILD;
ALTER INDEX HR.emp_empid_pk REBUILD ONLINE;
ALTER INDEX HR.email REBUILD TABLESPACE USERS;
分析表:analyze table test01 compute statistics for table for all
indexed columns for all indexes;
回滚表空间:select * from v$rollname;
系统自带的表: select * from scott.emp;
——————————————————————————————————————————
7.用户会话:如果连接数据包请求的服务名有效,监听程序会衍生一个新进程来处理连接。这个新进程被称为“服务器进程”。
监听程序会连接到服务器进程,并向服务器进程传递初始化信息,其中包括用户进程的地址信息。此时,监听程序不再处理连接,所有工作都会传递到服务
器进程。服务器进程会检查用户的验证身份证明(通常为口令),如果身份证明有效,就会创建用户会话。
杀掉会话:alter system kill session '158,2704';
————————————————————————————————————————————
8.查询警告历史:desc dba_alert_history;
查询警告原因:select reason from dba_outstanding_alerts;
9.数据库归档:将数据库从非存档模式该为存档模式;
10.设置系统undo间隔时间:alter system set undo_retention=1800;
对更改时间的确认:(通过更改还原表空间来确保保留期)alter tablespace undotbs02 retention
guarantee;
————————————————————————————————————————————————————————————
11.审计:
显示当前审计:show parameter audit;
查看审计到的数目:select count(*) from dba_audit_trail;
除非专门启用了审计,否则Oracle 数据库只会捕获登录事件。通过设置初始化参数可启
用SYSDBA 和SYSOPER 用户的审计:audit_sys_operations=TRUE(默认设置为FALSE。)
修改audit_trail=DB,命令 :alter system set audit_trail=DB
scope=spfile;
更改后可以审计sys的行为:alter system set audit_sys_operations=true
scope=spfile; (把audit_sys_operations赋值true)
用
一些系统相关:
显示用户视图: desc user_views;
查看系统表;desc dba_tablespaces;
查询用户序列;select * from user_sequences;
查看数据字典; desc dict;
统计信息级别;show parameter stati;
查看数据库回收站: show recyclebin;
常用show 命令:
show parameter resource;
show parameter mem;
show parameter fast
show parameter instan;
查看检查点信息;show parameter checkpoint;
12.tnsping
hostname:1521/service name 的应用。
——————————————————————————————————————————————————————————————————
13.数据文件:
选择文件名和空间名:select file_name, tablespace_name from
dba_data_files;
show parameter create;
日志文件:select * from v$log;
切换;alter system switch logfile;
创建配置文件; create profile grace_5 limit failed_login_attempts 3
;
查看基线起始ID; select baseline_name start_snap_id,end_snap_id from
dba_hist_baseline;
将控制文件备份到跟踪文件;alter database backup controlfile to trace;
14. 块参数:show parameter cache;
15.
AWR快照集;
————————————————————————————————————————————————————————————————————
16.
package的用法:
(1).建立Package Header
CREATE OR REPLACE PACKAGE CrackPwd AUTHID CURRENT_USER
AS
END CrackPwd;
(2).建立Package Body
CREATE OR REPLACE PACKAGE BODY CrackPwd
AS
(java.lang.String,java.lang.String) return
java.lang.String';
END CrackPwd;
————————————————————————————————————————————————————————————————
***关于回滚段的说明:
查询回退管理方式:
SQL>select value from v$parameter
如果使用undo空间管理,可以查询undo表空间:
SQL>select value from v$parameter
如果使用回退管理,可以查询系统已经创建的回退段:
SQL>select segment_name,tablespace_name from
dba_rollback_segs;
17.以下是关于数据库备份:
数据库的热备份;
查询表空间名字和个数; select tablespace_name from dba_tablespaces;
查看文件名及所属表空间;
开始备份;alter tablespace tbs01 begin backup;
结束备份;alter tablespace tbs01 end backup;
查看备份;select file_name,tablespace_name from dba_data_files;
更改系统检查点;alter
system checkpoint;这时SCN号改变;
select checkpoint_change#,file# from v$datafile_header;
242
RMAN执行备份和恢复;RMAN 是Oracle Database 10g 中用于执行备份和恢复操作的一个组
件。
是可提供高级功能的命令行客户机
具有功能强大的控制能力和脚本编写语言
具有公布的、可通过接口与多数常用备份软件连接的API
可备份数据、控制文件、归档日志文件和服务器参数文件 (只备份这四种文件)
可将文件备份到磁盘或磁带image
243 备份集backupset;备份片backup piece;备份片构成备份集;compressed压缩;
image copy 镜像副本;
244 配置备份设置;启用块更改跟踪功能并指定跟踪文件的位置。
246 显示备份;list
backup;
246 sport schema;
246 backup archivelog
250 select
sql_text from v$sql where sql_text like '%test�ptno%';
251 select dbname,current_scn,flashback_on from v$database;
252
253
254
255
260 冷备份; 主要备份
control files,datafiles,redo log files,archivelog files,
spfile五种数据库文件;
执行命令 shutdown immediate 关闭命令即可。
261 启动RMAN; $ rman target / nocatalog;
rman备份数据文件; RMAN> backup format 'E:/ORACLE/PRODUCT/10.2.0
/ORADATA/YULI/SYSTEM01.DBF%U' database;
备份表空间的三种方法;
一 backup format
‘'E:/ORACLE/PRODUCT/10.2.0/ORADATA/YULI/SYSTEM01.DBF%U'
tablespace
suers;
二 backup format
‘'E:/ORACLE/PRODUCT/10.2.0/ORADATA/YULI/SYSTEM01.DBF%U'
datafile'c:/.../users.dbf';
三 backup format
‘'E:/ORACLE/PRODUCT/10.2.0/ORADATA/YULI/SYSTEM01.DBF%U'
datafile
3;(其中3是要备份的文件号)
RMAN> list
backup;
262
备份归档日志文件并联机删除;
backup archivelog all delete input; 其中(delete
input是联机删除日志文件的意思)。
备份当前控制文件;backup ccrrent controlfile;
backup format
'E:/ORACLE/PRODUCT/10.2.0/ORADATA/YULI/SYSTEM01.DBF%U' database
plus
archivelog all
delete input;
backup format
'E:/ORACLE/PRODUCT/10.2.0/ORADATA/YULI/SYSTEM01.DBF%U'
database
include current
controlfile;
263数据库方案报表;RMAN> report schema;
264 前滚(restore , recover)两者的区别 ,后滚 rollback
265 %U=%u_%p_%c
267 数据库的控制文件丢失恢复的几个步骤;
一;备份控制文件;alter database backup controlfile to
'd:/control0725.ctl';(目录
和名字任意)
二;设置检查点; alter system checkpoint;
三;异常关闭数据库;shutdown abort;
四;退出到命令行;执行复制
C:/Documents and Settings/Administrator>copy
uct/10.2.0/oradata/yuli/control01.c
C:/Documents and
Settings/Administrator>copy
uct/10.2.0/oradata/yuli/control02.c
C:/Documents and
Settings/Administrator>copy
uct/10.2.0/oradata/yuli/control03.c
(其中查路径
E:/oracle/product/10.2.0/oradata/yuli/control03.c的方法是show
parameter
control;)
五;重启数据库实例 startup mount;
六;打开数据库;alter database open;只是验证可无
七;
ORA-00279: 更改 747250 (在 07/25/2005 07:12:35 生成) 对于线程 1 是必需的
ORA-00289: 建议:
E:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/YULI/ARCHIVELOG/2005_07_25/O1_MF_1_
9_%U_.ARC
ORA-00280: 更改 747250 (用于线程 1) 在序列 #9 中
指定日志:
{=suggested | filename | AUTO | CANCEL}
E:/oracle/product/10.2.0/oradata/yuli/REDO01.LOG
已应用的日志。
完成介质恢复。
八;alter database
open resetlogs;
可能用到查看SCN号; SELECT CURRENT_SCN FROM V$DATABASE;
268
非重要数据文件丢失的恢复;
一;SQL> alter tablespace tbs01 offline immediate;
二;RMAN> restore tablespace tbs01;
三;RMAN> recover tablespace tbs01;
272 Select
count(*) from dba_objects where object_id>:sys_bin
330
420
conn
scott/tiger
update
emp
delete …
where
update where
drop table
..
truncate table …
--noarchivelog
archive log
list
show parameter db_recovery_file_dest
shutdown
immediate
startup mount
alter database
archivelog
alter database open
冷备份
control files,
datafiles , redo log files, archivelog files, spfile
shutdown
immediae
热备份
select
tablespace_name from
dba_tablespace;
select
file_name,tablespace_name from dba_data_files;
alter tablespace
tbs1 begin backup;
copy ….dbf
alter tablespace tbs1 end backup;
alter database
backup controlfile to
‘d:/….ctl’
rman
>
database
controlfile
backup
archivelog delete input
Rman
1. copy
2. backup
backup format
‘/u01/app/oracle/%U’
database;
backup format
‘/u01/app/oracle/%U’ tablespace users;
backup format ‘/u01/app/oracle/%U’ datafile
‘c:/../users.dbf’;
backup format ‘/u01/app/oracle/%U’ datafile 3;
backup
archivelog all delete input;
backup current
controlfile;
backup format
‘/u01/app/oracle/%U’ database plus archivelog all delete
input;
backup format
‘/u01/app/oracle/%U’ database include current controlfile;
%U =
%u_%p_%c
%u
%p
%c
sqlplus
>
sqlplus >
1. Backup
controlfile
2. alter system
checkpoint ;
3. shutdown
abort;
4. copy d:/control.ctl0723
copy d:/control.ctl0723
copy d:/control.ctl0723
5. startup mount;
6. recover database using backup controlfile ;
7. alter database open resetlogs;
274
闪回数据库;flashback database;
275 闪回DML table
276 show parameter recover;
以上是数据库备份。————————————————————————————————————————————————————————————
18.导入与导出:
导入imp/导出exp
权限设置:
GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
数据导出:
数据的导入
imp
1、exp
2、create user db identified by db
3、GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
4、alter user db quota unlimited on USERS
5、imp
desc
dba_ts_quotas(查找用户属于哪个表空间)
select TABLESPACE_NAME ,USERNAME from dba_ts_quotas
alter user db quota unlimited on USERS
导入导出结束。——————————————————————————————————————————————————————————————
19.数据泵导入导出:
CREATE DIRECTORY dump dir AS ‘D:/DUMP/’;
GRANT READ,
WIRTE ON DIRECTORY DumpDir TO scott;
1,导出表
Expdp
scott/tiger DIRECTORY=DumpDir DUMPFILE=tab.dmp
TABLES=dept,emp
2,导出方案
Expdp
scott/tiger DIRECTORY=DumpDir DUMPFILE=schema.dmp
SCHEMAS=system,scott
3.导出表空间
Expdp
system/manager DIRECTORY=DumpDir DUMPFILE=tablespace.dmp
TABLESPACES=user01,user02
4,导出数据库
Expdp
system/manager DIRECTORY=DumpDir DUMPFILE=full.dmp FULL=Y
1, 导入表
Impdp
scott/tiger DIRECTORY=DumpDir DUMPFILE=tab.dmp
TABLES=dept,emp
Impdp
system/manage DIRECTORY=DumpDir DUMPFILE=tab.dmp
TABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM
第一种方法表示将DEPT和EMP表导入到SCOTT方案中,第二种方法表示将DEPT和EMP表导入的SYSTEM方案中.
注意,如果要将表导入到其他方案中,必须指定REMAP SCHEMA选项.
2,导入方案
Impdp
scott/tiger DIRECTORY=DumpDir DUMPFILE=schema.dmp
SCHEMAS=scott
Impdp
system/manager DIRECTORY=DumpDir DUMPFILE=schema.dmp
SCHEMAS=scott
REMAP_SCHEMA=scott:system
3,导入表空间
Impdp
system/manager DIRECTORY=DumpDir DUMPFILE=tablespace.dmp
TABLESPACES=user01
4,导入数据库
Impdp
system/manager DIRECTORY=DumpDir DUMPFILE=full.dmp FULL=y
————————————————————————————————————————————————————————————
20.oracle的问答:
解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment
.而Delete是DML操作, 需要rollback segment 且花费较长时间.
2. 解释归档和非归档模式之间的不同和它们各自的优缺点
解答:归档模式是指你可以备份所有的数据库
transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高
3. 如何建立一个备份控制文件?
解答:Alter database backup control file to trace.
4. 给出数据库正常启动所经历的几种状态 ?
解答:
STARTUP NOMOUNT – 数据库实例启动
STARTUP
MOUNT
STARTUP
OPEN
5. 如何增加buffer cache的命中率?
解答:在数据库较繁忙时,适用buffer cache advisory 工具,查询v$db_cache_advice .
如果有必要更改,可以使用 alter system set db_cache_size 命令
6. 如何判断数据库的时区?
解答:SELECT DBTIMEZONE FROM DUAL;
7.
解答:V$SESSION / V$SESSION_WAIT
select * from
v$session
8.
解答:Redo Logs 是用于存放数据库数据改动状况的物理和逻辑结构。 可以用来修复数据库.
9.
解答:ALTER SYSTEM SWITCH LOGFILE;
10.
解答:SYSTEM tablespace.
11. 用于网络连接的2个文件?
解答: TNSNAMES.ORA and SQLNET.ORA
————————————————————————————————————————————————————————————
21.oracle基础
第一讲
1、 Oracle默认为安装在最大的剩余磁盘空间
2、 Oracle_base
Oracle_home
都写入注册表
3、
Oracle卸载
1、 先停止服务,再卸载
2、 到注册表中删除:找到 Ora开头的项进行删除
3、 重启动
4、 把磁盘上的目录和文件删除
服务器的启动项
1、 OracleServiceSiD 只有这个服务启动了,Oracle才能用(开发时手工启动,不用时停下不占用内存)
2、 OracleListerner 只有这个服务启动了,客户端才能和服务器连接上
3、 Oraclesqlplus只有这个服务启动了,才能通过WEB 页,管理Oracle
4、 OracleDBCONsoleorcl
5、 OracleDBconsoleorcl
在isqlplus和listerner同时开启时才能开始localhost:5560
控制台 C:……/franktyd> sqlplus/nolog
Sql> connect
把labs放在D:/oracle/product/10.2.0/db_1
连接
连接
外置帐户: student
内置帐户:SYS: 系统管理员帐号
Oracle 有20多个系统内置帐户,用途查用手册
用Excel、word、ACCEL的表都用Oracle数据库管理
实体关系图:一句话话中关键的名词有可能是表
Sybase.PowerDesiner.v12.0:实体关系图设计工具:然后用实体关系图连接数据库
SQL————————à 数据库————————〉数据库表
SQL:DML:Merge合并语句
把labs放在D:/oracle/product/10.2.0/db_1
用控制台方式启动sqlplus/nolog(稳定)
SQL〉connect
能够安装和进入就是管理员
SQL〉connect @orcl as sysdba
SQL〉show
sQL> @%oracle_home%/labs/student.stl
执行 环境变量
A用户------------------A模式
B用户------------------B模式
模式:表
A用户想看B用户的东西
数据结构存在数据字典里
Desc
变程好的风格:
Select --------
From--------
Where-----
Order
by--------
给每一列改名不影响表,只影响这一次显示
Isqlplus和sqlplus先连接数据库
在Isqlplus中保存脚本、加载脚本、取消操作
SQL〉edit
SQL〉save
1、SQL〉get
Psql: 进入SQLwind
SQL语句的规则:
别名是用“”
优化时要少用<>
Like 模糊查询 ‘S%’ 以S 开头的多条记录
In(set)在这里为true
Where job_id
Salary>1000 or hire_date<3月88 and
多表查询时
1、 笛卡尔乘积 A:a,b,c
2、 多表时 表名.列名
等值连接:主键与外键一一对应(不对应的筛掉)
用别名作前缀改善表的SQL 查询语句的长短
3、 非等值连接
左表都信息
4、自连接
4、 环境变量的使用
define empno=124
define (查看定义好的环境变量)
select
last_name,salary
from employees
where employee_id=&empno
6、set echo
on
col salary format L99,999,00
col salary
ttitle 'work
salary report2008'
btitle 'author: frank
river'
tti :显示ttitle的状态
tti off/on
6、 控制台命令
/ 或run
List
Edit(ed) 回车后,启动记事本,afiedt.buf 缓存文件,在内容中不能有;
Save
Get
Save
@ d:/bb.sql 把文件加载到内存中,自动执行,一些常见的命令写入脚本来执行
spool 显示当前的“假脱机”状态
spool
off 停止输出
SQL> show all
--查看所有68个系统变量值
SQL> show user --显示当前连接用户
SQL> show error --显示错误
7、 isqlplus 在连接数据库时,需要监听服务,这些监听服务经常会丢失监听,但是此工具可视化
sqlplus 直接连接到数据库,不需要监听服务,所以比较稳定,建议使用此开发工具
pl/plus 不是开源的软件,在学习的时候可以用,开发时没有购买不要用
8、 net 服务管理:tcp/ip
然后重启动,监听服务和ISQLPLUS,刷新就行,再使用ISQLPLUS
Tnsnames.ora
Listener.ora
Windosxp 不稳定,测试环境用windows2003
几个有用的网站名
Metaliak.oracle.com
国内咨询网站:
www.csdn.net(中国人网站)
9、 自连接
SELECT worker.last_name || ' works for ' ||
manager.last_name
FROM
WHERE
两个表没有条件语句就是笛卡尔乘积
FROM
CROSS JOIN 交叉连接
SELECT e.last_name, e.department_id, d.department_name
FROM
交叉连接和笛卡尔乘积会得到同样的结果
对于自然连接的连接条件,基本上是带有相同名字的所有列的等值连接
为了指定任意条件,或者指定要连接的列,可以使用ON
子句
如果一些列有相同的名字,但数据类型不匹配,NATURAL
JOIN(名字和类型同)子句能够用USING(名字同类型可以不同) 子句修改以指定将被用于一个等值连接的列
当有多个列匹配时,用USING 子句匹配唯一的列
在引用列不要使用表名或者别名
NATURAL JOIN 和USING子句是相互排斥的
10、
一个函数的返回结果被另一个函数使用
Dual
Select
Trunk
11、
alter
alter session set nls_date_format=’YYYY-MM-DD HH24:MI:SS’
12、
在oracle
int--ànumber(包括精度类型,双精度,单精度,整数)
Varchar-àvarchar2
在给数据库字段赋值时可以用,查询时可以转换用
做开发时不必要在程序里转换和计算,在SQL做更简单
嵌套的层数没有要求
Case 和decode 函数,都能实现多分枝功能
13、
分组函数
group by 放在where后面
Having一定在group by 之后,having 必须是聚合函数,在group by
查询之后,在having上不能使用别名,having是在分组之后的结果集中,在表中跟踪不到
Where 语法表达式要求到表中能搜索到,所以不要求有聚合函数,where 出现的列在表中能找到
14、
子查询先于主查询,把子查询的结果放在主查询里来用
子查询放在小括号中间,优先级高于主查询
子查询可以出现在条件运算符,也可以出现在having运算符当中
子查询可以出现在:where
任何值和空值比较都得空值
Any: 任何一个
All: 所有的
Null: 属于空集,不属于表中任何有值的集合
15、
set verify on
一个数据库是Oracle用于保存数据的一系列物理结构和逻辑结构。简单地说,一个Oracle数据库是磁盘上的一堆文件;为了启动数据库即访问这堆文件,需要在内存中创建它的一个实例,然后由实例加载并打开数据库,实例就是内存中的一堆进程。用户连接数据库时,实际上是连接到实例,然后由实例负责与数据库通信,再将处理结果返回给用户。所以,Oracle中一个数据库至少有一个实例与之对应,但一个数据库可以对应多个实例,被多个实例访问。
这样理解,
实例=例程:内存结构