01 Oracle随笔[on Windows]

一个数据库实例可以有N个表空间,一个表空间下可以有N张表。


实例名指的是用于响应某个数据库操作的数据库管理系统的名称。她同时也叫SID。实例名是由参数instance_name决定的。


空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。


Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间。


======================================================================================
--查询当前数据库名:
select name from v$database;
--查询当前数据库实例名:
select instance_name from v$instance;


--创建表空间语法:
Create TableSpace 表空间名称 
DataFile          表空间数据文件路径 
Size              表空间初始大小 
Autoextend on
--如:
create tablespace SCS_FL  
datafile 'E:\app\Kelvin\oradata\orcl\SCS_FL.dbf'  
size 50m  
autoextend on;


--查看已经创建好的表空间:
select * from dba_tablespaces
---------------
select default_tablespace, temporary_tablespace, d.username from dba_users d order by username asc



--上面我们建好了 数据库和表空间,接下来建用户:
--命名冲突就修改:
select user#,name,password from user$ where name ='TICKETS'
--创建新用户:
CREATE USER          --用户名 
IDENTIFIED BY        --密码 
DEFAULT TABLESPACE   --表空间(默认USERS) 
TEMPORARY TABLESPACE --临时表空间(默认TEMP)
--如:
CREATE USER SCS_FL  
IDENTIFIED BY SCS_FL  
DEFAULT TABLESPACE SCS_FL  
TEMPORARY TABLESPACE temp;
--(这里临时表空间不能使用我们创建的db_test,不知为何?)


--有了用户,要想使用用户账号管理自己的表空间,还得给它分权限:
GRANT CONNECT TO SCS_FL;  
GRANT RESOURCE TO SCS_FL;  
GRANT dba TO SCS_FL;
--dba为最高级权限,可以创建数据库,表等。

--查看数据库用户:
select  * from dba_users




--有了 数据库,表空间和用户,就可以用自定义的用户在自己的表空间创建表了。有了表,我们可以开发了。
-- Create table
create table AA01
(
  aaa104 VARCHAR2(6) not null,
  aaa105 VARCHAR2(50),
  aaa106 VARCHAR2(6) not null,
  aaa107 VARCHAR2(50),
  aaa108 VARCHAR2(100) not null,
  aae100 VARCHAR2(1)
)
tablespace GKAGED
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    next 1
    minextents 1
    maxextents unlimited
  );
-- Add comments to the table
comment on table AA01
  is '系统配置表';
-- Add comments to the columns
comment on column AA01.aaa104
  is '配置代码';
comment on column AA01.aaa105
  is '配置名称';
comment on column AA01.aaa106
  is '配置子项代码';
comment on column AA01.aaa107
  is '配置子项名';
comment on column AA01.aaa108
  is '配置子项值';
comment on column AA01.aae100
  is '有效标志';
-- Create/Recreate primary, unique and foreign key constraints
alter table AA01
  add constraint PK_AA01 primary key (AAA104, AAA106, AAA108)
  using index
  tablespace GKAGED
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );
======================================================================================
导入导出
exp gkaged/gkaged@cdgk66 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log; 
--full=y是导出全数据库,一般只要导出表空间就可以了
imp hkb/hkb@xe  file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y

========================================================================================
不同版本的导入导出

Sql代码
--创建dump文件目录
create directory dump_test as 'D:\test\dump'
--授权读写权限给你要操作的用户
grant read, write on directory dump_test to 
username 
 
--查询是否存在自己创建的文件目录
select * from dba_directories;
  
select  * from da.user_tables
 
--注意低版本是不能导入高版本 比如我的数据库是11gR2 对方是11gr1 需要指定版本号11.1.0.6.0 
expdp username/password directory=dump_test dumpfile=data.dmp  version=11.1.0.6.0 
--默认导在刚才创建的目录 'D:\test\dump'
 
--导入文件
impdp username/password directory=dump_test dumpfile=data.dmp

==============================================================================================

Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下

对于单个user和tablespace 来说, 可以使用如下命令来完成。
步骤一:  删除user
drop user ×× cascade
说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。
步骤二: 删除tablespace
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;

sql创建表
========================================================================================
create table CS01(
lsid number(18) not null,
field1 varchar2(30),
field2 varchar2(30),
field3 varchar2(30)
);

alter table CS01 add constraint pk_cs01 primary key(lsid);

comment on table CS01 is '测试模块';
comment on column CS01.field1 is '字段一';
comment on column CS01.field1 is '字段二';
comment on column CS01.field1 is '字段三';


整个表空间总的某个属性的分布
==============================================================================================
select TABLE_NAME,COLUMN_NAME,COMMENTS from user_col_comments where COMMENTS LIKE '%联系人%';

sql操作字段
========================================================================================

ALTER TABLE (表名) ADD (列名 数据类型);  
ALTER TABLE (表名) MODIFY (列名 数据类型);  
ALTER TABLE (表名) RENAME COLUMN (当前列名) TO (新列名);  /////不需要括号 
ALTER TABLE (表名) DROP COLUMN (列名);  
ALTER TABLE (当前表名) RENAME TO (新表名);

========================================================================================




猜你喜欢

转载自1971161579.iteye.com/blog/2348786