ORACLE笔记

进程分两种(服务器进程,用户进程)服务器进程(系统监控进程(SMON) 进程监控进程(PMON) 数据库写入进程(DBWR)日志写入进程(LGWR) 归档进程(ARCH)检查点进程(CKPT) 恢复进程(RECO) 锁进程(LCKN)快照进程(SNPn)高度进程(Dnnn))
系统全局区(SGA)(一种用于进程之间传递信息)
由四个部份组成(数据缓冲区、字典缓冲区、日志缓冲区、SQL共享泄)
程序全局区(PGA)一种用于保存单个用户进程所需要的信息
逻辑结构(数据库、表空间、逻辑对象、数据段、数据区间、数据块)
存储结构(数据库、物理文件、物理块)
通过数据库链接访问数据表的形式:数据表名@数据库链接名/

触发器:触发器是一种特殊类型的存储过程,由一些SQL语句组成,主要用于强制性的业务规则或要求,但不返回结果
数据库之间通过net8协议连接。因此异种网络之间也可以互联互通。

D:/oracle/product/10.1.0/Db_1/BIN dgmgrl命令行管理

正常关闭:shutdown normal
立即关闭:shutdown immediate
强行关闭: shutdown abort

database closed 数据库被关闭
database dismounted 数据库被卸裁
oracle instance shut down:数据库例程被关闭
正常启动:startup normal
安装启动: startup mount
非安装启动:  startup nomount
约束启动:  startup restrict
强制启动:  startup force
带初始化参数启动:startup pfile

orapwd.exe 这个可执行文件在管理员忘记了数据服务器超级密码时特别有用,它可以更改SYS默认用户别名internal的口令,是忘记数据库服务器密码的情况下使用的最后一项措施
imp.exe:文件用于数据库的导入,主要用于逻辑恢复
exp.exe:该文件用于数据库的导出,主要用于逻辑备份。是imp.exe文件的逆过程
select distinct job from scott.emp distinct 是除去相同的记录

like 和not like 适合字符型字段的查询,%代表任意长度的字符串,_下划线代表一个任意的字符。like 'm%'代表m开头的任意长的字符串,like'm_'代表开头m的长度为2的字符串。

ORDER BY 可以指定查询结果如何排序,形式为字段名 排序关键词:asc代表升序排列,desc代表降序排列,多个排序字段之间通过逗号分割。若有where查询条件,order by 要放在where语句后面
having是检查分组后的各组是否满足条件。having语句只能配合group by 语句使用,没有group by 时不能使用having,但可以使用where
带any的嵌套查询和some的嵌套查询功能是一样的。
exists关键词用来查询子查询中是否有满足条件的记录


利用子查询语句查询结果,然后再利用insert语句将结果插入数据表,子查询和insert中的数据表即可以相同,也可以不同,但要求查询结果的字段和insert插入的数据表中字段属性完全一致

组名不能以数字开头,也不能包含任何特殊字符,如&符号.一旦创建了组就无法再更改组名

create user 创建用户
create tablespace 创建表空间
create role 创建角色
alter any role 修改角色
alter tablespace 修改表空间
alter user 修改用户
alter database 修改数据库
drop any role 删除角色
drop user删除角色
drop user 删除用户
grant any privilege 授予任何系统权限
grant any role 授予任何角色
manage tablespace管理表空间
sysdba 系统管理员
sysoper 系统操作员
常用数据对象系统权限
create any table
create any cluster
create any index
create any view
create any trigger
create any procedure
create any snapshot
create any synonym
alter any table
alter any cluster
alter any index
alter any view
alter any trigger
alter any procedure
alter any snapshot
alter any synonym
drop any table
drop any cluster
drop any index
drop any view
drop any trigger
drop any procedure
drop any snapshot
backup any table 备份表
lock any table 给表加锁
select any table 查询表
insert any table 插入表数据
delete any table 删除表数据
update any table 更新表数据
comment any table 给表加上注释

arch(归档):arch进程都对已写满的日志文件进行存档
将段分成4段,取数据段、索引段、回退段,临时段


truncate table 命令:
truncate与delete 命令的区别在于,前者快速删除记录并释放空间,不使用事务处理因此无法回滚,而delete命令可在执行删除之后,通过学习rollback撤销删除
事务只有在提交(commit)后,对数据库的更改才可以永久保持
revoke命令:要撤销已授予用户的权限
group by 子句用于将信息表划分为组,按组进行聚合运算
分析函数根据一组行来计算聚合值


oracle提供的分区方法有四种:范围分区,散列分区,复合分区,列表分表


dbca 命令调出创建和删除数据库


DEFINE定义替换变量
UNDEFINE取消定义替换变量
set verify off进行校验

TRUNCATE 清除表中所有数据 /CREATE 创建 /DROP 删除 /ALTER 修改 
input
在当前行之后插入一行新的数据
delete
del + 回车 删除当前行
del 1 3 删除第一到第三行s
delete
del + 回车 删除当前行
del 1 3 删除第一到第三行


查询序列:
user_sequences
last_number 序列将要产生的下一个号是多少;

select sequence_name,min_value,max_value,increment_by last_number from user_sequences;

伪列:NEXTVAL 引用下一个可用的序列值,不同的用户每次引用都会获得一个唯一的值。
      CURRVAL 得到当前的值(刚被领走的号)。
在CURRVAL执行前必须先通过NEXTVAL得到一个初始的值。

序列名.NEXTVAL/CURRVAL
 
序列发生间隙是正常的,保证唯一即可。


序列的修改:
   ALTER SEQUENCE sequence_name 
   increment by
  maxvalue
  cycle   
  cache;

start with 不能修改。

删除序列:

drop  SEQUENCE sequence_name;


解锁用户和锁定用户
alter user jane account unlock;
alter user jane account lock;
解过期用户
alter user jane password expire;


 set feedback off     关闭系统反馈的信息
   set heading off      列标题关闭
   set pagesize 0       不分页
   set autocommit on    设置自动提交打开
   set timing on        打开时间统计
   set time on          打开一个时钟
       
        set heading off   --关闭列的标题
        set feedback off  --关闭反馈信息
 
instance ---memory structure
            background process
database--- data file
            log file
            control file
show sga
select * from v$bgprocess;所有后台进程
select * from v$bgprocess where paddr<>'00'不等于00

查看日志文件,控制文件,数据文件
select * from V$logfile
select * from V$controlfile
select * from V$datafile
共享缓存区
show parameter shared
show parameter db_cache
show parameter log
dynamic

查看全局区
show parameter sga
共享泄用大泄
用户进程不能直接控制数据库
必须的进程:dbwn pmon ckpt lgwr smon reco
可选的进程:arcn lmon snnn qmnn lmdn cjqo pnnn lckn dnnn

ofa(optimal flexible architecture)优化灵活结构

数据字典、数据字典表属;于sys用户管理,工具、视图之类属于system管理

orapwd

orapwd fiel=:/oracle/oracle90/database/pwdfox.ora password=admin1 entries=10(用户数)

select * from V$pwfile_users
关闭数据库shutdown immediate
例程启动startup

standalone            recovery
launched                identifying
select cphbt from x$kcccp
either
central
show parameter background_dump
show parameter db_name
selcet * from V$parameter
show parameter control_file
select cphbt from x$kcccp 查询当前的Hearbeat值

获得SCN select dbms_flashback.get_system_change_number from dual;
最近接近当前值的SCN
select max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe;
explicit
implicit
oracle都有一个缺省值,如果没有给oracle自定义一个值就会自动继承缺省值

 select name,value from V$system_parameter where name like 'time%';
 alter system set timed_statistics=false scope=memory;
alter system set timed_statistics=false scope=spfile可以保存在参数文件里'
alter system set timed_statistics=false scope=both下次可以生效

desc V$system_parameter动态性能表

create pfile='d:/inibak.ora' from spfile;建立参数文件
show parameter db_create

alter database mount;修改数据库状态
select * from V$database mount

nomount---startup instance
          used to create db,create controlfile
mount-----open controlfile
          used to change log mod,renamefile,db recovery
更改语言模式alter session set nls_language=american;
startup force 强制重启
alter database open read only;
alter system enable restricted session;
grant restricted session to user
show parameter sql_trace
show parameter sql
parenthesis
 select * from dict; --查询到所有的数据字典表
devices               separate

windows系统下只设环境变量
set oracle_sid=orcl
如果是在linux要一句set oracl_home=?
创建实例
oradim

oradim -new -sid orcl foxconn -intpwd admin -pfile d:/oracle
/目录/database/initfoxconn.ora

select * from V$version
select sid,seq#,event from V$session_wait;
select tablespace_name,contents from user_tablespaces;
select Default_tablespace,TemporaryTableSpace from usere_users

alter tablespace users read only修改访问方式
alter tablespace users read write


数据字典表是只读的,数据字典就是表示物理、逻辑结构信息,
set wrap off
set liesize 200
select * from dba_users;
select * from dba_objects;
select * from V$tablespace;
destination   目的地,    oldest
Oracle实例--数据{物理结构、逻辑结构、内存结构、进程结构}
文本参数pfile
服务器参数参数spfile
控制文件
所有必须的数据文件和日志文件在控制文件中标识
数据库名存储在控制文件中
控制文件用于打开和存取数据库
数据库恢复所需的同步信息存储在控制文件中
控制文件是一个二进制文件
数据库的物理组成与控制文件中的记录不同时,系统则不能正常启动或发生down机现象
建议设置:
至少使用两个控制文件,并存放于不同磁盘
参数 Control_Files指明控制文件
控制文件的镜像可以在数据库创建或创建完成后进行
回退段操作举例
由于语句错误回退一个事务
回退一个事务、或回退事务到一个保存点(SavePoint)
由于异常进程中断而回退
在例程恢复中回退所有没未完成的事务

alter session set nls_date_language='american'
 hiredate(字段) a20(宽度)
set linesize 100

保存 save d:/aa(目录)
编辑 edit d:/aa
执行 @ d:/aa
定义变量define
取消定义变量 undefine
提示符set verify off
set verify on
可以使用insert语句向表中插入来自另一个表中的数据   create table managers as select * from scott.emp where job='CLERK';
查讯实例select instance_name,host_name,version,startup_time from v$instance;
检查数据文件路径及磁盘空间,以决定创建数据文件的位置:select file_name from dba_data_files;


一个表空间只能属于一个数据库
  每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上)
  每个数据库最少有一个表空间(SYSTEM表空间)
  建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典
  每个数据库最少有两个联机日志组,每组最少一个联机日志文件
  一个数据文件只能属于一个表空间
  一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中
  建立新的表空间需要建立新的数据文件
  数据文件被ORACLE格式化为ORACLE块,Oracle9i以前版本中,ORACLE块的大小是在第一次创建数据库时设定的,
  并且以后不能改变,要想改变,只能重建数据库
  一个段segment只能属于一个表空间,但可以属于多个数据文件
  一个区extent只能属于一个数据文件,即区间(extent)不能跨越数据文件
  PCTFREE和PCTUSED总和不能大于等于100
  单独一个事务不能跨越多个回滚段
  索引表不含ROWID值
  拥有不同大小的回滚段没有任何益处
  COMMIT后,数据不一定立即写盘(数据文件)
  一个事务即使不被提交,也会被写入到重做日志中。
  Oracle 8.0.4中,在初始安装时建立的缺省数据库,实例名为ORCL
  一个块的最大长度为16KB(有2K、4K、8K、16K)
  每个数据库最大文件数(按块大小)
  2K块        20000个文件
  4K块        40000个文件
  8K块或以上     65536个文件
  oracle server可以同时启动多个数据库
  一套操作系统上可以安装多个版本的ORACLE数据库系统(UNIX可以,NT不可以)
  一套ORACLE数据库系统中可以有多个ORACLE数据库及其相对应的实例
  每个ORACLE数据库拥有一个数据库实例(INSTANCE)(OPS除外)
  所以,一套操作系统上同时可以有多个oracle数据库实例启动

怎样查看哪些用户拥有SYSDBA、SYSOPER权限?

SQL>conn sys/change_on_install
SQL>select * from V_$PWFILE_USERS;
如何快速清空一個大表?

SQL>truncate table table_name;
 如何測試SQL語句執行所用的時間?

SQL>set timing on ;

SQL>select * from tablename;
请问如何分辨某个用户是从哪台机器登陆ORACLE的?

SELECT machine , terminal FROM V$SESSION;
怎样得到触发器、过程、函数的创建脚本?

desc user_source
SELECT * FROM user_triggers

 如何查看最大会话数?

SELECT * FROM V$PARAMETER WHERE NAME LIKE 'proc%';

SQL>
SQL> show parameter processes

怎么获取有哪些用户在使用数据库

select username from v$session;

如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ?

select sys_context('userenv','ip_address') from dual;

如何獲取錯誤信息?
 
SELECT * FROM USER_ERRORS;


表被截断truncate table xx释放表空间


用闪回恢复表记录
delete from emp
flash table emp to scn:scn
select * from (select count(*) from emp),(select count(*) from emp as of scn:scn)/
如果在闪回过程中出现ora-08189错误。要执行一个命令:alter table emp enable row movement.这个命令的作用是,允许oracle修改分配给行的rowid

数据库:物理操作系统文件或磁盘的集合
实例:一级ORACLE后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享/


共享服务器连接和专用服务器连接之间 有一个重大区别,与数据库连接的客户进程不会与共享服务器直接通信,但专用服务器则不然,客户进程会与专用服务器直接通信。之所以不能与共享服务器直接对话,原因就在于这个服务器进程是共享的。为了共享这些进程,还需要另外一种机制,通过这种机制才能与服务器进程“对话”。为此,oracle使用了一个或一级称为调度器(dispatcher也称为分派器)的进程

查讯跟踪文件目录select name,value from V$parameter where name like '%dump_dest% /
跟踪文件都是以后缀名为.trc

dba是一个角色
sysdba是一个权限,可以起动和关闭数据库,对数据库进行备份恢复操作等
system用户只能用normal身份登陆em。
sys用户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能用这两个身份,不能用normal。

所有实际的数据库都至少有3个数据文件:一个存储SYSTEM数据,一个存储SYSAUX数据,还有一个存储USER数据


查讯字符集select * from nls_database_parameters where parameter='NLS_CHARACTERSET';

oracle 启动读参数文件的顺序
spfilesid.ora->spfile.ora->initsid.ora->init.ora


函数
函数是命名了的、存储在数据库中的PL/SQL程序块。函数接受零个或多个输入参数,有一个返回值,返回值的数据类型在创建函数时定义

过程
存储过程是一个PL/SQL程序块,接受零个或多个参数作为输入(INPUT)或输出(OUTPUT)、或既作输入又作输出(INOUT),与函数不同,存储过程没有返回值,存储过程不能由SQL语句直接使用,只能通过EXECUT命令或PL/SQL程序块内部调用


包其实就是被组合在一起的相关对象的集合,当包中任何函数或存储过程被调用,包就被加载入内存中,包中的任何函数或存储过程的子程序访问速度将大大加快

触发器(trigger)
触发器与一个表或数据库事件联系在一起的,当一个触发器事件发生时,定义在表上的触发器被触发。

可以在声明变量的同时给变量强制性的加上NOT NULL约束条件,此时变量在初始化时必须赋值

LOB数据类型支持任意访问方式,LONG只支持顺序访问方式

查看状态
select status from v$instance;

PL/SQL有两种复合数据结构:记录和集合

数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL

select for update语句用于锁定行,阻止其他用户在该行上修改数据。当该行被锁定后其他用户可以用SELECT语句查询该行的数据,但不能修改或锁定该行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值