在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
以下以已经创建的表(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