Chinaunix首页 | 论坛 | 博客
  • 博客访问: 261289
  • 博文数量: 54
  • 博客积分: 2668
  • 博客等级: 少校
  • 技术积分: 560
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-06 01:08
文章分类

全部博文(54)

文章存档

2011年(14)

2010年(14)

2009年(26)

分类: Oracle

2010-08-04 09:33:28

 

 

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 ,constraint 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.ora文件中设置

  remote_login_passwordfile=exclusive

并且为oracleowner设置环境变量

  ORA__PWFILE=orapw.pwd

然后以oracleowner运行以下命令

  $cd$ORACLE_HOME/dbs

$orapwd file=orapw.pwd password= 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

 

oracle7oracle8之间export/import数据?

  A:必须先在oracle8数据库上以internalsys用户运行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

阅读(1467) | 评论(0) | 转发(0) |
0

上一篇:ipsec

下一篇:oracle 小技巧

给主人留下些什么吧!~~