搜档网
当前位置:搜档网 › Oracle学习笔记

Oracle学习笔记

Oracle学习笔记
Oracle学习笔记

Oraclae 学习笔记----梁忠昭

---用户

Oracle 安装成功后一般默认生成三个用户

Sys 用户:超级管理员,拥有最高权限,它的角色是dba 角色,密码:change_on_install System 用户:系统管理员,角色是dbaoper ,密码:manager

Scott 用户:普通用户,密码:tiger;

---创建用户 用户名:liang 密码:liang

Creaet user liang identified by liang ;

注意:创建的新用户是没有任何权限

---查看当前登录用户

Show user;

----修改用户名liang 密码为:zhong

alter user liang identified by zhong;

注意:当前登录的是dba 身份才可以修改别的用户密码;

---删除用户liang

Drop user liang ; 【cascade 】

注意:删除用户一般用dba 身份删除,如果是一般用户就需要有删除用户权限才可以删除用户;注意:如果是该用户已经创建了表,则必须删除其后面加个参数cascade ,删除时把该用户所创建的表同时删除。

权限

--给用户liang 赋连接数据库权限(系统权限)

grant connect to liang;

--给用户liang 赋查询student 表的查询和修改权限(对象权限)

grant select ,update on student to liang;【with grant option 】【with admin option 】

注意:当希望用户liang 把此对象权限继续赋给其它人时,在后面追加with grant option; 希望liang 把系统权限继续赋给其他人时后面追加with grant option;但角色不可以

--收回用户liang 对student 表的所有权限

revoke all on student from liang ;

注意:当收回liang

的对象限的同时,把以前该用户对其它用户所赋的对象权限同时也收回。 系统权限不会收回

--用户锁定

---指定用户liang登录最多可以输入密码3次,锁定时间为2天

1,创建lock_account 配置文件

create profile lock_account limit failed_login_attempts 3 password_lock_time 2;

2,给用户liang指定该文件

alter user liang profile lock_account;

--给用户解锁

--给用户liang解锁

alter user liang account unlock;

--终止口令

--给用户liang创建一个profile文件要求该用户每隔10天修改自己的密码,宽恕期为2天;

1,创建文件

create profile liang_profile limit password_life_time10 password_grace_time 2;

2,给用户指定文件

alter user liang profile liang_profile;

--删除profile文件

drop profile liang_profile ;

--文件操作指令

1,start 和@ (运行sql脚本)

@ d:\a.sql 或 Start d:\a.sql

2,edit (编辑指定sql脚本)

Edit d:\a.sql

-----表空间管理

-- 创建 create tablespace 空间名 datafile 'd:\test\data01.dbf' size 20m uniform size 128k

-- 使用 create table 表名(字段..) tablespace 空间名

--表空间脱机 alter tablespace 表空间名 offline

-- 表空间联机 alter tablespace 表空间名 online

- 只读[可读写]表空间 alter tablespace 表空间名 read only[writer]

-- 查询表空间下的所有表select * from all_tables where tablespace_name='表空间名'

-- 查询表属于哪表空间select tablespace_name,table_name from user_tables where table_name='表名'[表名大写]

-- 删除表空间 drop tablespace 表空间名 including contents and datafiles -- 扩展表空间 1 alter tablespace 表空间名 add datafile 'd:\sp002.dbf' size 300m

2 alter tablespace 表空间名 'd:\sp001.dbf' resize 50m

3 alter tablespace sp001 'd:\sp001.dbf' autoextend on next 10m maxsize 500m

-- 移动数据文件

-- 查询数据文件属于哪表空间 select tablespace_name from dba_data_file where file_name='d:\sp001.dbf'

-- 使表空间脱机 alter tablespace 表空间名 offline

-- 物理移动数据文件到指定位置 host move d:\sp001.dbf c:\sp001.dbf

-- 逻辑移动 alter tablespace 表空间名 rename datafile

'd:\sp001.dbf' to 'c:\sp001.dbf'

-- 使表空间联机 alter tablespace 表空间名 online

---表名和列名命名规则

1,必须以字母开头

2,长度不能超过30个字符

3,不能使用关键字

4,只能使用A-Z,a-z,0-9,$,#等

---创建表

Create table student1(

userid int primary key ,

userName varchar2(20) not null,

pwd varchar(20) not null);

---删除表

drop table student1;

---给student1表添加个新字段

alter table student1 add (classid number(4));

--修改字段长度

alter table student1 modify (classid number(5));

--删除表中的字段

alter table student1 drop column userName

--修改表的名字

rename student1 to student

--查看表结构

Desc student1;

---格式化日期

Alter session set nls_date_format=‘yyyy-mm-dd‘

注意:在没修改之前默认格式为‘dd-mm(月)-yyyy

---删除数据

1,Delete from student ;

2,truncate table student;

3,drop table student;

注意:delete 删除写日志,而truncate 不记录日志,drop删除表结构;

--添加回滚点

Savepoint aa;

--回滚日志

Rollback to aa;

---打开时间

set timing on ;

---查询时消除重复行

Select distinct userid,userName from student;

--查询时连接字符串

select userName || 'is a '|| userid from student;

--查询使用别名排序

Select userName ―liang‖,userid from student order by―liang‖;

注意:要使用别名可以不加as,但给表或视图加别名,坚决不能加as

--分页查询

Select * from(Selct a1.*,rownum rn from (Select* from student)a1where rownum<=10) where rn>=3;

---只读事物

Set transaction read only;

注意:只读事务一旦设定,在此时间点后发生的所有操作将会看不见

--字符函数

Lower(char)将字符转换为小写

Upper(char)将字符串转换为大写

Length(char)返回字符串的长度

Substr(char,m,n)截取字符串

Replace(字段名,被替换字符,替换字符)

--数字函数

Round(字段,小数点位数)计算四舍五入

Trunc(字段,小数点位数)截取数字

Floor(字段)向下取整数)

Ceil(字段)向上取证

Mod(10,2)求余数

Abs(n)返回n的绝对值

Log(m,n)返回对数

Power(m,n)返回m的n次幂

--日期函数、

Sysdate返回系统时间

Add_months(m,n)加上月份

Last_day(d)返回指定日期所在的月份的最后一天

--日期格式

Yy:两位数字的年份2010 》 10

Yyyy:四位年份

Mm:两位数字的月份

Dd:两位数字的天

Hh24:24进制的小时

Hh12:12进制的小时

Mi:分钟

Ss:秒

--转换函数

--To_char()

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

---系统函数

Sys_context

1,terminal:当前客户所对应的终端表示符

2,launage:语言

3,db_name:当前数据库名称:

4,nls_date_format:当前会话的日期格式

5,session_user:当前会话对应数据库用户名;

6,current_schema:当前会话客户所对应的默认方案名

7,host返回数据库所对应的主机名称

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

---数据库管理

--导出表

1,找到bin文件下的exp.exe文件

2,进入cmd控制界面,进入bin文件下

3 ,exp userid=liang/liang@orcl tables=(sys.hhh) file=E:\hhh.dmp[rows=n][direct=y]

注意:如果要导出表的结构只需在后面加上rows=n就可以,如果导出的表异常的大,想要快速导出数据在后面追加direct=y;

---导出方案

Exp userid=liang/liang@orcl owner=Scott file=E:\Scott.dmp

注意:如果要导出其它方案,则用户必须具有DBA权限或者是exp_full_database的权限

--导出数据库

Exp userid=liang/liang@orcl full=y inctype=complete file=E:\liang.dmp

---导入表

---导入自己的表

Imp userid=liang/liang@orcl tables=(sys.hhh) file=d:\liang.dmp

---导入表到其它用户

Imp userid=liang/liang@orcl tables=(sys.hhh) file=d:\liang.dmp touser=scott

--导入表结构

Imp userid=liang/liang@orcl tables=(sys.hhh) file=d:\liang.dmp rows=n ----导入数据

Imp userid=liang/liang@orcl tables=(sys.hhh) file=d:\liang.dmp ignore=y

---导入方案

Imp userid=liang/liang file=d:\xx.dmp

--导入其它方案

Imp userid=liang/liang file=d:\xx.dmp fromuser=sys touser=liang

注意:要求该用户必须有dba权限

---导入数据库

Imp userid=liang/liang full=y file=d:\xx.dmp

--查询当前用户所拥有的表(table_names )

select table_name from user_tables;

---查询当前用户可以访问的所有表(all_tables)

select table_name from all_tables;

--查询dba方案所拥有的表(dba_tables)

select table_name from dba_tables;

注意:要求用户必须有dba权限或select any table系统权限

--通过查询dba_usres可以显示所有用户的详细信息

--通过查询数据字典视图dba_sys_privs,可以显示用户所具有的系统权限

--通过查询数据字典视图dba_tab_privs可以显示用户所对应的对象权限

--通过查询数据字典dba_col_privs可以显示用户具有的列权限

--通过查询数据库字典视图dba_role_privs可以显示用户所具有的角色

---查询Oracle所有系统权限

Select * from system_privilege_map ;

--查询所有角色

Select * from dba_roles;

--查询所有对象的权限

select distinct privilege from dba_tab_privs;

--查询所有表空间

select tablespace_name from dba_tablespaces;

---查询一个角色所具有的系统权限

Select * from dba_sys_privs where grantee=‘DBA‘

Select * from role_sys_privs where grantee=‘DBA‘

注意:grantee=‘?‘这里角色一定要大写

--查询一个角色所具有的对象权限

Select * from dba_tab_privs where grantee=‘DBA‘

Select * from role_tab_privs where grantee=‘DBA‘

--查询一个用户具有多少个角色

Select * from dba_role_privs where grantee=‘LIANG

--显示当前数据库的全程

Select * from global_name‘

---创建表空间

create tablespace sp1 datafile 'E:\sp1.dbf' size 3m uniform size 128k;

--删除表空间

drop tablespace sp1 【including contents and datafiles】;

注意:如果后面加上including contents and datafiles这句话则会完全删除表空间已

及表空间的所有文件

--使表空间脱机

Alter tablespace sp1 offline;

--使表空间联机

Alter tablespace sp1 online;

--设表空间为只读

Alter tablespace sp1 read only;

--设表空间为可读可写

Alter tablespace sp1 read write;

--查询表空间包括所有的表

select * from all_tables where tablespace_name='sp1';

--查询该表属于那个表空间

Select tablespace_name ,table_name from user_tables where table_name=‘HHH‘

注意:table_name名字一定要大写

----扩展表空间一共有三种方案

方案一:增加数据文件

Alter tablespace sp1 a dd datafile?d:\sp2.dbf‘ size=30m;

方案2:增加数据文件

Alter tablespace sp1 ?d:\sp1.dbf‘ resize 20m;

方案3:设置文件的自动增长

Alger tablespace sp1 ?d:\sp1.dbf‘ autoextend on next 10m maxsize=300m;

---移动数据文件

1,确定文件所在的表空间

Select tablespace_name from dba_data_files where file_name =‘d:\sp1.dbf‘;

2,使表空间脱机

Alter tablespace sp1 offline;

3,使用命令移动数据文件到指定的目标文件中

Host move d:\sp1.dbf e:\sp1.dbf

4,执行alter tablespace命令对数据库进行逻辑修改

Alger tablespace sp1 rename datafile?d:\sp1.dbf‘ to?e:\sp1.dbf‘

5,使表空间联机

Alger tablespace sp1 online

--建表加约束

create table goods (goodsid char(8) primary key ,

2 goodsName varchar2(30),

3 unitprice number(10,2) check(unitprice>0),

4 category varchar2(8) ,

5 provider varchar2(30));

create table customer (customerid char(8) primary key ,

2 name varchar(20) not null,

3 address varchar2(50),

4 email varchar2(25) unique,

5 sex char(2) default '男' check (sex in ('男','女')),

6 carid char(10));

create table purchase (customerId char(8) references

customer(customerid),

2 goodsid char(8) references goods(goodsid),

3 nums number(10) check (nums between 1 and 30));

---增加约束不能为空

Alter table goods modify goodsName not null;

注意:增加非空约束必须用modify

---增加身份证不能重复

Alter table customer add constraint liang unique(cardid);

--增加客户只能是西安,咸阳

Alter table customer add constraint zhong check (address in (?西安‘,‘咸阳‘))

---删除约束

Alter table 表名 drop constraint 约束名称;

注意:删除主键约束时候,必须在后面加上cascade

--通过查询数据字典视图user_constraints,可以显示当前用户所有的约束信息

Select constraint_name ,constraint_type ,status ,validated from user_constraints where table_name =‘表名‘;

--通过查询user_cons_columns ,可以显示约束所对应的表的信息

Select column_name ,position from user_cons_columns where constraint_name =‘约束名‘;

---创建索引

Create index 索引名 on 表名(列名);

注意:创建复合索引可以在列名后多加几列,但是最好把能筛选数据多的列放在后面,因为数据库是从后往前筛选数据

---索引创建的原则

1,在大表上建立索引

2,在where条件或链接条件经常用的列上建立索引

2,索引的层次不要超过4层

---索引的缺点

1,建立索引系统要占用大约为表的1.2陪的硬盘空间来保存索引

2,更新数据时系统要有额外的时间来更新索引

---通过表名查询该表下的所有索引

Select index_name,index_type from user_indexes where table_name=‘表名‘;

---通过列名显示该列的索引信息

Select table_name,column_name from user_ind_columns where index_name =‘列名‘

---预定义角色

Connect,resource,dba

Connect具有一般开发人的大部分权限

Connect:1,alter session

2,create cluster

3,create database link

4,create session

5,create table

6,create view

7,create sequence

Resource 角色具有开发人员所需要的其他角色例如建立存储过程和触发器等:

1,create cluster

2,create indextype

3,create table

4,create sequence

5,create type

6,create procedure

7,create trigger

---自定义角色

1,创建自定义角色(不验证)

Create role 角色名 not identified;

2,建立角色(数据库验证)

Create role 角色名 identified by 命令

---给角色赋权限

Grant create session to 角色名 with admin option;

--把角色赋给用户

Grant 角色名 to 用户名【with admin option】;

注意:当后面追加with admin option 时,说明该用户可以把角色继续赋给下一个用户

---删除角色

Drop role 角色名

---显示所有角色

Select * from dba_roles;

---显示角色具有的系统权限

Select privilege,admin_option from role_sys_privs where role=‘角色名‘;

--显示当前登录用户的角色

Select granted_role,default_role from dba_role_privs where

grantee=‘LIANG‘;

注意:用户名大写

---创建存储过程

Create [or replace] procedure 名字 is

Begin

End ;

注意:如果数据库已经存在与你同名的存储过程可以在前面加上or relace 替换掉以前的存储过程,如果没有就会正常创建

---查看错误信息

Show error;

---调用过程

1,Exec 存储过程名(参数值1,参数值2,…)

2,call 存储过程名(参数值1,参数值2,…)

Pl/sql编程规范

1,如果定义变量建议用v_做前缀

2,如果定义常量时建议用c_做前缀

3,如果定义游标时建议用_cursor作为后缀

3,当定义例外时用e_做前缀

---块

1,定义部分declear –定义常量,变量,游标例外

2,执行部分begin 执行的sql语句

3,例外处理部分Exception处理运行错误、

End;

---打开/关闭输出

set serveroutput on/off;

---输出信息

dbms_output.put_line('sd');

----编写过程

declare Ename varchar2(30) ;

2 begin

3 select username into Ename from wwe where id=&nn;

4 dbms_output.put_line('用户名:'||Ename);

exception

6 when no_data_found then dbms_output.put_line('输入参数不存在!');

5 end;

6 /

注意:“&”表示在控制台输入

---编写一个完整的存储过程

create procedure sd (wid number,wpwd varchar2) is

2 begin

3 update wwe set pwd=wpwd where id=wid;

4 end;

---在Java中调用存储过程

正常下多加prepareStatement(―{exec pro(?,?)}‖);

-----创建函数

create function wwe_dx(wwe_id number) return varchar2is wwe_name varchar2(6);

begin

select userName into wwe_name from wwe where id=wwe_id;

return wwe_name;

end;

---函数调用

var sd varchar2(6)

SQL> call wwe_dx(1) into :sd;

SQL> print sd;

---在Java中调用函数

Select wwe_dx(1) from dual;

---声明创建包

Create package ss_page is

Procedure update_sd(wwe_id number,wwe_name varchar2);

Function wwe_sd(id number) return varchar2;

End;

----创建包体

Create package body ss_page is

Procedure update_sd(wwe_id number,wwe_name varchar2)

Is

Begin

……

End;

Function wwe_sd(id number) return varchar2 is wwe_name varchar2;

Begin

……

End;

End;

---调用包里的函数或存储过程只需在函数或存储过程名前加个包名

---在pl\sql中的变量

1,标量类型(scalar)

2,复合类型(composite)

3,参照类型(reference)

----标量定义

1,定义个可编的字符串 v_name varchar2(10);

2,定义个小数 v_sal number(6,2);

3,定义一个小数并给一个初始值 v_number number(6,3):=1

4,定义个日期类型 v_date date;

5,定义个布尔类型,不能为空,初始值为false v_bool Boolean not null default false;

注意:pl/sql肤质符号为(:=),定义类型最好用wwe.id%type,意思是和表wwe表中的id 字段类型保持一致

----定义复合类型

declare

type wwe_type is record(wwe_id wwe.id%type,wwe_name https://www.sodocs.net/doc/9516602342.html,ername%type); ww wwe_type;

begin

select id,userName into ww from wwe where id=&no;

dbms_output.put_line(ww.wwe_name);

end;

----游标

declare

--定义游标类型sp

type sp is ref cursor;

---定义个游标变量

test sp;

----定义变量

v_id wwe.id%type;

v_name https://www.sodocs.net/doc/9516602342.html,ername%type;

begin

open test for select id,username from wwe;

---循环取出

loop

fetch test into v_id,v_name;

---判断是否为空,如果为空将退出

exit when test%notfound;

---输出

dbms_output.put_line('id'||v_id||'名字'||v_name);

end loop;

--关闭游标

close test;

end;

---条件分支语句

1,if—then,

2,if—then---else,

3,if—then—elsif---else

例子: create or replace procedure sd(wwe_name varchar2) is

V_name https://www.sodocs.net/doc/9516602342.html,ername%type;

Begin

Select pwd into v_name from wwe where username=wwe_name;

If length(pwd)<6 then update wwe set pwd =‘000000‘ where username =wwe_name;

End if ;

End;

----循环语句

Loop 开始,end loop;结尾

While 条件loop …… end loop;

---for 循环

Begin

For I in reverse 1..10 loop

Insert into wwe values(2,‘sd‘,‘3sdf‘);

End loop;

End;

--goto语句

<<标号>> 表示在任何时候都任意跳到标号位置

----创建返回结构集的存储过程

1,创建一个包

Create or replace package testPackage as

Type test_cursor is ref cursor;

End testPackage ;

2,创建存储过程

Create or replace procedure liang

(spNo in number,p_cursor out testPackage.test_cursor) is Begin

Open p_cursor for select * from emp where depton =spNo; End;

3,在Java中调用

------分页存储过程

----编写分页存储过程

----1,创建一个包来接受返回的结果集

create or replace package testPackage as type test_type is ref cursor;

end testPackage;

---2,开始编写存储过程

create or replace procedure fenye

(

myPageSize in number ,

PageNow in number,

myrows out number,

myPageCount out number,

p_cursor out testPackage.test_type

)is

-----定义部分

v_sql varchar2(1000);--定义sql语句

v_begin number:=(pageNow-1)*myPageSize+1; v_end number:=pageNow*myPageSize;

begin

----执行部分

v_sql:='select * from (select abc.*,rownum we from (select * from accp) abc where rownum<'||v_end||')where we>'||v_begin;

---把游标和sql关联

open p_cursor for v_sql;

----计算myrows和myPageCount

v_sql:='select count(*) from accp';

----执行sql语句,把返回值赋给myrows

execute immediate v_sql into myrows;

---计算myPageCount

if mod(myrows,myPageSize)=0then

myPageCount:=myrows/myPageSize;

else

myPageCount:=myrows/myPageSize+1;

close p_curso;--关闭游标

end if ;

end ;

-----定义例外

declare

v_name https://www.sodocs.net/doc/9516602342.html,ername%type;

begin

select username into v_name from wwe where id=&sd;

dbms_output.put_line('名字:'||v_name); exception

when no_data_found then

dbms_output.put_line('找不到该姓名!'); end;

---预定义例外

---case_no_found

Oracle 常见函数(一)——数值函数

Oracle常见数值函数 ----***特别说明***: x 可以是纯的数值,也可以是数值型表达式/* ABS(x)返回x绝对值 eg. */ selectabs(100),abs(-100) from dual; /* sign(x)判断x的正负,正数返回1,负数返回-1,0返回0; eg. */ selectsign(100),sign(-100),sign(0) from dual;

/* round(x[,n])对x进行四舍五入,保留n位小数,其中n采用其整数部分; 没有n时默认四舍五入到整数位,n为负数时,四舍五入保留小数点左边n位(补零), eg. */ selectround(5555.6666, 2.1), round(5555.6666, -2.6), round(5555.6666) from dual; /* trunc(x)对x进行直接截取,保留n位小数,其中n采用其整数部分; 没有n时默认截取到整数位,n为负数时,截取保留小数点左边n位(补零), eg. */ selecttrunc(5555.66666,2.1), trunc(5555.66666,-2.6), trunc(5555.033333) from dual; /* ceil(x)对x进行向上取整,返回不小于x的最小整数(可以是整数x本身)。

eg. */ selectceil(3.1), ceil(2.8+1.3), ceil(0) from dual; /* floor(x)对x进行向下取整,返回不大于x的最大整数(可以是整数x本身)。eg. */ selectfloor(3.1), floor(2.8+1.3), floor(0) from dual; /* mod(x,y)求x除以y的余数,x,y为数字型表达式。 eg. */ selectmod(23,8),mod(24,8) from dual;

oracle中常用函数大全

oracle中常用函数大全 1、数值型常用函数 函数返回值样例显示 ceil(n) 大于或等于数值n的最小整数select ceil(10.6) from dual; 11 floor(n) 小于等于数值n的最大整数select ceil(10.6) from dual; 10 mod(m,n) m除以n的余数,若n=0,则返回m select mod(7,5) from dual; 2 power(m,n) m的n次方select power(3,2) from dual; 9 round(n,m) 将n四舍五入,保留小数点后m位select round(1234.5678,2) from dual; 1234.57 sign(n) 若n=0,则返回0,否则,n>0,则返回1,n<0,则返回-1 select sign(12) from dual; 1 sqrt(n) n的平方根select sqrt(25) from dual ; 5 2、常用字符函数 initcap(char) 把每个字符串的第一个字符换成大写select initicap('mr.ecop') from dual; Mr.Ecop lower(char) 整个字符串换成小写select lower('MR.ecop') from dual; mr.ecop replace(char,str1,str2) 字符串中所有str1换成str2 select replace('Scott','s','Boy') from dual; Boycott substr(char,m,n) 取出从m字符开始的n个字符的子串select substr('ABCDEF',2,2) from dual; CD length(char) 求字符串的长度select length('ACD') from dual; 3 || 并置运算符select 'ABCD'||'EFGH' from dual; ABCDEFGH 3、日期型函数 sysdate当前日期和时间select sysdate from dual;

配置和自动启动Oracle的数据库和监听

配置和自动启动Oracle的数据库和监听(lsnrctl) 1.设置主机名称 [root@myc ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=myc 2.设置主机名称与IP地址的对应 [root@myc ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.2.16 myc 3.修改:/u01/app/oracle/network/admin/listener.ora [oracle@myc admin]$ cat listener.ora # listener.ora Network Configuration File: /u01/app/oracle/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myc)(PORT = 1521)) ) ) ADR_BASE_LISTENER = /u01/app 4.修改:/u01/app/oracle/network/admin/tnsnames.ora [oracle@myc admin]$ cat tnsnames.ora # tnsnames.ora Network Configuration File: /u01/app/oracle/network/admin/tnsnames.ora # Generated by Oracle configuration tools. ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = myc) ) ) 5.lsnrctl 的常用方法

ORACLE 内置函数大全

SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2.CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C -- - 赵 A 3.CONCAT 连接两个字符串; SQL> select concat('010-','')||'转23' 高乾竞电话from dual; 高乾竞电话 ---------------- 010-转23 4.INITCAP 返回字符串并将字符串的第一个字母变为大写; SQL> select initcap('smith') upp from dual; UPP ----- Smith 5.INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置,默认为1 SQL> select instr('oracle traning','ra',1,2) instring from dual; INSTRING --------- 9 6.LENGTH 返回字符串的长度; SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL

oracle12.2.0.3 监听白名单配置

oracle12.2.0.3 监听白名单配置 出于提高数据安全性等目地,有时需要对 oracle的进行访问限制,允许某些IP连接数据库或拒绝某些IP访问数据库。当然使用防火墙(iptables)也能达到限制的目地,但是从监听端口变更限制仍可生效、只针对oracle自己不和其他端口的限制相混杂和不需要root账号这几方面来说,通过配置sqlnet.ora文件来进行访问限制可能是一种更好的选择。 1.配置sqlnet.ora文件 进入$ORACLE_HOME/network/admin(一般对应的真实路径形如/u01/app/oracle19c/pr oduct/19.2.0/db_1/network/admin)查看是否存在sqlnet.ora文件及是否已配置tcp.val idnode_checking、tcp.invited_nodes、tcp.excluded_nodes项。如果文件存在且已有这几项,则在此基础上修改这几项;如果文件存在但这几项不存在,则在最后追加;如果文件不存在则直接新建。 oracle默认是没有的,我们以没有为例新建该文件,并写入以下内容: tcp.validnode_checking=yes tcp.invited_nodes=(192.168.220.128,127.0.0.1) tcp.excluded_nodes=(192.168.220.1) tcp.validnode_checking:此项是启用IP合法检查,此项是必须配置的,如果不启用其它两项配置了也无效。 tcp.invited_nodes:此项是允许连接数据库的IP地址,多个地址用逗号(半角)隔开,如果启用此项,一定要配上本地地址不然监听无法启动。 tcp.excluded_nodes:此项是不允许连接数据库的IP地址,多个地址用逗号(半角)隔开,如果与tcp.invited_nodes有相同IP,则还是允许该IP访问数据库。 tcp.invited_nodes和tcp.excluded_nodes其实可以只配置一项,当只配tcp.invited_no des时就是白名单,在此项列表中的所有IP允许访问数据库,所有不在此项列表中的所有I P拒绝访问数据库。当只配置tcp.excluded_nodes时,在此项列表中的所有IP拒绝访问数据库,所有不在此项列表中的所有IP允许访问数据库。 2.重新加载使配置生效 如果之前不存在sqlnet.ora则需要重启监听,如果之前存在sqlnet.ora则只需要重新加载配置即可。 重启和reload的区别,应该是监听完全停上和不完全停止的区别,使用stop/start 当前所有已连接的会话会强制断开,reload不会断开已有会话。 重启监听(业务会中断,在不影响业务情况下重启): lsnrctl stop

Oracle常用函数及使用案例(珍藏版)

Oracle常用函数及使用案例(珍藏版) 一:sql函数: lower(char):将字符串转化为小写的格式。 upper(char):将字符串转化为大写的格式。 length(char):返回字符串的长度。 substr(char,m,n):取字符串的字串。 案例1.将所有员工的名字按小写的方式显示 select lower(ename),sal from emp; 案例2.将所有员工的名字按大写的方式显示。 select upper(ename),sal from emp; 案例3.显示正好为五个字符的的员工的姓名。 select * from emp where length(ename)=5; 案例4.显示所有员工姓名的前三个字符。 select substr(ename,1,3) from emp;//从名字的第一个字符开始取,向后取三个字符。 案例5.以首字母为大写的方式显示所有员工的姓名。 (1)首字母大写:select upper(substr(ename,1,1)) from emp; (2)完成后面字母小写。select lower(substr(ename,2,length(ename)-1)) from emp; (3)合并select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp; 案例6.以首字母为小写的方式显示所有员工的姓名。(需要有较高的灵活度,细心分析和清晰思路) (1)首字母小写:select upper(substr(ename,1,1)) from emp; (2)完成后面字母大写。select lower(substr(ename,2,length(ename)-1)) from emp; (3)合并select lower(substr(ename,1,1))||upper(substr(ename,2,length(ename)-1)) from emp; 案例7.函数(替换):replace(char1,search_string,replace_string); 显示所有员工的姓名,用“我要替换A”替代所有“A”。 select replace(ename,'A','我是老鼠')from emp; 案例8.以首字母为小写的方式显示所有员工的姓名。 select replace(ename,substr(ename,1,1),lower(substr(ename,1,1)))from emp; 案例9.以首字母为大写的方式显示所有员工的姓名。 Select replace(ename,substr(ename,2,length(ename)-1),lower(substr(ename,2,length(ename) -1)))from emp; 二:数学函数:(在财务中用的比较多) ronud(sal)用于四舍五默认取整; ronud(sal,1)用于四舍五留一位小数。 trunc(sal)取整,忽略小数。截去小数部分。 trunc(sal,1)截取;小数点留一位,之后的右边的省去。 trunc(sal,-1)截取;只留整数,个位数取零。 floor(sal)向下最接近取整;比如1.1值为1.

如何配制listener.ora

listener.ora 是oracle服务器端的网络配置文件,oracle 根据它来配置监听服务。listener.ora可配置多个监听器,每个监听器的文件组成是: SID_LIST_ORCLLISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = d:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = testDB) (ORACLE_HOME = d:\oracle\product\10.2.0\db_1) (SID_NAME = testDB) ) ) ORCLLISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 20100908-2130)(PORT = 1521)) ) 即由2部分组成: XXXLiSTENER=(DESCRIPTION=xxx):指定一个监听器所对应的服务器地址和端口号

SID_LIST_XXXLISTENER=((SID_LIST =xxx):指定XXXLISTENER所服务的数据库。即XXXLISTENER 将对请求这些数据库(SID)的连接提供监听接待服务。 listener.ora可配置多个监听和多个监听对应数据库(SID). ORCLLISTENER所监听的数据库列表 SID_LIST_ORCLLISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = d:\oracle\product\10.2.0\db_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = testDB) (ORACLE_HOME = d:\oracle\product\10.2.0\db_1) (SID_NAME = testDB) ) ) LISTENER所监听的数据库 SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = Oracle8)

Oracle函数大全

附录Ⅱ Oracle11g SQL函数 函数名 返回 类型 说明 字符串函数 ASCII(s) 数值 返回s首位字母的ASCII码 CHR(i) 字符 返回数值i的ASCII字符 CONCAT(s1,s2) 字符 将s2连接到字符串s1的后面 INITCAP(s) 字符 将每个单词首位字母大写其它字母小写 INSTR(s1,s2[,i[,j]]) 数值 返回s2在s1中第i位开始第j次出现的位置 INSTRB(s1,s2[,i[,j]]) 数值 与INSTR(s)函数相同,但按字节计算 LENGTH(s) 数值 返回s的长度。 LENGTHb(s) 数值 与LENGTH(s)相同,但按字节计算。 lower(s) 字符 返回s的小写字符 LPAD(s1,i[,s2]) 字符 在s1的左侧用s2字符串补足到总长度i LTRIM(s1,s2) 字符 循环去掉在s2中存在的s1左边字符 RPAD(s1,i[,s2]) 字符 在s1的右侧用s2字符串补足到总长度i RTRIM(s1,s2) 字符 循环去掉在s2中存在的s1右边字符 REPLACE(s1,s2[,s3]) 字符 用s3替换出现在s1中的s2 REVERSE(s) 字符 返回s倒排的字符串 SUBSTR(s,i[,j]) 字符 从s的第i位开始截得长度j的子字符串 SUBSTRB(s,i[,j]) 字符 与SUBSTR相同,但i,j按字节计算。 SOUNDEX(s) 返回与s发音相似的词 TRANSLATE(s1,s2,s3) 字符 将s1中与s2相同的字符以s3代替 TRIM(s) 字符 删除s的首部和尾部空格 UPPER(s) 字符 返回s的大写 正则表达式函数 REGEXP_LIKE() 布尔 功能与LIKE的功能相似 REGEXP_INSTR() 数值 功能与INSTR的功能相似 REGEXP_SUBSTR() 字符 功能与SUBSTR的功能相似 REGEXP_REPLACE() 字符 功能与REPLACE的功能相似 数字函数 ABS(i) 数值 返回i的绝对值 ACOS(i) 数值 反余玄函数,返回-1到1之间的数 ASIN(i) 数值 反正玄函数,返回-1到1之间的数 ATAN(i) 数值 反正切函数,返回i的反正切值

oracle监听配置详细步骤

一、Oracle 监听 客户端请求通过web页面发给中间件weblogic 中间件再发给orale数据库图示如下: Oracle 为了和外界联系必须开启监听,来接受外部的请求。 开启oracle监听有2种方法 方法一:修改配置文件 方法二:通过图形化的工具改 监听配置文件所在的位置: cd $ORACLE_HOME Cd network/admin下 监听配置文件的位置为:/oracle/app/oracle/product/10.2.0/db_1/network/admin目录下有listener.ora文件,这个文件可以通过配置来生成或者新建vi listener.ora 1 方法一:图形化的工具生产监听文件 前提:用图形化工具时必须是oracle用户界面,也就是orale用户登录,如果是root用户登录的话,有个shell环境问题。 步骤一:以oracle用户登录,输入netca命令或者输入netmgr命令,如下图所示: 步骤二:出现图形界面,一直下一步就行,但这个命令只能配置监听,不能配置传输功能。所以我们在这里就不使用netca命令了。

下面输入netmgr命令 步骤一:输入netmgr命令 步骤二:回车之后,界面如下: 把local目录展开界面如下 步骤三:点击左上角绿色的添加‘监听’步骤四:添加要监听的主机(或ip地址)

步骤五:添加要监听的数据库 步骤六:设置好后关闭,保存。 步骤七:cd $ORACLE_HOME/network/admin下有了listener.ora文件了,如下: 步骤八:启动监听输入命令:lsnrctl start,如下图: 2 方法二直接编辑监听文档 Listener.ora文档也可以自己编辑生成,在$ORACLE_HOME/network/admin下编辑步骤一:Vi listener.ora, 文档添加以下内容: #listener.ora Network Configuration File: /oracle/app/oracle/product/10.2.0/db_1/network/admin/listener.ora # Generated by Oracle configuration tools. (SID_DESC = (GLOBAL_DBNAME = TEST) (ORACLE_HOME = /oracle/app/oracle/product/10.2.0/db_1) (SID_NAME = TEST) ) ) LISTENER = (DESCRIPTION =

oracle函数列表

PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数; 组函数 本文将讨论如何利用单行函数以及使用规则。SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。这些函数均可用于SELECT,WHERE、ORDER BY等子句中,例如下面的例子中就包含了TO_CHAR,UPPER,SOUNDEX等单行函数。 SELECT ename,TO_CHAR(hiredate,'day,DD-Mon-YYYY')FROM empWhere UPPER(ename) Like 'AL%'ORDER BY SOUNDEX(ename) 单行函数也可以在其他语句中使用,如update的SET子句,INSERT的V ALUES子句,DELET的WHERE子句,认证考试特别注意在SELECT语句中使用这些函数,所以我们的注意力也集中在SELECT语句中。 NULL和单行函数 在如何理解NULL上开始是很困难的,就算是一个很有经验的人依然对此感到困惑。NULL值表示一个未知数据或者一个空值,算术操作符的任何一个操作数为NULL值,结果均为提个NULL值,这个规则也适合很多函数,只有CONCA T,DECODE,DUMP,NVL,REPLACE在调用了NULL参数时能够返回非NULL值。在这些中NVL函数时最重要的,因为他能直接处理NULL值,NVL有两个参数:NVL(x1,x2),x1和x2都式表达式,当x1为null时返回X2,否则返回x1。 下面我们看看emp数据表它包含了薪水、奖金两项,需要计算总的补偿 column name emp_id salary bonuskey type pk nulls/unique nn,u nnfk table datatype number number numberlength 11.2 11.2 不是简单的将薪水和奖金加起来就可以了,如果某一行是null值那么结果就将是null,比如下面的例子: update empset salary=(salary+bonus)*1.1 这个语句中,雇员的工资和奖金都将更新为一个新的值,但是如果没有奖金,即salary + null,那么就会得出错误的结论,这个时候就要使用nvl函数来排除null值的影响。 所以正确的语句是: update empset salary=(salary+nvl(bonus,0)*1.1 单行字符串函数 单行字符串函数用于操作字符串数据,他们大多数有一个或多个参数,其中绝大多数返回字符串 ASCII()

oracle服务器端与客户端配置

近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server)。本文现对监听配置作一简单介绍,并提出一些客户终端无法连接服务器端的解决思路,愿对广大网友与读者有一些帮助。 一、监听器(LISTENER) 监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。 二、本地服务名(Tnsname) Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器端监听器对客户端连接请求进行合法检查,如果连接请求有效,则进行连接,否则拒绝该连接。 本地服务名是Oracle客户端网络配置的一种,另外还有Oracle名字服务器(Oracle Names Server)等。Oracle常用的客户端配置就是采用的本地服务名,本文中介绍的也主要是基于本地服务名的配置。 三、Oracle网络连接配置方法 配置Oracle服务器端与客户端都可以在其自带的图形化Oracle网络管理器(Oracle Net Manager)里完成(强烈建议在这个图形化的工具下完成Oracle 服务端或客户端的配置)。在Windows下,点击“开始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”启动Oracle 网络管理器工具,在Linux/Unix下,利用netmgr命令来启动图形化Oracle网络管理器,如: $ netmgr Windows下启动Net Manager图形窗口如下图示:

Oracle11g数据库基础教程-参考答案资料

第1章Oracle 11g数据库安装与配置 1.简答题 (1) 企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。 (2) 常用数据库类型包括事务处理类、数据仓库类以通用类型。其中事务处理类型主要针对 具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。对于需要较 高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据 库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的 对某个主题进行复杂查询的应用环境。数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。对于需要对大量数据进行快速 访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷方案。既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。 (3) 数据库名可以由字母、数字、下划线(_)、#和美元符号($)组成,且必须以字母开头,长度不超过30个字符。在单机环境中,可以不设置域名,域名长度不能超过128个字符。Oracle服务标识符(SID)是一个Oracle实例的唯一名称标识,长度不能超过12个字符。(4) OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务,是数据库启 动的基础,只有该服务启动,Oracle数据库才能正常启动。(必须启动) OracleOraDb11g_home1TNSListener:监听器服务,该服务只有在远程访问数据库时 才需要(无论远程计算机还是本地计算机,凡是通过Oracle Net网络协议连接数据 库都属于远程访问)。(必须启动) OracleOraDb11g_home1ConfigurationManager:配置Oracle启动时的参数的服务。(非必须启动) OracleOraDb11g_home1ClrAgent:提供对.NET支持的Oracle数据库扩展服务。(非必须启动) OracleJobSchedulerORCL:数据库作业调度服务。(非必须启动) OracleDBConsoleorcl:Oracle控制台服务,即企业管理器服务。只有该服务启动了, 才可以使用Web方式的企业管理器管理数据库。(非必须启动) OracleVssWriterORCL:是Oracle对VSS提供支持的服务。(非必须启动) OracleMTSRecoveryService:是允许数据库充当一个微软事务服务器、COM/COM+对象和分布式环境下的事务资源管理器的服务。

oracle数据库之常用的函数练习

/*此文章可以作为sql脚本直接运行,某些函数限于oracle数据库!前面建表和数据插入可以不看,直接看后面红色部分的代码,前面的表只是提供一些数据供大家练习,不用自己再去建表了,真正的内容在后面*/ --人员表 create table person( personID number , pname varchar2(20) constraint NN_pname not null, psex char(2) , pbirth date , constraint PK_personID primary key (personID) , constraint CK_psex check (psex='男' or psex='女') ); --增加数据 create sequence seq_personID ; insert into person values (seq_personID.Nextval,'david','男',to_date('1990-09-10','yyyy-mm- dd')); insert into person values (seq_personID.Nextval,'ggyy','男',to_date('1991-10-10','yyyy-mm-dd')); insert into person values (seq_personID.Nextval,'朱 刀','男',to_date('1970-10-10','yy-mm-dd'));

insert into person values (seq_personID.Nextval,'泥 巴','女',to_date('1991-10-10','yy-mm-dd')); insert into person values (seq_personID.Nextval,'憨 坨','女',to_date('1991-10-10','yy-mm-dd')); insert into person values (seq_personID.Nextval,'李静 芳','女',to_date('1990-09-10','yyyy-mm-dd')); insert into person (personID,pname,psex) values (seq_personID.Nextval,'胖子','男'); insert into person (personID,pname,psex) values (seq_personID.Nextval,'小成成','男'); insert into person (personID,pname,psex) values (seq_personID.Nextval,'乐姐','女'); insert into person (personID,pname,psex) values (seq_personID.Nextval,'靓崽波','男'); --登录账号表 create table loginzh( userID number , personID number , zhanghao varchar2(20) , passwd varchar2(20) , logintime date , loginIP varchar2(15) , constraint PK_userID primary key (userID) , constraint FK_personID foreign key (personID) references person (personID) ); --为这个表加点数据 create sequence seq_userID ; insert into loginzh values (seq_userID.Nextval,1,'111111','123456',sysdate,'127.0.0.1'); --sysdate为系统当前时间

Oracle常用函数

数值函数

日期函数 SELECT TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS AM DY') FROM dual; SELECT TO_CHAR(sysdate,'YYYY"年"MM"月"DD"日"') FROM dual; 其他函数

5.高级查询(多表联合查询) 例子: SELECT job 职务 , SUM(sal) 工资总和 FROM emp WHERE job != 'PRESIDENT' GROUP BY job HAVING SUM(sal)>4500 ORDER BY SUM(sal); 分析函数 以下三个分析函数用于计算一个行在一组有序行中的排位,序号从1开始 ROW_NUMBER返回连续的排位,不论值是否相等 RANK具有相等值的行排位相同,序数随后跳跃 DENSE_RANK 具有相等值的行排位相同,序号是连续的 例子: SELECT deptno, ename, sal, comm, RANK() OVER (PARTITION BY deptno ORDER BY sal DESC, comm) RANK FROM emp; SELECT ename, job, deptno, sal, ROW_NUMBER() OVER (ORDER BY sal DESC) AS SAL_RANK FROM SCOTT.EMP; SELECT d.dname, e.ename, e.sal, DENSE_RANK() OVER (PARTITION BY e.deptno ORDER BY e.sal DESC) AS DENRANK FROM emp e, dept d WHERE e.deptno = d.deptno;

oracle SQL里常用的时间函数

oracle SQL里常用的时间函数,经典推荐 相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。那在oracle 中应该怎么来写sql语句呢,这个时候Oracle的日期函数会给我们很多帮助。 常用日期型函数 1。Sysdate 当前日期和时间 SQL> Select sysdate from dual; SYSDATE ---------- 21-6月-05 2。Last_day 本月最后一天 SQL> Select last_day(sysdate) from dual; LAST_DAY(S ---------- 30-6月-05 3。Add_months(d,n) 当前日期d后推n个月

用于从一个日期值增加或减少一些月份 date_value:=add_months(date_value,number_of_months) SQL> Select add_months(sysdate,2) from dual; ADD_MONTHS ---------- 21-8月-05 4。Months_between(f,s) 日期f和s间相差月数 SQL> select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))fro m dual; MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-D D')) ---------------------------------------------------------- -4.6966741 5。NEXT_DAY(d, day_of_week) 返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。

oracle_listener_详解

Oracle监听-提纲 o ORACLE工作机制o ORACLE监听参数o ORACLE监听功能o ORACLE监听配置o ORACLE网络构架o ORACLE精简版构造o ORACLE常见问题

ORACLE工作机制 o从一个用户请求开始讲,ORACLE的完整的工作机制是怎样的,首先一个用户进程发出一个连接请求,如果使用的是主机命名或者是本地服务命中的主机名使用的是机器名(非IP地址),那么这个请求都会通过DNS服务器或HOST文件的服务名解析然后传送到ORACLE监听进程,监听进程接收到用户请求后会采取两种方式来处理这个用户请求 o下面我们分专用服务器和共享服务器分别采用这两种方式时的情况来讲

专用服务器模式 o一种方式是监听进程接收到用户进程请求后,产生一个新的专用服务器进程,并且将对用户进程的所有控制信息传给此服务器进程,也就是说新建的服务器进程继承了监听进程的信息,然后服务器进程给用户进程发一个RESEND包,通知用户进程可以开始给它发信息了,用户进程给这个新建的服务器进程发一个CONNECT包,服务器进程再以ACCEPT包回应用户进程,致此,用户进程正式与服务器进程确定连接。 我们把这种连接叫做HAND-OFF连接,也叫转换连接

专用服务器模式 o另一种方式是监听进程接收到用户进程的请求后产生一个新的专用服务器进程,这个服务器进程选用一个TCP/IP端口来控制与用户进程的交互,然后将此信息回传给监听进程,监听进程再将此信息传给用户进程,用户进程使用这个端口给服务器进程发送一个CONNECT包,服务器进程再给用户进程发送一个ACCEPT包,致此,用户进程可以正式向服务器进程发送信息了。这种方式我们叫做重定向连接。

oracle常用函数习题及答案

--1、选择部门30中的雇员 select * from emp where deptno=30; --2、列出所有办事员的姓名、编号和部门 select ename,empno,dname from emp e inner join dept d on e.deptno = d.deptno where job=upper('clerk?); --3、找出佣金高于薪金的雇员 select * from emp where comm>sal; --4、找出佣金高于薪金60%的雇员 select * from emp where comm>sal*0.6 --5、找出部门10中所有经理和部门20中的所有办事员的详细资料 select * from emp where (deptno=10 and job=upper('manager')) or (deptno=20 and job=upper('clerk ')); --6、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料 select * from emp where (deptno=10 and job=upper('manager')) or (deptno=20 and job=upper('clerk ')) or (job<>upper(…manager?) and job<>upper(…clerk?) and sal>=2000) --7、找出收取佣金的雇员的不同工作 select distinct job from emp where comm>0; --8、找出不收取佣金或收取的佣金低于100的雇员 select * from emp where nvl(comm,0)<100; --9、找出各月最后一天受雇的所有雇员 select * from emp where hiredate= last_day(hiredate); --10、找出早于25年之前受雇的雇员

Oracle11g数据库基础教程-参考答案

Oracle11g数据库基础教程 参考答案

第1章Oracle 11g数据库安装与配置1.简答题 (1) 企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。 (2) 常用数据库类型包括事务处理类、数据仓库类以通用类型。其中事务处理类型主要针对具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。对于需要较高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的对某个主题进行复杂查询的应用环境。数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。对于需要对大量数据进行快速访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷方案。既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。 (3) 数据库名可以由字母、数字、下划线(_)、#和美元符号($)组成,且必须以字母开头,长度不超过30个字符。在单机环境中,可以不设置域名,域名长度不能超过128个字符。Oracle服务标识符(SID)是一个Oracle实例的唯一名称标识,长度不能超过12个字符。(4) ● OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务,是数据库启 动的基础,只有该服务启动,Oracle数据库才能正常启动。(必须启动) ● OracleOraDb11g_home1TNSListener:监听器服务,该服务只有在远程访问数据库时 才需要(无论远程计算机还是本地计算机,凡是通过Oracle Net网络协议连接数据库都属于远程访问)。(必须启动) ● OracleOraDb11g_home1ConfigurationManager:配置Oracle启动时的参数的服务。(非 必须启动) ● OracleOraDb11g_home1ClrAgent:提供对.NET支持的Oracle数据库扩展服务。(非 必须启动) ● OracleJobSchedulerORCL:数据库作业调度服务。(非必须启动) ● OracleDBConsoleorcl:Oracle控制台服务,即企业管理器服务。只有该服务启动了, 才可以使用Web方式的企业管理器管理数据库。(非必须启动) ● OracleVssWriterORCL:是Oracle对VSS提供支持的服务。(非必须启动) ● OracleMTSRecoveryService:是允许数据库充当一个微软事务服务器、COM/COM+ 对象和分布式环境下的事务资源管理器的服务。

相关主题