分类: Oracle
2010-08-04 09:33:28
1. 表空间
创建表空间
create tablespace ts_name datafile ‘/path/file1.dbf’ size
下述参数影响段的空间分配:
INITIAL 用字节指定表空间的第一个区间大小
NEXT 下一个区间大小
MAXEXTENTS 可增长的最多区间数
MINEXTENTS 首次创建时分配的区间数
PCTINCREASE 每次分配新的区间增加的百分比
向表空间增加数据文件
alter tablespace ts_name add datafile '/dev/name3' SIZE
修改表空间状态
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
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
(initial
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
如何知道我已经安装了哪种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
remote_login_passwordfile=exclusive
并且为oracleowner设置环境变量
ORA_
然后以oracleowner运行以下命令
$cd$ORACLE_HOME/dbs
$orapwd file=orapw
移动数据文件的位置
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