查看: 642|回复: 2

Oracle常用命令集

 关闭 [复制链接]

签到天数: 2593 天

连续签到: 7 天

[LV.Master]至尊海神IIIIII

发表于 2010-8-6 20:35 | 显示全部楼层 |阅读模式
Oracle常用命令集







1. 表空间

创建表空间

create tablespace ts_name datafile ‘/path/file1.dbf’ size 200M, ‘/path/file2.dbf’ size 200M default storage (initial 64k next 64k maxextents unlimited pctincrease 50);

下述参数影响段的空间分配:

INITIAL 用字节指定表空间的第一个区间大小

NEXT 下一个区间大小

MAXEXTENTS 可增长的最多区间数

MINEXTENTS 首次创建时分配的区间数

PCTINCREASE 每次分配新的区间增加的百分比

向表空间增加数据文件

alter tablespace ts_name add datafile '/dev/name3' SIZE 2000M;

修改表空间状态

alter tablespace ts_name online/offline

检查剩余表空间

select tablespace_name, sum (blocks) as free_blk, trunc (sum (bytes) /(1024*1024)) as free_m, max (bytes) / (1024) as big_chunk_k, count (*) as num_chunks FROM dba_free_space GROUP BY tablespace_name;

检查表空间的使用情况

select tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name), ( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks, sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name ) WHERE tablespace_name = fs_ts_name

查看表空间都有哪些表

select table_name from dba_tables where tablespace_name='xxx';

注:'xxx'中tablespace_name 要大写。



2. 创建回滚段

CREATE ROLLBACK SEGMENT RS01 TABLESPACE TS_name

STORAGE (INITIAL 8M NEXT 8M MAXEXTENTS UNLIMITED);



3. 创建用户和授权

CREATE USER tempuser IDENTIFIED BY tempuser;

DEFAULT TABLESPACE TS_name1 TEMPORARY TABLESPACE TS_name2;

GRANT CONNECT TO tempuser;

GRANT DBA TO tempuser;

GRANT resource TO tempuser;



4. 创建表

create table tablename

(f1 NUMBER(10) not null,f2 NUMBER(10) null ,f3 NUMBER(3) defalut 0,pt number(3) not null ,c**traint PK_tablename primary key (f1) using index tablespace ts_name

storage (initial 1m next 1m pctincrease 0 )) pctfree 10 tablespace ts_name storage

(initial 1m next 1m pctincrease 0)

partition by range(pt)

(partition part000 values less than (1) tablespace ts_name,partition part001 values less than (2) tablespace ts_name,)



5. 创建索引

create index i_tablename1 on tablename(f2)

tablespace ts_name

storage

(

initial 500k

next 500k

pctincrease 0

)

插入自己的表和字段的注释信息(comment)

SQL> COMMENT ON TABLE emp  

2         IS 'Employee Information';

查看表的备注信息

ALL_COL_COMMENTS

USER_COL_COMMENTS

ALL_TAB_COMMENTS

USER_TAB_COMMENTS



select 查询时,有2000条记录符合条件,如何先取出符合条件前1000条,然后再取出符合条件的后1000条?

select * from table_name where rownum<=1000;

select * from table_name where rownum<=2000 minus select * from table_name where rownum<=1000;

select * from table_name where rownum<=3000 minus select * from table_name where rownum<=2000;



8. 数据库管理

查看版本信息

select * from product_component_version

查看断数据库的时区

SELECT DBTIMEZONE FROM DUAL

查看控制文件存储位置

select name from v$controlfile

查看数据文件存储位置及状态

select status,name from v$datafile

查看redo日志文件存储位置

select * from v$logfile

查看错误信息

oerr ora 错误号

找出所有表空间的名字

select * from v$tablespace

查看数据库的名字

select value from v$parameter where upper(name) like '%DB_NAME%'

注:'%DB_NAME%'中DB_NAME要保持大写。

检查已安装的SQL*NET的版本

可以在?/orainst目录下使用'inspdver'命令检查。

$inspdver|grepSQL*Net

2.3.4.0.0SQL*Net(V2)

如何知道我已经安装了哪种NETWORKDRIVER?

可以用'nm'命令检查,例如,TCP/IPDRIVER的符号名为'nttini',要检查Oracle是否链接了该符号,可以利用命令:nm oracle |grep nttini,如果nttini存在,表示rdbms已经链接了TCP/IPDRIVER.

在用createuser命令创建了一个用户之后,哪些表可以用来查看这个新用户的基本信息。

可以查看表dba_users,dba_ts_quotas

怎样检查是否一个数据库用户被授予sysdba,sysoper的权限

注册到sys用户下,查询数据字典v$pwfilw_users.

:如何查出前台正在发出的sql语句?

先查出正在运行的前台程序的sid:

  sql>select sid,serial#,username,program from v$session where status='ACTIVE';

然后根据上面得到的sid,可查出正在运行的前台程序发出的sql语句:

  sql>select user_name,sql_text from v$open_cursor wheresid=xx;



为远程用户设置"internal"的口令

先在数据库端的init<sid>.ora文件中设置

  remote_login_passwordfile=exclusive

并且为oracleowner设置环境变量

  ORA_<SID>_PWFILE=orapw<sid>.pwd

然后以oracleowner运行以下命令

  $cd$ORACLE_HOME/dbs

$orapwd file=orapw<sid>.pwd password=<passwd> entries=5



移动数据文件的位置

  1.正常关闭数据库;

  2.拷贝数据文件到新位置;

  $cp$ORACLE_HOME/dbs/dbsNEW.dbf/usr3/oracle/dbsNEW.dbf

  3.svrmgrl

  connectinternal;

  startup mount;

alter database renamefile'<$ORACLE_HOME>/dbs/dbsNEW.dbf'

to '/usr3/oracle/dbsNEW.dbf';

  alter database open.

移动LOG文件的位置

  可以先添加新的LOG文件,再删除原来的LOG文件。

  svrmgrl>connectinternal;

  alterdatabaseaddlogfile'<$ORACLE_HOME>/usr3/oracle/logNEW.dba';

alterdatabasedroplogfile'<$ORACLE_HOME>/dbs/logNEW.dbf';

在删除表空间之前删除了数据文件,如何恢复  

1) 关闭数据库服务  

2) >startup mount  

3) >alter database datafile 'fullpath_of_removed_DF' offline drop  

4) >alter database open  

5) >drop tablespace tbs_name including contents



在oracle7和oracle8之间export/import数据?

  A:必须先在oracle8数据库上以internal或sys用户运行catexp7.sql

  svrmgr>connectinternal

  svrmgr>@?/rdbms/admin/catexp7.sql



9.监控会话进程

select sid, serial#,username,terminal from v$session

alter system kill session 'sid, serial#'

如果这命令不行,找它UNIX的进程数

SQL> select pro.spid from v$session ses,v$process pro where ses.sid=21 and ses.paddr=pro.addr

说明:21是某个连接的sid数,然后用 kill 命令杀此进程号。



10.查看服务器端字符集



SQL > select * from  V$NLS_PARAMETERS
<
PCOS系统下载站:http://zhuangji.wang

签到天数: 1414 天

连续签到: 0 天

[LV.10]逍遥海仙III

发表于 2010-8-6 20:51 | 显示全部楼层
收下,慢慢看
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

签到天数: 210 天

连续签到: 0 天

[LV.7]护海使者III

发表于 2010-8-26 21:48 | 显示全部楼层
不懂
学习一下
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

本版积分规则