查找数据库中所有字段 以对应的表
select C.column_name,C.TABLE_NAME from dba_tab_columns C where owner=''
查每个科目class 分数scro前三名
select id, name, class, scro
from (select row_number() over(partition by class order by scro desc) cnt,
id,
name,
class,
scro
from student) a
where a.cnt <= 3;
查找排序后的前三行
select *
from (select rw.*, rownum
from (select *
  ......
1、使用oracle用户登录,连接数据库
[oracle@wuzj ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Feb 26 12:06:29 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
//查看用户
SQL> select username,password from dba_users;
USERNAME PASSWORD
------------------------------ ------------------------------
USER1 BBE7786A584F9103
MGMT_VIEW 4F538DF5F344F348
SYS 8A8F025737A9097A
SYSTEM 970BAA5B81930A40
DBSNMP FFF45BB2C0C327EC
SYSMAN 2CA614501F09FCCC
OUTLN 4A3BA55E08595C81
MDSYS &n ......
随着时间的推移,有可能原来没有规划好的数据文件所在的盘空间已经不够了,或者我们有需要把一个datafile移动好其他的地方,这时候我们改如何操作呢?
这里有最简单的一个方法
1. offline数据文件所被包含的tablespace,
alter tablespace testts offline;
2. rename 原有的datafile指向新的路径
#cp /opt/oracle/oradata/orcl/testts01.dbf /opt/oracle/oradata/test/testts01.dbf
SQL>alter tablespace testts rename datafile ‘/opt/oracle/oradata/orcl/testts01.dbf’
to ‘/opt/oracle/oradata/test/testts01.dbf’;
或者用datafile 序号
alter tablespace testts rename datafile 3
to ‘/opt/oracle/oradata/test/testts01.dbf’;
3. online已经改好的tablespace
SQL> alter tablespace testts online;
自此操作完成。
......
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp [email=system/manager@TEST]system/manager@TEST[/email] file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp [email=system/manager@TEST]system/manager@TEST[/email] file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表inner_notify、notify_staff_relat导出
......
(1)创建 Oracle 组和用户帐户
例如:
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle
# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
设置 oracle 帐户的口令:
passwd oracle
(2)创建目录
例如:
# mkdir -p /oracle
# chown -R oracle:oinstall /oracle
# chmod -R 775 /oracle
(3)配置 Linux 内核参数,修改后不用重启动更新: /sbin/sysctl -p
第一种:打开/etc/sysctl.conf 复制如下内容
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
(4)oracle 用户的环境变量
以 oracle 身份登录,并通过在 .bash_profile 或 .profile(bash 或 ksh)中添加以下行,将
ORACLE_BASE 添加到登录配置文件(直接gedit /home/oracle/.bash_profile)
增加下列内容:
export ORACLE_BASE=/oracle
export ORA ......
create table TN_TEST(
username varchar2(32),
userpass varchar2(32),
version number
)
要求一:
TN_TEST表中字段version
每次修改TN_TEST表则讲version自动加一
建立触发器语句:
create trigger add_ver before update on TN_TEST for each row begin
:new.version:=:old.version+1;
end;
要求二:
用触发器和序列实现自增
/*首先创建序列*/
create sequence SEQ_TN_TEST increment by 1 start with 1 MAXVALUE 9999999
/*创建触发器实现自增*/
Create Trigger up_ver Before
Update On TN_TEST
For Each Row begin
select SEQ_TN_TEST.nextval into :new.version
from dual;
end up_ver;
/*触发器结束*/ ......