`

ORACLE DB操作

阅读更多
在oracle10g数据库中修改表的结构



以下以已经创建的表(hencent)为例叙述:



create table hencent(id number(10),name varchar(10),addr varchar(20));



A:



1.编辑表的字段



修改一个列的数据类型(一般限于修改长度,修改为一个不同类型时有诸多限制,且只能将长度改大)



语法:



Note:在修改列的数据类型的时候,所修改的列必须为空



ALTER TABLE表名MODIFY(列名数据类型);



Eg:



Alter table hencent modify(id number(10,20));



Eg;



Alter table hencent modify(addr varchar(30));



2.增加一个列



语法:



ALTER TABLE表名ADD(列名数据类型);



Eg:



Alter table hencent add(sex char(10));



3.修改列名:



语法:



ALTER TABLE表名RENAME COLUMN当前列名TO新列名;



Eg:



Alter table hencent rename column id to no;



4.删除一个列



语法:



ALTER TABLE表名DROP COLUMN列名;



Eg:



Alter table hencent drop column id;



5.将一个表改名



语法:



ALTER TABLE当前表名RENAME TO新表名;



Eg:



Alter table hencent rename to test;



5.给表加注释



comment column on表名.列名is '注释内容';  //修改表的列的注释



COMMENT ON TABLE MOVO_NEW.TEST_SAKTE IS '注释内容'; //修改表的注释



 
1.创建表空间

SQL> create tablespace testspace
datafile 'd:/OracleTest/test001.dbf' size 10m autoextend on next 5m maxsize unlimited
extent management local ;

2.给表空间添加文件

SQL> alter tablespace testspace add datafile 'd:/OracleTest/test002.dbf' size 5m
autoextend on next 3m maxsize 50m;

3.删除表空间中的文件

SQL> alter tablespace testspace drop datafile 'd:/OracleTest/test002.dbf';

4.修改表空间文件的大小

SQL> alter database datafile 'd:/OracleTest/test001.dbf' resize 10m;

5.修改表空间文件的自动增长属性
SQL> alter database datafile 'd:/OracleTest/test001.dbf' autoextend off;

6.修改表空间的读写属性

SQL> alter tablespace testspace read only;(只读)

SQL> alter tablespace testspace read write;(读写)

7.设置表空间脱/联机

SQL> alter tablespace testspace offline;

SQL> alter tablespace testspace online;

8.转移物理文件路径的操作

(1)设置表空间脱机alter tablespac testspace offline;

(2)物理转移表空间文件;即把你的表空间物理文件转移到你想移动的路径

(3)逻辑转移:alter tablespace testspace rename  datafile  'd:/OracleTest/test001.dbf' to 'e:/test001.dbf';

(4)设置表空间联机alter tablespace testspace online;

9.删除表空间

(1)不删文件drop tablespace testspace;

(2)删除文件drop tablespace testspace including contents and datafiles;

10.物理文件被非法删除时,怎样启动数据库

(1)关闭数据库服务   shutdown

(2)alter database datafile 'd:/test001.dbf' offline drop;

(3)alter database open;

(4)开启数据库服务startup;


以下是具体的一些操作代码:



SQL> conn / as sysdba;
已连接。


//获取数据库有多少重做日志组等等信息


SQL> select group#,sequence#,members,bytes,status,archived from v$log;

    GROUP#  SEQUENCE#    MEMBERS      BYTES STATUS           ARC
---------- ---------- ---------- ---------- ---------------- ---
         1         74          1   52428800 INACTIVE         NO
         2         75          1   52428800 CURRENT          NO
         3         73          1   52428800 INACTIVE         NO



//添加重做日志文件组



SQL> alter database add logfile
  2  ('F:\disk1\redo04a.log','F:\disk2\redo04b.log')
  3  size 15M;

数据库已更改。


//验证新的重做日志组



SQL> select group#,sequence#,members,bytes,status,archived from v$log;

    GROUP#  SEQUENCE#    MEMBERS      BYTES STATUS           ARC
---------- ---------- ---------- ---------- ---------------- ---
         1         74          1   52428800 INACTIVE         NO
         2         75          1   52428800 INACTIVE         NO
         3         76          1   52428800 CURRENT       NO
         4          0          2   15728640 UNUSED           YES


//设置格式,以便于现示清晰


SQL> col member for a50;
SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- --------------------------------------------------
IS_
---
         3         ONLINE  D:\ORACLE1\PRODUCT\10.2.0\ORADATA\ORDB\REDO03.LOG
NO

         2         ONLINE  D:\ORACLE1\PRODUCT\10.2.0\ORADATA\ORDB\REDO02.LOG
NO

         1 STALE   ONLINE  D:\ORACLE1\PRODUCT\10.2.0\ORADATA\ORDB\REDO01.LOG
NO


    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- --------------------------------------------------
IS_
---
         4         ONLINE  F:\DISK1\REDO04A.LOG
NO

         4         ONLINE  F:\DISK2\REDO04B.LOG
NO


SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- --------------------------------------------------
IS_
---
         3         ONLINE  D:\ORACLE1\PRODUCT\10.2.0\ORADATA\ORDB\REDO03.LOG
NO

         2         ONLINE  D:\ORACLE1\PRODUCT\10.2.0\ORADATA\ORDB\REDO02.LOG
NO

         1 STALE   ONLINE  D:\ORACLE1\PRODUCT\10.2.0\ORADATA\ORDB\REDO01.LOG
NO


    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- --------------------------------------------------
IS_
---
         4         ONLINE  F:\DISK1\REDO04A.LOG
NO

         4         ONLINE  F:\DISK2\REDO04B.LOG
NO


//删除不需要的重组日志文件,并且验证是否删除成功



alter database drop logfile group 4;
select * from v$logfile;



//在每个重做日志组中添加一个成员



SQL> alter database add logfile member
2 'F:\disk1\redo01b.log' to group 1,
3 'F:\disk1\redo02b.log' to group 2,
4 'F:\disk1\redo03b.log' to group 3;
数据库已更改



//验证是否添加成功



select group#,sequence#,members,bytes,status,archived from v$log;


//获得每个新创建的重做日志文件名,利用数据字典V$logfile



col member for a50;
set line 100;
select * from v$logfile;


//如何删除不需要的重做日志成员



alter database drop Logfile member
2 'F:\disk1\redo01b.log';


//清楚联机重做日志文件


alter database clear logfile group x;




oracle数据库之----最基础的命令
上一篇 / 下一篇  2011-04-16 13:58:34

查看( 22 ) / 评论( 4 )
--查询本地所有的用户

select username from dba_users;

--解锁某个本地的用户

alter user XX identified by yyy(code) account unlock;

--创建用户

create user pm(username) identified by pm;

--创建表的权限的赋予,先要赋予该用户connect的权限(之前可能要先创建角色),然

后赋予其resource的权限后,该用户就可以创建表并且拥有常用的权限,譬如ASIC(增删

插改)

grant connect to XX;
grant resource to XX;
revoke (权限名)insert from XX;(通过revoke回收权限)

--查看归档、非归档模式

archive log list;

--查看某个用户内的所有表

select * from all_tab_columns;
select table_name from user_tables;

--查看主机名

select host_name from v$instance;

--查看实例状态

select instance_name,status from v$instance;

--用户用user_catalog查看它所拥有的所有表的名字和类型

desc user_catalog(cat)

--显示并且改变内存缓冲区顾问(v$db_cache_advice)各参数的值

select id,name,block_size,advice_status from v$db_cache_advice;

alter system set db_cache_size = 4096;(此为其中一例)

--获得参数sga_max_size的值

select name,type,value from v$parameter where name = 'sga_max_size';

startup pfile = G:\oracle\product\10.2.0\db_1\database\initORDB.ora

--将一运行的数据库状态置为限制模式

alter system enable restricted session;

如下,表a是数据库中已经存在的表,b是准备根据表a进行复制创建的表:

1、只复制表结构的sql

  create table b as select * from a where 1<>1

2、即复制表结构又复制表中数据的sql

   create table b as select * from a

3、复制表的制定字段的sql

  create table b as select row_id,name,age from a where 1<>1

前提是row_id,name,age都是a表的列

4、Oracle复制表的指定字段及这些指定字段的数据的sql

  create table b as select row_id,name,age from a

以上语句虽然能够很容易的根据a表结构复制创建b表,但是a表的索引等却复制不了,需

要在b中手动建立。

5、insert into 会将查询结果保存到已经存在的表中
   insert into t2(column1, column2, ....)
   select column1, column2, .... from t1






分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics