当前位置:文档之家› ORACLE笔记

ORACLE笔记

ORACLE笔记
ORACLE笔记

1.Oracle 工具:sqlplus

Sqlplus / as sysdba

Shutdown immediate(关闭数据库)

Startup(启动数据库)

注意:数据库开启才可以进行操作

Select username,account_status from dba_users;(查询数据库中所有的用户名称与用户状态) Alter user scott identified by tiger account unlock;(scott用户解锁)

Sqlplus scott/tiger(使用SCOTT 密码为tiger登陆ORACLE数据库)

Connect scott/tiger (在SQL>中直接使用SCOTT用户连接数据库)

Show all;(看所有变量)

Set sqlprompt “_user>”(设置sqlplus环境下面的提示符用自身用户显示)

注意:如要变量下次重启生效必须把变量写入

/u01/app/oracle/product/10.2.0/db_1/sqlplus/admin/glogin.sql中

Host(回到系统)

Help index(查看所有命令)

Help+命令(类似于LINUX中的MAN,查看命令的格式与用法)

Disconnect(关闭SQLPLUS工具但是不离开数据库)

Describe emp(查看EMP表)

Define(定义变量,常用与写脚本用)

如:DEFINE _EDITOR =”vi” (CHAR) (定义VI编辑器用于保存最后一条执行的SQL语句) Save /u01/app/oracle/aa.sql (保存SQL语句)

Get /u01/app/oracle/aa.sql (调用保存的SQL语句)

2.select(select 查询语句是ORACLE中最常用的语句)

DML语句包括(insert 写入,update改变,delect删除,merge两张表同步)

注意:merge常用在ETL(数据仓库)底下

DDL数据定义语句包括(create创建对象,alter修改,drop删除对象,rename改名,truncate 删除整个表)

TCL事务处理语句(commit提交立刻生效,rollback回滚,savepoint保存点,savepoint(保存点)

DCL权限语句(grant赋予权限,revoke(收回权限)

ORACLE的表称之为堆表(keep table)

SELECT

(1) writing basic SQL select statemanes

1. selecting all columns

SCOTT>select * from dept;

SCOTT>select dname,deptno,loc from dept;

Basic SELECT Statement

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table;

2. selecting specific columns

SCOTT>select deptno,dname from dept;

SCOTT>select ename,sal from emp;

3. writing SQL statements

SQL statements are not case sensitive.

SQL statements can be on one or more lines.

Keywords cannot be abbreviated or split across lines.

Clauses are usually placed on separate lines.

Indents are used to enhance readability.

select * FROM EMP;

SELECT *

FROM emp;

4. Arithmetic Expressions

An arithmetic expression can contain column names, constant numeric values, and the arithmetic operators.

+ - * /

arithmetic operators in any clause of a SQL statement except in the FROM clause

select ename,sal+300 from emp;

Operator Precedence

Multiplication(*) and division(/) take priority over addition(+) and subtraction(-).

Operators of the same priority are evaluated from left to right.

Parentheses(...) are used to force prioritized evaluation and to clarify statements.

select ename,sal,12*sal+100 from emp;

select ename,sal,12*(sal+100) from emp;

5. defing a NULL value

A null is a value that is unavailable, unassigned, unknown, or inapplicable.

A null is not the same as zero or a blank space.

SCOTT>select ename,sal,comm from emp;

SCOTT>select ename,sal,12*sal*comm from emp;

Arithmetic expressions containing a null value evaluate to null.(空值和任何数字计算等于空值)

6. defining a Column alias

Renames a column heading.

Is useful with calculations.

Immediately follows the column name - there can also be the optional AS keyword between the column name and alias.

Requires double quotation marks if it contains spaces or special characters or is case sensitive.(备注名)

SCOTT>select ename name,sal,12*sal*comm from emp;

SCOTT>select ename name,sal,12*sal*comm as "Annual Salary" from emp;

7. Concatenation Operator

Concatenates columns or character strings to other columns.

Is represented by two vertical bars (||).

Creates a resultant column that is a character expression.

SCOTT>select ename||job as "Employees" from emp;

SCOTT>select ename||' is a '||job as "Employees" from emp;

(||是连接2个列之间的符号)

8. Literal Character Strings

A literal is a character, a number, or a date included in the SELECT list.

Date and character literal values must be enclosed within single quotation marks.

Each character string is output once for each row returned.

SCOTT>select ename ||' is a'||job as "Employee Details" from emp;

9. Duplicate Rows

SCOTT>select deptno from dept;

SCOTT>select distinct deptno from emp;(取唯一)

(2) Restrictng and sorting data

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table

[WHERE condition(s)];

a) WHERE CLAUSE

Restrict the rows returned by using the WHERE clause.

The WHERE clause follows the FROM clause.

*where:resttricts the query to rows that meet a condition.

*condition: column name,expression,constants,and a comparison operator.

Character strings and date values are enclosed in single quotation marks.

Character values are case sensitive, and date values are format sensitive.

The default date format is DD-MON-RR

1. Limiting Rows using a Selection

SCOTT>select * from emp where deptno=30;

SCOTT>select * from emp where ename='KING';

2. Comparison conditions

=, >,>=, <,<=,<>

SCOTT>select * from emp where sal>2000;

3. Other Comprison conditions

between ... and ...,in(set),like, is null

a) using the BETWEEN condition

SCOTT>select * from emp where sal between 2000 and 2500;

b) using the IN condition

SCOTT>select * from emp where mgr in (7698,7839,7788);

c) using the LIKE condition

% denotes zero or many characters.

_ denotes one character.

SCOTT>select * from emp where ename like 'A%'; (开头是A)

SCOTT>select * from emp where ename like '_A%'; (开头第2个是A的)

conn hr/hr

HR>select last_name,job_id from employees;

SCOTT>SELECT last_name, job_id

FROM employees

WHERE job_id LIKE '%SA\_%' ESCAPE '\';(查找SA_开头的\是转义字符,因为_在ORACLE中是属于字符类型的,所有要转义)

d) using the NULL conditions

SCOTT>select * from emp where mgr is null; (取空值要用IS)

4. logical conditions

and ,or,not

a) using the AND operator

SCOTT>select * from emp where sal>1000 and job like '%MAN%';

b) using the OR operator

SCOTT>select * from emp where sal>1000 or job like '%MAN%';

c) using the NOT operator

SCOTT>select * from emp where job not in ('SALESMAN','CLERK');

5. Rules of Precedence

1 Arithmetic operators

2 Concatenation operator

3 Comparison conditions

4 IS [NOT] NULL, LIKE, [NOT] IN

5 [NOT] BETWEEN

6 NOT logical condition

7 AND logical condition

8 OR logical condition

(and>or>not)

SCOTT>select * from emp where job='SALESMAN' or job='CLERK' and sal >=1300;

SCOTT>select * from emp where (job='SALESMAN' or job='CLERK') and sal >=1300;

b) ORDER BY clause (排序)

SELECT *|{[DISTINCT] column|expression [alias],...}

FROM table

[WHERE condition(s)]

[ORDER BY column|expression];

sort rows

ASC: ascending order, default

DESC: descending order

The ORDER BY clause comes last in the SELECT statement.

1. SCOTT>select * from emp order by hiredate;(按照日期排序,日期是从老到新)

2. sorting in descending order

SCOTT>select * from emp order by hiredate desc;(加DESC是升序)

3. sorting by column alias

SCOTT>select ename,sal,12*sal annsal from emp order by annsal;

4. sorting by multiple columns

SCOTT>select ename,deptno,sal annsal from emp order by deptno,sal desc;

You can sort by a column that is not in the SELECT list.

SCOTT>select ename,deptno annsal from emp order by deptno,sal desc;

(3) single-row functions

SQL functions are built into Oracle Database and are available for use in various appropriate SQL statements.

sql function type

Manipulate data items.

Accept arguments and return one value.

Act on each row returned.

Return one result per row.

May modify the data type.

Can be nested.

Accept arguments which can be a column or an expression.

function_name [(arg1, arg2,...)]

1. character functions(字符函数)

select ename,lower(ename) from emp;(把ename列里面的大写转换为小写)

select upper('Sql course') from dual;(转换大写)

select initcap('sql course') from dual;(字段开头大写)

dual table

DUAL is a table automatically created by Oracle Database along with the data dictionary.

DUAL is in the schema of the user SYS but is accessible by the name DUAL to all users.

It has one column, DUMMY, defined to be VARCHAR2(1), and contains one row with a value X.

select * from emp where ename='smith';

no rows selected

select * from emp where lower(ename)='smith';(查询EMP 条件是ENAME里面小写是smith)

select concat('Hello','World') from dual;(连接2个字符串函数)

select substr('HelloWorld',1,5) from dual;(取字符第一个算起到第5个)

select length('HelloWorld') from dual;(统计字符数量)

select instr('HelloWorld','W') from dual;(统计W在字符串中的排位)

select lpad(sal,10,'*') from emp;(在EMP表中取10位,10位不满的位数用*代替)

select rpad(sal,10,'*') from emp;(在EMP表中取10位,10位不满的后面位数用*代替) select trim('H' from 'HelloWorld') from dual;(删除字符串2边的字符包括空格)

2. Number functions

select round(45.926,2),round(45.923,0),round(45.923,-1) from dual;(四舍五入)

select trunc(45.926,2),trunc(45.923,0),trunc(45.923,-1) from dual;(取数比如后面是2就取45.92)

select mod(1600,300) from dual;

3. Date functions

Arithmetic with Dates

Add or subtract a number to or from a date for a resultant date value.

Subtract two dates to find the number of days between those dates.

Add hours to a date by dividing the number of hours by 24.

select sysdate from dual;

select sysdate+1 from dual;

select sysdate-1 from dual;

select ename,hiredate, (sysdate-hiredate)/365 from emp;

select sysdate+24/24,sysdate+33/24 from dual;

date+date not allowed

Date Functions

months_between(date1,date2)= (date1-date2)

select months_between('01-SEP-95','11-JAN-94') from dual;

add_months(date,number)=(date.month+number)

select sysdate as today ,add_months(sysdate,1) as next_month,

add_months(sysdate,-1) as last_month from dual;

next_day(date,'day')

select next_day('01-SEP-95','FRIDAY') from dual;

last_day(date)

select last_day('01-FEB-95') from dual;

round(date,'format')

select round(sysdate,'month') from dual;

select round(sysdate,'year') from dual;

select trunc(sysdate,'month') from dual;

select trunc(sysdate,'year') from dual;

4. conversion functions

Data type conversion

Implicit data type conversion.

select * from dept where deptno(type number)='10';

select ename from emp where empno='7788';

Explicit data type conversion

a) to_char(date,'format_model')

format_model:

Must be enclosed in single quotation marks and is case sensitive.

Can include any valid date format element.

Has an fm element to remove padded blanks or suppress leading zeros.

Is separated from the date value by a comma.

YYYY(Full year in numbers)

YEAR(Year spelled out)

MM(Two-digit value for month)

MONTH(Full name of the month)

MON(Three-letter abbreviation of the month)

DY(Three-letter abbreviation of the day of the week)

DAY(Full name of the day of the week)

DD(Numeric day of the month)

HH or HH12 or HH24

MI

SS

Time elements format the time portion of the date

HH24:MI:SS AM

select ename,to_char(hiredate,'fmDD Month YYYY') from emp;

b) to_char(number,'format_model')

9(Represents a number)

0(Forces a zero to be displayed)

$(Places a floating dollar sign)

L(Uses the floating local currency symbol)

.(Prints a decimal point)

,(Prints a thousand indicator)

select ename,to_char(sal,'L999,999.00') from emp;

c) to_number(char[,'format_model'])

select to_number('1234') from dual;

select to_number('1234','9999') from dual;

d) to_date(char[,'format_model'])

select to_date('02-SEP-08') from dual;

select to_date('020908','ddmmyyyy') from dual;

5. General Functions

a) nvl(expr1,expr2) (if expr1 is null,then expr2)(data type :consistent)

select ename,sal,nvl(comm,0) from emp;

b) nvl2(expr1,expr2,expr3)(if expr1 is not null then expr2 else expr3)

select ename,sal,comm,nvl2(comm,sal+comm,sal) from emp;

c) nullif(expr1,expr2)

case when expr1=expr2 then null else expr1 end

d) case expression

case expr when comparison_expr1 then return_expr1

[when comparison_expr2 then return_expr2

[when comparison_exprn then return_exprn

else else_expr]

end

select ename,job,sal,case job when 'CLERK' then 1.10*sal

when 'MANAGER' then 1.20*sal

else sal end "revised_salary"

from emp;

select ename,job,sal,case when job='CLERK' then 1.10*sal

when job='MANAGER' then 1.20*sal

else sal end "revised_salary"

from emp;

e) decode function

decode(expr ,search1,result1

[,search2,result2, ...,]

[, default])

select ename,job,sal,decode(job,'CLERK' ,1.10*sal,

'MANAGER' ,1.20*sal,

sal) "revised_salary"

from emp;

6. Nesting Functions

f3(f2(f1(col,arg1),arg2),arg3)

SELECT ename,

NVL(TO_CHAR(mgr), 'No Manager')

FROM emp

WHERE mgr IS NULL;

(4) displaying data from multiple tables(join)

*Types of Joins

Equijoin

Non-equijoin

Outer join

Self join

*Joining Tables Using Oracle Syntax

SELECT table1.column, table2.column

FROM table1, table2

WHERE table1.column1 = table2.column2;

Write the join condition in the WHERE clause.

Prefix the column name with the table name when the same column name appears in more than one table.

a) equijoins

select ename,dname

from emp,dept

where emp.deptno=dept.deptno;

select ename,dname

from emp,dept

where emp.deptno=dept.deptno

and emp.deptno=30;

Using Table Aliases

Distinguish columns that have identical names but reside in different tables by using column aliases.

Improve performance by using table prefixes.

select e.ename,d.ename

from emp e,dept d

where e.deptno=d.deptno;

select ename,dname

from emp e,dept d,

where e.deptno=d.deptno

Joining More than Two Tables

hr>select https://www.doczj.com/doc/0c16203793.html,ST_NAME,d.DEPARTMENT_NAME,l.CITY

from employees e,departments d,locations l

where e.department_id=d.department_id and d.location_id=l.location_id

b) nonequijoins

select ename,sal,grade

from emp e,salgrade s

where e.sal between s.losal and s.hisal

c) outer joins

You use an outer join to also see rows that do not meet the join condition.

The Outer join operator is the plus sign (+).

SELECT table1.column, table2.column

FROM table1, table2

WHERE table1.column = table2.column(+);

select e.ename,e.deptno,d.dname

from emp e,dept d

where e.deptno(+)=d.deptno;

select ename,dname

from emp,dept

where emp.deptno(+)=dept.deptno

and emp.deptno(+)=30;

d) self joins

select e.empno worker,e.ename,m.ename manager

from emp e,emp m

where e.mgr=m.empno

select e.empno,e.ename worker,m.empno,m.ename manager

from emp e,emp m

where e.mgr=m.empno(+);

e) Cartersian products

A join condition is omitted

A join condition is invalid

All rows in the first table are joined to all rows in the second table

SCOTT>select ename,dname from emp,dept;

*Joining Tables Using SQL: 1999 Syntax

SELECT table1.column, table2.column

FROM table1

[CROSS JOIN table2] |

[NATURAL JOIN table2] |

[JOIN table2 USING (column_name)] |

[JOIN table2

ON(table1.column_name = table2.column_name)] |

[LEFT|RIGHT|FULL OUTER JOIN table2

ON (table1.column_name = table2.column_name)];

SELECT employee_id, city, department_name

FROM employees e

JOIN departments d

ON d.department_id = e.department_id

JOIN locations l

ON d.location_id = l.location_id;

(5) Aggregating Data Using Group Functions

1)Group Functions

Group functions operate on sets of rows to give one result per group.

,Types of Group Functions

AVG

COUNT

MAX

MIN

SUM

.Group Functions Syntax

SELECT [column,] group_function(column), ...

FROM table

[WHERE condition]

[GROUP BY column]

[ORDER BY column];

.Group Functions and Null Values

ignore null values in the column.

a) AVG and SUM Functions(numeric data)

select avg(sal),sum(sal) from emp;

b) MIN and MAX Functions(any data type)

select min(sal),max(sal) from emp;

select min(hiredate),max(hiredate) from emp;

c) COUNT Function

select count(*) from emp;

select count(comm) from emp;

select count(nvl(comm,0)) from emp;

select count(distinct deptno) from emp;

select avg(comm) from emp;

select avg(nvl(comm,0)) from emp;

2)Creating group of data

Divide rows in a table into smaller groups by using the GROUP BY clause.

All columns in the SELECT list that are not in group functions must be in the GROUP BY clause.

The GROUP BY Clause Syntax:

SELECT column, group_function(column)

FROM table

[WHERE condition]

[GROUP BY group_by_expression]

[ORDER BY column];

a) Group by Clause

select deptno,avg(sal)

from emp

group by deptno;

select avg(sal)

from emp

group by deptno;

select deptno,job,avg(sal)

from emp

group by deptno,job;

iiiegal Queries Using Group Functions:

select deptno,count(ename) from emp;

select deptno,avg(sal)

from emp

where avg(sal)>1500

group by deptno

b) Excluding Group Results

Having Clause

SELECT column, group_function

FROM table

[WHERE condition]

[GROUP BY group_by_expression]

[HAVING group_condition]

[ORDER BY column];

select deptno,max(sal)

from emp

group by deptno

having max(sal)>3000

demo:

select max(avg(sal)) from emp group by deptno;

create table e as select * from emp;

insert into e select * from emp where deptno=10;

commit;

select empno,deptno,count(*) from e

group by empno,deptno

having count(*)>1

select job,count(*),avg(sal) from emp group by job;

select count(*),count(comm) from emp;

select max(sal)-min(sal) from emp;

(6)Subqueries

Subquery Syntax

SELECT select_list

FROM table

WHERE expr operator

(SELECT select_list

FROM table);

The subquery (inner query) executes once before the main query.

The result of the subquery is used by the main query (outer query).

Types of Subqueries

Single-row subquery

Return only one row(=,>,>=,<,<=,<>)

Multiple-row subquery

Return more than one row(in,any,all)

a) using a Subquery

select ename,sal

from emp

where sal >(select sal from emp where ename='ALLEN')

b) single_Row Subqueries

select ename,job,sal

from emp

where job=(select job from emp where empno=7654)

and sal>(select sal from emp where empno=7654)

select ename,job,sal

from emp

where sal >(select avg(sal) from emp)

select deptno, min(sal)

from emp

group by deptno

having min(sal)>(select min(sal) from emp

where deptno=20)

c) Wrong

select ename

from emp

where sal = (select min(sal) from emp

group by deptno)

select ename

from emp

where job = (select job from emp

where ename='smith')

d) Multiple_Row Subqueries

select ename,job,sal

from emp

where sal

where job='SALESMAN')

andjob<>'SALESMAN'

select ename,job,sal

from emp

where sal

where job='SALESMAN')

and job<>'SALESMAN'

select ename from emp

where empno not in (select m.mgr from emp m);

no rows selected(why)

Pseudocolumns

A pseudocolumn behaves like a table column, but is not actually stored in the table.

You can select from pseudocolumns, but you cannot insert, update, or delete their values.

rownum

For each row returned by a query, the ROWNUM pseudocolumn returns a number indicating the order in which Oracle selects the row from a table or set of joined rows.

The first row selected has a ROWNUM of 1, the second has 2, and so on.

Conditions testing for ROWNUM values greater than a positive integer are always false

select * from emp where rownum <4;

select * from emp where rownum>2;(error)

select ename,sal from (select * from emp order by sal desc) where rownum<4;

select ename,sal from emp e,(select deptno,avg(sal) avg_sal from emp group by deptno) s where s.deptno=e.deptno and e.sal>s.avg_sal;

ORACLE笔记

1.Oracle 工具:sqlplus Sqlplus / as sysdba Shutdown immediate(关闭数据库) Startup(启动数据库) 注意:数据库开启才可以进行操作 Select username,account_status from dba_users;(查询数据库中所有的用户名称与用户状态) Alter user scott identified by tiger account unlock;(scott用户解锁) Sqlplus scott/tiger(使用SCOTT 密码为tiger登陆ORACLE数据库) Connect scott/tiger (在SQL>中直接使用SCOTT用户连接数据库) Show all;(看所有变量) Set sqlprompt “_user>”(设置sqlplus环境下面的提示符用自身用户显示) 注意:如要变量下次重启生效必须把变量写入 /u01/app/oracle/product/10.2.0/db_1/sqlplus/admin/glogin.sql中 Host(回到系统) Help index(查看所有命令) Help+命令(类似于LINUX中的MAN,查看命令的格式与用法) Disconnect(关闭SQLPLUS工具但是不离开数据库) Describe emp(查看EMP表) Define(定义变量,常用与写脚本用) 如:DEFINE _EDITOR =”vi” (CHAR) (定义VI编辑器用于保存最后一条执行的SQL语句) Save /u01/app/oracle/aa.sql (保存SQL语句) Get /u01/app/oracle/aa.sql (调用保存的SQL语句) 2.select(select 查询语句是ORACLE中最常用的语句) DML语句包括(insert 写入,update改变,delect删除,merge两张表同步) 注意:merge常用在ETL(数据仓库)底下 DDL数据定义语句包括(create创建对象,alter修改,drop删除对象,rename改名,truncate 删除整个表) TCL事务处理语句(commit提交立刻生效,rollback回滚,savepoint保存点,savepoint(保存点) DCL权限语句(grant赋予权限,revoke(收回权限) ORACLE的表称之为堆表(keep table) SELECT (1) writing basic SQL select statemanes 1. selecting all columns SCOTT>select * from dept; SCOTT>select dname,deptno,loc from dept; Basic SELECT Statement SELECT *|{[DISTINCT] column|expression [alias],...} FROM table;

(Oracle数据库管理)玩转实战教程学习笔记最全版

(O管理)玩转实战教程(韩顺平)学习笔记

韩顺平—玩转oracle视频教程笔记 一:Oracle认证,与其它数据库比较,安装 oracle的卸载 1.停止所有与ORACLE相关的服务。 2. 使用OUI(Oracle Universal Installer)卸载Oracle软件。 “开始”->“程序”->“Oracle-OraDb110g_home1|Oracle installation product|Universal installer. 3.删除注册表内容。运行regedit命令,删除下面内容:HKEY_LOCAL_MACHINE|SOFTWARE|ORACLE注册表键,删除此键。 HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet|Services,删除Services键下所有以oracle为首的键。 HKEY_LOCAL_MACHINE|SYSTEM|CurrentControlSet|Services|Eventlog|Application,删除此键下所有以oracle为首的键。 HKEY_CLASSES_ROOT,删除此键下所有以Ora,Oracle,Orcl,EnumOra 为前缀的键。 HKEY_CURRENT_USER|Software| Microsoft|Windows|CurrentVersion|Explorer|MenuOrder|Start Menu|Programs,删除此键下所有以oracle为首的键。 HKEY_LOCAL_MACHINE|SOFTWARE|ODBC|ODBCINST.INI注册表键,删除了

oracle笔记七(其他)

1.如何限定特定IP访问数据库 可以利用登录触发器、cmgw或者是在$OREACLE_HOME/network/admin下新增一个protocol.ora文件(有些os可能是. protocol.ora),9i可以直接修改sqlnet.ora: 增加如下内容: tcp.validnode_checking=yes #允许访问的ip tcp.inited_nodes=(ip1,ip2,...) #不允许访问的ip tcp.excluded_nodes=(ip1,ip2,...) 2.如何穿过防火墙连接数据库 这个问题只会在WIN平台出现,UNIX平台会自动解决。 解决方法: 在服务器端的SQLNET.ORA应类似 SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) TRACE_LEVEL_CLIENT = 16 注册表的HOME0加[HKEY_LOCAL_MACHINE] USE_SHARED_SOCKET=TRUE 3.如何利用hostname方式连接数据库 host name方式只支持tcp/ip协议的小局域网 修改listener.ora中的如下信息 (SID_DESC = (GLOBAL_DBNAME = ur_hostname) --你的机器名 (ORACLE_HOME = E:\oracle\ora92) --oracle home (SID_NAME = orcl) --sid name ) 然后在客户端 的sqlnet.ora中,确保有 NAMES.DIRECTORY_PATH= (HOSTNAME) 你就可以利用数据库服务器的名称访问数据库了 4.dbms_repcat_admin能带来什么安全隐患 如果一个用户能执行dbms_repcat_admin包,将获得极大的系统权限。 以下情况可能获得该包的执行权限: 1、在sys下grant execute on dbms_repcat_admin to public[|user_name] 2、用户拥有execute any procedure特权(仅限于9i以下,9i必须显示授权) 如果用户通过执行如下语句: exec sys.dbms_repcat_admin.grant_admin_any_schema('user_name'); 该用户将获得极大的系统特权 可以从user_sys_privs中获得详细信息

oracle笔记(3)

1.用insert语句进行行数据的迁移 Insert into 表名(列,列) select 列,列from emp where 条件 2.用update更新数据(使用子查询):希望员工scott的岗位,工资,补助与smith员工一样? update emp set (job,sal,comm)=(select job,sal,comm. From emp where ename=?SMITH?) where ename=?SCOTT?; 3.事务 (1)锁 (2)提交事务 (3)回退事务(一开始就做保存点(savepoint)) (4)事务的几个重要操作 1)设置保存点:savepoint a 2)取消部分事务:rollback to a 3)取消全部事务:rollback (5)只读事务:set transaction read only(当前用户能看到之前的操作,若其他用户进行更 新,该用户之后的操作都不能看到更新) (6)字符函数 (1)lower(char):将字符串转化为小写的格式 (2)upper(char): 将字符串转化为大写的格式 (3)length(char):返回字符串的长度 (4)substr(char,m,n):取字符串的子串,从m开始取,取n个 (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)replace(char1,search_string,replace_string) (7)instr(char1,char2,[,n[,m]])—取子串在字符串的位置 (8)例:显示所有员工的姓名,用”我是A”替换所有”A”:select replace(ename,?A?,? 我是A?) from emp; (7)数学函数 (1)round(n,[m]):用于四舍五入 (2)trunc(n,[m]):用于截取数字 (3)mod(m,n):取模 (4)floor(n):返回<=n的最大整数 (5)ceil(n):返回>=n的最小整数 (6)例:显示在一个月为30天的情况所有员工的日薪金,忽略余数:select floor(sal/30),ename from emp; (8)日期函数 (1)sysdate (2)add_months(d,n) (3)last_day(d):返回指定日期所在月份的最后一天 例:返回在八个月前雇佣的员工(已经入职8个月多的员工):select * from emp where sysdate>add_months(hiredate,300); 例:对于每个员工,显示其加入公司的天数:select trunk(sysdate-hiredate) “入职天

Oracle学习笔记

Oracle的四个主要用户 1.超级管理员sys/change_on_install 2.普通管理员system/manager 3.普通用户scott/tiger 4.大数据用户sh/sh 简单查询 1.查询表结构 DESC 表名 2.简单查询SELECT [DISTINCT] *|[字段 [别名]] [,字段 [别名]] … FROM 表名 [别名] (1)查询时也可以使用四则运算,如:SELECT (字段*x)+y FROM 表名 (2)可以使用“||”连接字段与字符串,如: select '工作与工资:' || job || sal 工作工资 from emp 执行结果: 3.限定查询SELECT [DISTINCT] *|[字段 [别名]] [,字段 [别名]] … FROM 表名 [别名] [WHERE 条件(s)] (1)Where字句后可以增加多个条件,最常见的条件就是最基本关系运算:>、<、>=、<=、!=(<>)、BE TWEEN…AND、LIKE、IN(指定范围)、IS NULL(为空)、AND(且)、OR(或)、NOT(非)。 (2)多个条件可以使用AND与OR连接。 例如:select * from emp where sal>1300 and sal<4000 (3)范围判断BE TWEEN…AND:BETWEEN 最小值 AND 最大值(大于等于最小值,小于等于最大值),BE TWEEN…AND 对数字、日期都可以使用!!! 例如:select * from emp where sal between 1300 and 4000 例如:select * from emp where hiredate between '01-1月-1981' and '31-12月-1981' (4)判断为空IS (NOT) NULL 例如:select * from emp where comm is null 例如:select * from emp where comm is not null 例如:select * from emp where not comm is null (5)指定范围的判断(NOT) IN 例如:select * from emp where empno in(7369,7566,7799)

学习oracle数据库的总结(图文整理)

1、在开发环境中连接到数据库,进行基本的select查询操作; 2、熟悉plsql的使用; 3、熟悉sqlplus相关命令(登录、查询、导入导出等) 登录sqlplus: 第一:使用dos窗口登录sqlplus Sqlplus 用户名/密码@数据库实例名 Sqlplus system/密码@数据库实例名as sysdba 第二:使用oracle自带的一个sqlplus登录,提供界面,显得更简单一些。 显示当前用户名:show user; 创建一个用户:create user 用户名identified by 密码; 给用户赋予登录的权限:grant connect to 用户名;(此时才可以使用这个用户来登录这个数据库。)给其赋予dba的权限。 修改用户的密码:alter user 用户名identified by 新密码; 查询: Select * from t_user; Select id from t_user; Select name from t_user; Select birthday from t_user; Select id,name from t_user; 导入导出: 导出表: (注意,导出表的exp命令不是在sqlplus下使用的,是在dos窗口下使用的命令。) exp userid=test/sa@test tables=(qx) file=d:\e1223.dmp exp userid=test/sa@test tables=(t_user,qx) file=f:\test.dmp 导出方案: Exp userid=test/sa@test owner=test file=f:\test2.dmp 导出数据库: Exp userid=test/sa@test full=y inctype=complete file=f:\all.dmp 导入表: 下面以一个例子来说明: 看下面的图,我的用户名test,密码sa,数据库实例名test,所有的表都在这里 现在我执行导出表JD的操作:exp userid=test/sa@test tables=(jd) file=f:\jd.dmp 在我的f盘下就出现了这么一个.dmp文件

Oracle EBSGL学习笔记

12.8 1、冲销日记账 1) 原始 借:租金10,000 本位币美元 贷:现金10,000 本位币美元 冲销 借:现金10,000 本位币美元 贷:租金10,000 本位币美元 2)可以创建冲销日记账分录来冲销应计、估计、临时调整和重新分类,或更正错误。 3)方法: 转换借贷项:通过转换借项和贷项金额来冲销日记账分录。 红字冲销:通过将原始日记账金额从正值改为负值来冲销日记账分录。 4)日记账> 输入> 复核日记账(B)其他活动 日记账> 生成> 冲销 2、自动冲销日记账 1)可以自动冲销上一个月的应计日记账分录,并自动将其过账(如果需要)。 2)自动冲销日记账的前提条件: --日记账余额类型为“实际” --日记账类型已启用“自动冲销”选项 --日记账已过帐,但尚未冲销 --日记账冲销期间为“打开”或“将来可输入” 3) 设置> 日记账> 自动冲销(AutoReverse) 3、日记账分录报表提供:会计结算日期、类别、日记账名称、参考、日记账批 4、与Oracle General Ledger 集成 --在Excel中创建日记账 --通过Web ADI 加载到GL_INTERFACE 表 --从接口表中提交“日记账导入” -从Web ADI中与加载流程同时提交 -从Web ADI 中作为独立的提交流程提交 -从Oracle General Ledger中使用“导入日记账”窗口提交 5、Web ADI 的核心功能 1)布局功能 --从布局中删除或向布局中添加字段 --指定字段在布局中的位置 --为布局中的字段分配默认值 --保存布局,可以由具有适当责任的某个人来定义,然后由整个站点使用 2) 文本导入功能 --将文本文件数据导入到桌面文档中

oracle学习笔记

●PLSQL控制台输出语句 SET serveroutput ON; --打开控制台输出服务 dbms_output.put_line('values2='||var_val); --输出语句 ●PLSQL动态变量 var_str := '&input'; ●创建表空间和用户 --创建表空间 CREATE TABLESPACE "BCPBS" LOGGING DATAFILE 'D:\app\E430\oradata\orcl\BCPBS_01.ora' SIZE 2048M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED, 'D:\app\E430\oradata\orcl\BCPBS_02.ora' SIZE 2048M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ; --建立用户 CREATE USER "BCPBS" PROFILE "DEFAULT" IDENTIFIED BY "bcpbs123" DEFAULT TABLESPACE "BCPBS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT "CONNECT" TO "BCPBS"; GRANT "DBA" TO "BCPBS"; GRANT "RESOURCE" TO "BCPBS"; ●删除表空间和用户 drop user bcpbs cascade ; drop tablespace BCPBS including contents and datafiles cascade constraints ; ●自定义函数 CREATE OR REPLACE FUNCTION fun_level_value(level_value number) RETURN number IS return_value number:=null; BEGIN CASE level_value WHEN 0 THEN return_value:='0'; WHEN 1 THEN return_value:='1'; WHEN 2 THEN return_value:='2'; WHEN 3 THEN return_value:='3'; WHEN 6 THEN return_value:='8'; ELSE

oracle学习心得体会

oracle学习心得 一、sqlserver的理解 sqlserver服务器就像一栋大楼,大楼里的机房就像服务器的数据库,机房里的电脑如同数据库里的表 1、登录用户可以登录服务器——可以进大楼 2、登录用户成为数据库用户才能进指定的数据库——进入大楼的人给了某个机房的钥匙 才能进入机房 3、登录用户有权限使用表——进入机房的人有电脑的密码才能使用电脑 二、oracle的理解 oracle服务器(全局数据库)就像一个商场,商场的每一家公司是表空间,公司的业务是表 1、数据库由多个表空间组成——商场里有多家公司组成 2、表空间由段组成——公司要有自己的经营业务,可以只有一个业务,就是一个表空 间中只有一个段,可以有多个业务,就是一个表空间有多个段 3、段由区组成——单个业务的细分类别。例如有家公司经营三个业务,卖书,卖家电,

卖衣服,则每个业务就是一个段。而每个业务又有细分,比如卖书的话要进行分类了。计算机区,人文区,小说区等,每一区都要放上书架存放书籍,则书架就是oracle块,存放数据的 三、数据库,表空间,用户(指定默认表空间),表统统由管理员管理 四、在oem中管理数据库的步骤 1、创建 1)存储——表空间——创建表空间(tomspace)(类似于在sql中创建数据库, 通常可以省略,使用默认表空间为users,,临时表空间为temp) 2)首先展开安全性——创建新用户(tom,指定表空间)(类似于在sql中指定 数据库用户) 3)创建表——指定方案(用户)和表空间(列名不要带<>) 4)设置约束 5)输入信息:方案——用户名——表——右击——查看/编辑目录… 2、修改 1)方案——用户名——表 2)修改表结构,添加约束

oraclesql优化笔记

基本的Sql 编写注意事项 尽量少用IN 操作符,基本上所有的IN 操作符都可以用EXISTS 代替。 不用NOT IN操作符,可以用NOT EXISTS或者外连接+替代。 Oracle 在执行IN 子查询时,首先执行子查询,将查询结果放入临时表再执行主查询。而EXIST则是首先检查主查询,然后运行子查询直到找到第一个匹配项。NOT EXISTS:匕NOT IN效率稍高。但具体在选择IN或EXIST操作时,要根据主子表数据量大小来具体考虑。 不用“<>”或者“ !=”操作符。对不等于操作符的处理会造成全表扫描,可以用“ <” or “>”代替。 Where子句中出现IS NULL或者IS NOT NULL时,Oracle会停止使用索引而执行全表扫描。可以考虑在设计表时,对索引列设置为NOT NULL这样就可以用其他操作来取代判断NULL的操作。 当通配符“ %”或者“ _”作为查询字符串的第一个字符时,索引不会被使用。 对于有连接的列“ || ”,最后一个连接列索引会无效。尽量避 免连接,可以分开连接或者使用不作用在列上的函数替代。 如果索引不是基于函数的,那么当在Where子句中对索引列使用函数时,索引不再起作用。 Where子句中避免在索引列上使用计算,否则将导致索引失效而进行全表扫描。 对数据类型不同的列进行比较时,会使索引失效。

用“ >=”替代“ >”。 UNION操作符会对结果进行筛选,消除重复,数据量大的情况 下可能会引起磁盘排序。如果不需要删除重复记录,应该使用UNION ALL。 Oracle从下到上处理Where子句中多个查询条件,所以表连接语句应写在其他Where条件前,可以过滤掉最大数量记录的条件必须写在Where子句的末尾。 Oracle从右到左处理From子句中的表名,所以在From子句中包含多个表的情况下,将记录最少的表放在最后。(只在采用RBO 优化时有效,下文详述) Order By 语句中的非索引列会降低性能,可以通过添加索引的方式处理。严格控制在Order By 语句中使用表达式。 不同区域出现的相同的Sql 语句,要保证查询字符完全相同, 以利用SGA共享池,防止相同的Sql语句被多次分析。多利用内部函数提高Sql 效率。 当在Sql 语句中连接多个表时,使用表的别名,并将之作为每列的前缀。这样可以减少解析时间。 需要注意的是,随着Oracle 的升级,查询优化器会自动对Sql 语句进行优化,某些限制可能在新版本的Oracle 下不再是问题。尤其是采用CBO (Cost-Based Optimization ,基于代价的优化方式)时。 我们可以总结一下可能引起全表扫描的操作:

oracle数据库学习笔记心得

select* |字段表名 from 表名 where 布尔表达式【条件】 externalcandidate 职员相关信息 contractrecruiter 猎头公司 查看表里所有字段 describe[描述] contractrecruiter select cname,nperecentagecharge from contractrecruiter 不显示原来名字,显示现在名字【用AS】 select cname as "Recruiter Name",nperecentagecharge as "Hire Fees" from contractrecruiter 不显示原来名字,显示现在名字【可不用AS】 select cname "Recruiter Name",nperecentagecharge "Hire Fees" from contractrecruiter 【双引号是否写】 双引号是为了区分大小写 职位表 position select *from position 缺额运算:[想减] select VDESCRIPTION , nbudgetedstrength, NBUDGETEDSTRENGTH -NCURRENTSTRENGTH , NYEAR from position

select VDESCRIPTION "Potion", nbudgetedstrength "Budgeted Strength" , NBUDGETEDSTRENGTH -NCURRENTSTRENGTH "Vacancies", NYEAR "Year" from position 显示非重复运行 查询来源地的人数 describe externalcandidate 查看职员城市名字 select ccity from externalcandidate 查看职员城市名字【名字不重复,插入一个关键字:distinct】select distinct ccity,cstate from externalcandidate 运算符: 两列 select vfirstname,vlastname from externalcandidate 字段拼接 select vfirstname||vlastname from externalcandidate select vfirstname||' '||vlastname from externalcandidate 学校 describe college 查看所有学校 select *from college 查看只是加利福尼亚的学校 select * from college where cstate='California' 一个条件 select vfirstname,vlastname,dbirthdate,ntestscore from externalcandidate where dbirthdate>='01-1月-70'

Oracle数据库期末复习知识点整理

基础知识 表3.2 Oracle数据类型

表3.3 XSB的表结构

操作表 创建表 CREATE TABLE [schema.] table_name ( column_namedatatype [DEFAULT expression] [column_constraint][,…n] [,…n] ) [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace_name] [STORGE storage_clause] [CLUSTER cluster_name(cluster_column,…n)] [ENABLE | DISABLE ] [AS subquery] 【例】使用CRETE TABLE命令为XSCJ数据库建立表XSB,表结构参照表3.3。 打开SQL*Plus工具,以system方案连接数据库,输入以下语句: CREATE TABLE XSB ( XH char(6) NOT NULL PRIMARY KEY, XM char(8) NOT NULL, XB char(2) DEFAULT '1' NOT NULL, CSSJ date NOT NULL, ZY char(12) NULL, ZXF number(2) NULL, BZ varchar2(200) NULL ); 修改表 ALTER TABLE [schema.] table_name [ ADD(column_namedatatype [DEFAULT expression][column_constraint],…n) ] /*增加新列*/ [ MODIFY([ datatype ] [ DEFAULT expression ] [column_constraint],…n) ] /*修改已有列的属性*/ [ STORAGE storage_clause ] *修改存储特征*/ [ DROP drop_clause ] /*删除列或约束条件*/ 【例】使用ALTER TABLE语句修改XSCJ数据库中的表。

Oracle笔记

数据库基本概念: 数据库:Database ,DB (数据) 数据库管理系统:(Database Management System,DBMS)oracle ,DB2,Sql_server 等 数据库系统:(Database System ,DBS) 关系型数据库:(Relationship Database ,RDB) SQL语言:(Structured Query Language,结构化查询语言) 数据建模: 要将现实世界中客观存在的事物以数据的形式存储到计算机中并进行处理,就需要对其进行分析,抽象,进而确定数据的结构以及数据间的内在联系,这一过程称为数据建模。 数据模型应满足三个方面的要求: 1,能够比较真实地模拟现实世界 2,容易为人所理解; 3,便于计算机实现。 数据模型三要素: 数据结构---描述事物的静态特性; 数据操作---描述事物的动态特性; 完整性约束----描述事物内部和事物间的约束性关系。 现实世界-------认识抽象-------->概念世界-------转换--------->机器世界 概念数据模型(Conceptual Database Model,CDM) CDM从用户的观点出发对信息进行建模,并不依赖于具体的计算机系统或某个DBMS系统,主要用于数据库的概念设计。 CDM以实体--关系(E-R)模型为基础,将现实世界中的客观对象抽象为实体和关系。 到机器世界中,CDM将被转化为特定DBMS所支持的物理数据模型(Physical Database Model ,PDM)。 CDM相关术语: 实体(Entity):客观存在并且可以相互区分开来的事物。 实体集(Entity Set):同一类实体的集合。 属性(Attribute):描述实体的特性。 关系(Relationship):实体集之间的对应关系(现实世界事物之间的相互关联)。 E-R图三要素: 实体:用矩形框表示

Oracle知识点总结

Oracle知识点总结 根据阎赫老师讲义整理Zealjiang 1、Oracle数据库的安装和配置 ⑴Oracle Internet级数据库 SQLServer 中小企业级数据库 Access 桌面级数据库 ⑵Oracle的安装 注意:来源和目标的目录不允许有中文或空格 ⑶Oracle数据库启动时必需开启的后台服务 ①OracleOrahome90TNSListener 使第三方的软件或语言访问 ②OracleServiceETC Oracle的实例 CRUD 增删改查 注意:②中的ETC是你起的实例的名字 ⑷Oracle的开发工具 ①DOS界面的开发平台 -> 运行->sqlplus ②Oracle本身基于DOS的平台 ->运行-> sqlplusw ③Oracle Enterprise Manager Console ④PL/SQL Developer7.1.5 ⑸创建一个表的完整流程 ①创建一个数数库 例子:创建一个数据库 ETC , 物理文件放在F:\ ,初始化1m ,自增长开启 create tablespace etc

datafile 'f:\etc.dbf' size 1m autoextend on; 删除表空间 drop tablespace 数据库名称; ②为该数据库创建一个帐号和密码 语法: create user 用户名称 identified by 密码 default tablespace 数据库名称 注意:1、在Oracle中账号和数据库one2one绑定 2、Oracle的密码不允许为纯数字或空 3、需要在system账号完成动作 修改Oracle的账号密码 语法:alter user 用户 identified by 新密码 ③用grant 权限 to 用户为该帐户授权 语法: grant 权限名称 to 用户; 撤销权限 语法:revoke 权限名称 from 用户名; ④在该帐号下创建表

oracle常用笔记总结

1、用dba权限的用户查看数据库都有哪些锁 select https://www.doczj.com/doc/0c16203793.html,ername,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; 2、查看有哪些对象被锁了 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id 3、根据sid查找进程id select pro.spid from v$session ses, v$process pro where ses.sid=129 and ses.paddr=pro.addr; select ses.sid from v$session ses, v$process pro where pro.spid=129 and ses.paddr=pro.addr; 4:根据这个spid对应linux下的进程pid linux命令: ps -ef | gre | 'ora' (找到所有ora开头的进程) kill -9 (pid) 5、解决delete后表的高水位的问题 初步判断应该是之前有大量数据,后来delete了,选成高水位,用shrink 清除高水位: alter table t_mobile_client_tp_prov enable row movement; alter table t_mobile_client_tp_prov shrink space; 重新收集统计信息: begin dbms_stats.gather_table_stats(ownname=>'traffic',tabname=>'T_MOBILE_CLIENT_TP_PR end; 6、ORA-02064 distributed operation not supported

Oracle数据库知识总结

AD1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 7. COL命令: 主要格式化列的显示形式。 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC ---------- ---------------------------- --------- 10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location --------- ---------------------------- ----------- 10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary ---------- ---------- ---------- 10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary ---------- ---------- ---------- 10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB ---------- ---------- --------- 7369 SMITH CLERK

oracle笔记

Oracle笔记 一、了解oracle 二、Oracle的安装 三、启动oracle: (1)、使用oracle中自带的sql*plus工具进入oracle。 (2)、利用sqlplus和sqlplusw打开oracle。 (3)、使用sql/pl developer进入oracle. (4)、使用oracle企业管理器 四、常用sql*plus命令: (1)、连接数据库: conn (ect) 用户名/密码@网络服务名(数据库名) (as sysdba/sysoper); 例如:conn scott/tiger; (2)、退出:exit; (3)、运行sql脚本: start 脚本地址。 例如:start d:\test.sql; (4)、修改sql脚本: edit 脚本地址。 (5)、截取屏幕代码spool,例如:spool d:\demo.txt…………….spool off; (6)、创建用户(以sysoper以上权限创建):create user 用户名identified by 密码; (7)、删除用户(以sysoper以上权限删除):drop user 用户名; (8)、修改用户密码:passw(ord)或alter user 用户名identified by 密码。 (9)、显示当前用户名:show user; (11)、断开数据库连接:disc(onnect); (12)、行距与每页显示次数:set linesize(pagesize) 数目。 (13)、给予权限: grant connect(连接权限)/resource(在system中创建表权限)/dba(最高权限) to 用户名with admin(系统权限下传)/grant(对象权限下传) option ; (14)、收回权限: revoke conn(连接权限)/resource(在system中创建表权限)/dba(最高权限) from 用户名(15)、使用profile文件管理用户: 限定用户登录次数: Create profile 文件名limit failed_login_attempts 3 password_lock_time 2; Alter user 用户名profile 文件名 用户解锁: Alter user 用户名account unlock;

韩顺平.2011最新版.玩转oracle视频教程(笔记)

韩顺平—玩转ora cle视频教程笔记一:Oracle认证,与其它数据库比较,安装

Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install (2)system用户是管理操作员,权限也很大。具有sysoper角色,没有create database的权限,默认的密码是manager (3)一般讲,对数据库维护,使用system用户登录就可以拉 也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。 二: Oracle的基本使用--基本命令 sql*plus的常用命令 连接命令 1.conn[ect] 用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper 2.disc[onnect] 说明: 该命令用来断开与当前数据库的连接 3.psssw[ord] 说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用 sys/system登录。 4.show user 说明: 显示当前用户名 5.exit 说明: 该命令会断开与数据库的连接,同时会退出sql*plus 文件操作命令 1.start和@ 说明: 运行sql脚本 案例: sql>@ d:\a.sql或是sql>start d:\a.sql 2.edit 说明: 该命令可以编辑指定的sql脚本 案例: sql>edit d:\a.sql,这样会把d:\a.sql这个文件打开 3.spool 说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。 案例: sql>spool d:\b.sql 并输入 sql>spool off 交互式命令 1.& 说明:可以替代变量,而该变量在执行时,需要用户输入。 select * from emp where job='&job'; 2.edit 说明:该命令可以编辑指定的sql脚本 案例:SQL>edit d:\a.sql

oracle GoldenGate学习笔记

Oracle GoldenGate测试文档1.Oracle GoldenGate介绍 GoldenGate TDM(交易数据管理)软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。GoldenGate TDM 软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,其复制过程简图如下: 如上图所示,GoldenGate TDM的数据复制过程如下: 利用捕捉进程(Capture Process)在源系统端读取Online Redo Log或Archive Log,然后进行解析,只提取其中数据的变化如增、删、改操作,并将相关信息转换为GoldenGate TDM自定义的中间格式存放在队列文件中。再利用传送进程将队列文件通过TCP/IP传送到目标系统。捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点,记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止并恢复后可从检查点位置继续复制; 目标系统接受数据变化并缓存到GoldenGate TDM队列当中,队列为一系列临时存储数据变化的文件,等待投递进程读取数据; GoldenGate TDM投递进程从队列中读取数据变化并创建对应的SQL语句,通过数据库的本地接口执行,提交到数据库成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。 由此可见,GoldenGate TDM是一种基于软件的数据复制方式,它从数据库的日志解析数据的变化(数据量只有日志的四分之一左右)。GoldenGate TDM将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达9:1的压缩率对数据进行压缩,可以大大降低带宽需求。在目标端,GoldenGate TDM可以通

相关主题
文本预览
相关文档 最新文档