WHERE a.department_id = b.department_id AND a.salary > b.salavg;
41exists语句的使用:
SELECT employee_id, last_name, job_id, department_id
FROM employees outer--下面的 exists里面的select选择出来的是随便的一个字符或者数字都可以
WHERE EXISTS ( SELECT 'X' FROM employees WHERE manager_id = outer.employee_id);
42厉害的with语句:
WITH
dept_costs AS (--定义了一个临时的表
SELECT d.department_name, SUM(e.salary) AS dept_total--其间定义了一个临时的列dept_total
FROM employees e, departments d WHERE e.department_id = d.department_id GROUP BY d.department_name),/*注意这里有逗号*/ avg_cost AS (
SELECT SUM(dept_total)/COUNT(*) AS dept_avg
FROM dept_costs)--这里的第二张临时表里面就引用了前面定义的临时表和之间的列!
SELECT * FROM dept_costs WHERE dept_total > (SELECT dept_avg FROM avg_cost) ORDER BY department_name;---最后的查询语句中使用了前面的临时表
43遍历树:
SELECT employee_id, last_name, job_id, manager_id FROM employees
START WITH employee_id = 101
CONNECT BY PRIOR manager_id = employee_id ;--自底向上的遍历树。
44.更新语句
UPDATE employees SET
job_id = 'SA_MAN', salary = salary + 1000, department_id = 120 WHERE first_name||' '||last_name = 'Douglas Grant';
UPDATE TABLE (SELECT projs
FROM dept d WHERE d.dno = 123) p SET p.budgets = p.budgets + 1 WHERE p.pno IN (123, 456);
11.导入导出dmp文件:
imp 用户名/密码@数据库 ignore=y file=备份文件 log=D:\\DBtest\\db_bak\\imp.log
exp system/manager@TEST file=d:\\daochu.dmp full=y
Oracle 如何使用超过1.7G的内存
2010-08-03 11:34
如果你的ORACLE 版本是32位的,如果不做一些配置你是无论如何使用不到1.7G以上内存的。
前两天公司里一个软件系统,需要配置这样的环境,对于我这样的ORACLE所谓的高手,有点不知所措,甚至要硬着头皮去搞定它, 这可是到新公司接到的第一件活。必须搞定,否则ORACLE DBA就图有虚名了。 于是马上上网搜一下,文章果然,但是大都雷同,
而且针对的是ORACLE9I 的。我在实验的时候,也把客户的环境搞杂了,实在惭愧呀。不过经过一天多的折腾,也算是搞出来了。 软件环境:
Oracle 10.2.0.1
OS:Windows 2003 Server SP2 32bit 硬件环境: 内存:4G
CPU:Intel Core(TM)2 6300 1.86Ghz
这个环境很重要,特别是ORACLE的版本,跟ORACLE9i的配置肯定是不一样的。
1) 操作系统配置AWE,主要是修改boot.ini文件
右击\我的电脑\,选择\属性\高级选项卡,找到“启动与故障恢复”,单击“设置”,然后单击“编辑”,
加/PAE选项,修改后的文件如下: [boot loader] timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\\WINDOWS [operating systems]
multi(0)disk(0)rdisk(0)partition(2)\\WINDOWS=\Windows Server 2003, Enterprise\/pae
multi(0)disk(0)rdisk(0)partition(1)\\WINDOWS=\XP Professional\
2) 配置oracle可以使用的内存,修改注册表。 找到ORACLE的注册表项
HKEY_LOCAL_MACHINE\\SOFTWARE\\ORACLE\\KEY_OraDb10g_home1,再你的机器上KEY_OraDb10g_home1不是这个名称,
添加一个字符串值项:AWE_WINDOW_MEMORY ,这个值是你准备分配给数据库用的最大内存数(以BYTE为单位),例如你想分配4G,那这个值就是
4*1024*1024*1024
3) 获取可编辑的ORACLE初始化参数文件 Windows 命令行
Sqlplus \REM (如果登陆不进去将当前用户加入到ora_dba组中)
SQLPLUS>CREATE PFILE='初始化参数文件的路径' from spfile SQLPLUS>Shutdown immediate SQLPLUS>exit
4) 编辑ORACLE初始化参数文件
请用Ulatra editor(当然其他的也可以,但是千万不要用记事本) 打开在第三步生成的初始化参数文件(最好能备份一下,以便出现差错的时候还可以使用最初的文件启动) 第一注销掉以下行: sga_max_size
sga_target
DB_CACHE_SIZE
修改或者添加以下参数
*.db_block_buffers=262144 #等于原来的
DB_CACHE_SIZE/db_block_size, 例如你希望DB_CACHE_SIZE的大小是2G,则此值是2*1024*1024K/8K= 262144
*.SHARED_POOL_SIZE=419430400 #是以byte为单位的 400M(这个参数设置过大会报错的,因为ORACLE AWE的配置不是针对他的) *.log_buffer=73400320 #是以byte为单位的 70M(这个参数设置过大会报错的,因为ORACLE AWE的配置不是针对他的)
*.use_indirect_data_buffers=true # 这个参数的含义是我们是通过设置db_block_buffers来计算得到DB_CACHE_SIZE