免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5502 | 回复: 9
打印 上一主题 下一主题

我的OCP DBA1学习笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-07 22:24 |只看该作者 |倒序浏览
6月份参加了ocp的培训,后来几个月一直在复习巩固ocp的4门课程,同时也在做些笔记。觉得这是一个学习的好方法,现将我的学习笔记(即对我来说,不太熟悉或认为很重要的部分)刊登出来,如果对大家有些帮助,那就再好不过了!   
我的笔记主要是根据OCP教材来写的。


                       2.  Getting started with the oracle server

1)use DBCA create/configure/del/manage  DB
the usage of templates of dbca: 创建好数据库模板后,下次用DBCA时会出现以前创建的模板!
Sys,system都是在创建数据库时自动创建,并被赋予了DBA角色(记住,sysdba,sysper是权限,dba是角色),它们的初始密码分别是change_on_install和manager。
----------------------------------------------------------------------------
Ora-12560错误原因(更多地出现在windows主机上):
一台host上安装了多个DB,但连接时没有指定,可用set oracle_sid=***
----------------------------------------------------------------------------
Oracle OEM: 为DBA提供了一个集中管理多个oracle数据库节点的图形工具。
创建OEM的步骤:
1)        在客户端利用Enterprise Manager Configuration Assitant创建repository资料档案库(创建过程中会让你在server端指定新建一个用户,一个OEM_reposity表空间)。
2)        在客户端主机上,启动相关服务(ManagementServer,Agent)
3)        在客户端启动OEM控制台
以sysman/oem_temp用户登陆(sysman用户是默认存在于客户端的图形化工具里的,系统此时会提醒你修改sysman密码。
说明:也可以选择独立启动进入OEM,用这种方法就不需要上面的步骤。但此时的OEM的功能会少很多。
4)连接server端数据库,输入你在创建数据库时新建的用户名及密码或以sys用户登陆。
说明:建好OEM后又修改了sys密码,可能需要重建repository。







                  3。管理oracle实例

spfile,pfile的互相创建
spfile是二进制文件,oracle推荐,RMAN已把spfile纳入备份体系中。
create spfile from pfile(若该命令不能运行,证明instance由spfile启动)
修改静态参数时,又想从spfile启动,可以:
1)        shutdown  db
2)        edit pfile
3)        create spfile from pfile
4)        startup
应经常同步pfile和spfile
(动态)修改spfile的参数
alter system set undo_tablespace=undo2
(不加scope表示就是both,默认也是both,如果只想在memory or spfile两者中选其一,就需要在scope里说明.
ALTER SYSTEM RESET undo_suppress_errors SCOPE=BOTH SID=’*’;删除或重设参数
Order of precedence:
spfileSID.ora> Default SPFILE> initSID.ora> Default PFILE
DB启动的3个步骤
1)        nomount( 读spfile/pfile,初始化SGA)
2)        mount(读控制文件)
3)        open(读控制文件描述的各个文件并检查一致性)

session:一个用户的连接
transaction:事务,一次修改或select。
Alert_SID.log(对应background_dump_dest)实例的监控调试文件
User Trace Files(对应USER_DUMP_DEST),大小由MAX_DUMP_FILE_SIZE
Enabling or Disabling User Tracing
• 会话级:
ALTER SESSION SET SQL_TRACE = TRUE
dbms_system.SET_SQL_TRACE_IN_SESSION
•事例级 在参数文件里设置:SQL_TRACE = TRUE
加深(有价值的)文章: pfile和spfile文件(by eygle)


                                              4. 创建数据库

数据库管理的认证方式(需要查找文章仔细看):
1)OS认证
2)password文件(参数文件只保存sys用户的口令,其他用户包括system用户的口令都保存在数据字典中。
语法orapwd file=/opt/dbs/ora password=abc123 entries=5
entries :最多有sys用户权限的用户数量
初始化文件里的参数remote_login_password_file=exclusive
  
----look /opt/rdbms/admin/buildall.sql

create database db01
maxlogfiles 10
maxdatafiles 1024
maxinstances 2
logfile
        GROUP 1 ('/u01/oradata/db01/log_01_db01.rdo') SIZE 15M,
        GROUP 2 ('/u01/oradata/db01/log_02_db01.rdo') SIZE 15M,
        GROUP 3 ('/u01/oradata/db01/log_03_db01.rdo') SIZE 15M,
   datafile 'u01/oradata/db01/system_01_db01.dbf') SIZE 100M,
   undo tablespace UNDO
      datafile '/u01/oradata/db01/undo_01_db01.dbf' SIZE 40M
   default temporary tablespace TEMP
      tempfile '/u01/oradata/db01/temp_01_db01.dbf' SIZE 20M
      extent management local uniform size 128k
   character set AL32UTE8
   national character set AL16UTF16
   set time_zone='America/New_York';
---------------------------------------------------------------------
创建数据库最好的方法:推荐用DBCA
用手工创建比较复杂!
数据库管理的认证方式(需要找文章看)




图解oracle口令认证方法

我们在linux 把oracle 安装完毕后我们可以通过下边的命令进入数据库.
$ cd $ORACLE_HOME/dbs
$ sqlplus “/ as sysdba”
SQL>show user   
USER is "SYS"  
并没有让我们输入用户名和密码
这就是说.用户只要登陆到LINUX系统就可以进入到ORACLE数据库系统里.这样对ORACLE的安全有很多隐患.
下面我们就ORACLE进行设置使它必须输入用户名和密码才能进入.
首先我们修改参数文件.将参数文件REMOTE_LOGIN_PASSWORDFILE 修改为EXCLUSIVE (一般默认就是EXCLUSIVE. 如果不是改成. 参数文件一般在 /opt/oracle/admin/ora9i/pfile/ 下)
除了参数文件我们还要修改网络配置文件 SQLNET.ORA以改变数据库的人证方式.
该文件位于 /opt/oracle/product/9.2/network/admin/sqlnet.ora
在SQLNET.ORA增加一行
SQLNET.AUTHENTICATION_SERVICES= (NTS)
这时候我们在输入 $sqlplus “/ as sysdba” 会要求你输入用户名和密码.
sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Sun Sep 3 16:18:44 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
这时我们输入用户名和密码也不能进入.我们应当这么书写
$ sqlplus “sys/你的密码 as sysdba”
就可以进入了!
这个方法对ORACLE9.2 以上版本十分有效.


                       5. 使用数据字典或动态性能视图

数据字典B的核心,sys用户拥有,保存在system表空间,描述数据库及其对象,为只读,通过select来查询。
数据字典包含:1)基础表: 保存DB的描述,由create db时的sql.bsl创建
              2)数据字典视图:用于简化基础表信息,通过公用别名来访问,由catalog.sql创建。
Catproc.sql :创建PL/SQL的环境。
数据字典视图类别:
  DBA_XXX:所有对象
  ALL_XXX:用户所能访问的所有对象
  USER_XXX:用户所拥有的所有对象
通用视图:DICTIONARY(可查所有数据字典),DICT_COLUMNS
SCHEMA对象:DBA_TABLES,DBA_INDEXES,DBA_TAB_COLUMNS,DBA_CONSTRAINS
空间分配:DBA_SEGMENTS,DBA_EXTENTS
数据库结构:DBA_TABLESPACES,DBA_DATA_FILES
动态性能表:sys用户拥有,记录数据库当前活动的虚拟表,存在于内存中,以V$开头,在v$fixed_table中列出。

• V$DATABASE
• V$DATAFILE
• V$INSTANCE
• V$PARAMETER
• V$SESSION
• V$SGA
• $SPPARAMETER
• V$TABLESPACE
• V$THREAD
• V$VERSION

set wrap off

user_tables;
all_tables;
dba_tables;


更多章节,请访问 http://wangyl1977.cublog.cn .

论坛徽章:
0
2 [报告]
发表于 2006-11-17 16:08 |只看该作者
楼主的学习精神很值得我们学习!

支持一吧!

论坛徽章:
0
3 [报告]
发表于 2006-11-17 17:35 |只看该作者
鼓励, 支持, 继续贴...

论坛徽章:
0
4 [报告]
发表于 2006-11-17 18:47 |只看该作者

谢谢exitgogo和blue_stone的鼓励

谢谢exitgogo和blue_stone的鼓励,继续贴!更好的格式可见http://wangyl1977.cublog.cn                     


   6 管理控制文件


当数据库的结构发生变化的时候,控制文件随即发生变化。
添加控制文件步骤:
1)sql>alter system set control_files='/opt/oradata/u01/ctrl01.ctl',
'/opt/oradata/u01/ctrl02.ctl' scope=spfile;(必须加spfile,因为修改不能写到内存里
2)sql>shutdown immediate;
3) cp /opt/oradata/u01/ctrl01.ctl /opt/oradata/u01/ctrl02.ctl
4)    startup;


重要的视图:
V$CONTROLFILE:
V$PARAMETER:
V$CONTROLFILE_RECORD_SECTION:
V$BACKUP
V$DATAFILE
V$TEMPFILE

V$TABLESPACE

V$ARCHIVE

V$LOG

V$LOGFILE

V$LOGHIST

V$ARCHIVED_LOG

V$DATABASE


show parameter control;
select * from v$controlfile_record_section;
select * from v$tempfile;


备份控制文件
alter database backup controlfile to '../filepath/control.bak';


备份控制文件,并将二进制控制文件变为了arc 的文本文件
alter database backup controlfile to trace;

控制文件在备份中意义重大,建议每次对其单独备份。同时应该增大CONTROL_FILE_RECORD_KEEP_TIME这个初始化参数的值。以便备份信息能更长时间的保留。





                7 管理在线重做日志

redo log会记录数据库的所有操作,不仅仅只包括修改操作!

Redo log switch时会触发checkpoint,同时信息会写到controlfile里。

alter system switch logfile;强行进行一次日志switch,归档/非归档均可使用

alter system archive log current;强行归档并进行日志切换,用于归档模式下

alter system checkpoint;--强制进行一次checkpoint

FAST_START_MTTR_TARGET:checkpoint 同步频率参数,9I新参数,表示将来系统crash后你期望recover的时间。用来替代以前版本里的FAST_START_IO_TARGET,LOG_CHECKPOINT_TIMEOUT

将参数LOG_CHECKPOINT_TO_ALERT设为true(默认为false),系统会将每个SCN记录在alert_SID.log里!

加入一个日志组
alter database add logfile group 3 ('opt/oracle/log6.rdo' size 10M);

向日志组中加入一个成员
alter database add logfile member '/opt /oracle/log6b.rdo' to group 3;

删除日志组:当前日志组不能删;活动的日志组不能删;非归档的日志组不能删
alter database drop logfile group 3;
删除日志组中的某个成员,但每个组的最后一个成员不能被删除 ???????
alter databse drop logfile member '/opt/oracle/log6.rdo';

redo log的状态:

1)    inactive :非活动的状态

2)    active: 活动的状态,oracle认为可疑的状态

3)    current:当前将要写的redo log,执行归档后,current之前的redo log肯定也必须被归档,否则数据库处于挂死状态。

4)    unused:新增加的redo log状态
重命名日志文件

1--- shutdown immediate;

2---移动online redo log

3---startup mount

4---alter database rename file '/6.rdo' to '/6a.rdo';

5---alter database open

清除在线日志
alter database clear logfile '/opt/oracle/ora_log_file6.rdo';
alter database clear logfile group 3;
清除非归档日志
alter database clear unarchived logfile group 3;

归档模式到非归档模式的互换

1---startup mount;

2---alter database noarchivelog/archivelog;
  3---alter database open

achive log start;---启动自动归档
alter system archive all;--手工归档所有日志文件
archive log list;

alter system archive log start;--启动自动存档

show parameter log_archive;



LOGMINOR的使用



v$log;
v$log_history;

能看出已归档的redo log  seq.



v$archived_log;

v$logfile;

从v$Log重要列:

ARC : redo log是否被归档

STATUS: current / inactive/ active/

First_time: 记录该redo log记录数据库第一次修改的时间






                     8.管理表空间和数据文件

Locally managed tablespace:空闲extent的管理放在本地表空间里,位图用于记录空闲extent,位图的值0,1对应free or used,每个bit对应一个extent。优点:由于空闲extent的管理放在本地表空间里,因而减少了对数据字典的竞争,空间的分配和回收也不会产生系统undo段。由于采用标准大小,无需愈合!默认的,分配的空间按标准大小来划分。

若创建时UNIFORM SIZE为128K,则新建的extent初始划分了128K,即使你创建的表只分配了64K;

uniform size=sort_area_size*N

sort_area_size在PGA区

Dictionary-managed tablespace: 空闲extent的管理放在数据字典里,空间的分配和回收会修改相关表!易产生碎片!

Temp表空间:初始创建时分配的大小只是最大值,并不是立刻就分配的大小,磁盘空间足够的话就可以创建永旧表空间来排序,不一定非要用,也不推荐用,会产生OS级别的碎片!restart时由SMON收回。

创建默认Temp表空间:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE default_temp2;

Temp表空间的限制:不能在没有新的临时表空间的情况下删除当前的临时表空间,不能被offline或改为永久表空间。

Create temporary tablespace userdata tempfile '/opt/oradata/undo101.dbf' size 10m extent management local;
设置数据库缺省的临时表空间
alter database default temporary tablespace tablespace_name;
系统/临时/在线的undo表空间不能被offline

永久表空间:初始创建时分配的大小就是立刻就分配的大小。

将表空间设为read only的限制条件:

1)           表空间必须online

2)           在线备份该表空间时不能设为read only

3)           系统会等待当前事务完成

4)           不能包含活动回滚段

只读表空间里的对象可以删除,因为删除只是在数据字典里删除这个对象

将数据字典管理的表空间转换为本地管理表空间:

DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL(’SYSTEM’);

创建undo tablespace(只能用本地管理模式下)
create undo tablespace undo1 datafile '*.dbf' size 40M extent management local;
Dropping Tablespaces user

• INCLUDING CONTENTS                   :drops the segments.

• INCLUDING CONTENTS AND DATAFILES  :deletes data files.

• CASCADE CONSTRAINTS drops all referential integrity constraints.

检查数据文件是否有extent的方法:检查DBA_EXTENT里是否有extent,如果无,则表明无数据!



使数据文件自动扩展:

1)create tablespace userdata datafile '*.dbf' size 100M AUTOEXTEND ON NEXT 5M MAXSIZE 200M;

2) alter database datafile '*.dbf' autoextend on/off;

手工修改数据文件大小(在open时操作,只要resize的大小大于已使用的即可)
alter database datafile '/opt/oradata/undo102.dbf' resize 50m;



给表空间扩展空间
alter tablespace userdata add datafile '*.dbf' size 10m;



移动数据文件:

1)将对应的表空间offline(系统会等待当前事务结束)

2)alter tablespace user rename datafile '*01.dbf' to '*02.dbf';


重命名系统表空间

1)    sql>shutdown immediate;

2)    sql>startup mount;

3)    sql>alter database rename file  '*1.dbf' to  '*2.dbf';



表空间和数据文件的对应关系
select t1.name,t2.name from v$tablespace t1,v$datafile t2 where t1.ts=t2.ts;

在创建表空间时,设置表空间内的段空间管理模式,这里用的是自动管理

create tablespace userdata datafile '*01.dbf' size 100M extent management dictionary default storage(initial 100k next 100k pctincrease 10) offline;
alter tablespace userdata mininum extent 10;
alter tablespace userdata default storage(initial 1m next 1m pctincrease 20);

将表的某分区移动到另一个表空间
alter table test move partition partition_name tablespace tablespace_name;

重要视图:
DBA_TABLESPACES

V$TABLESPACE

DBA_DATA_FILES

V$DATAFILE

DBA_TEMP_FILES
V$TEMPFILE

DATABASE_PROPERTIES

9. ORACLE 存储结构及关系



segment: 常用的有table,index,undo segment.

Extent: 在表空间里由segment使用的一大块空间,是segment的下一级。刚建立的tablespace没有新建segment,也就没有extent. Segment可以跨越多个datafile,但extent不可以。

存储字句优先顺序:

首先调用在segment级(除非在tablespace级使用minimum extent or uniform size),若没定义,就使用tablespace的定义,甚至db定义(数据库级initial 5个block,next 5 block)。

Extent的分配:当创建/扩展/修改segment时。

Extent的回收:当删除/修改/truncate segment时。



Drop:删除segment

Truncate:删除数据并重新初始化,truncate后只被初始化1个extent。



DB BLOCK:由一个或多个OS block组成,大小由DB_BLOCK_SIZE决定。   在创建表空间时建立,DB_BLOCK_SIZE只能通过重建数据库时重新修改。

Db_Cache_Size:早期版本用Db_Block_Buffers, 定义标准Block默认的Buffer Cache,至少一个颗粒。

非标准的block size: 最小为一个颗粒。若建立了2k的block size(非标准的),oracle会分配DB_2K_CACHE_SIZE的内存,此时DB_nk_Cache_Size(nk为标准块大小)无意义,因为标准块对应的内存大小已由Db_Cache_Size定义。



创建非标准块大小的表空间:

CREATE TABLESPACE tbs_1 DATAFILE ’tbs_1.dbf’ SIZE 10M BLOCKSIZE 4K;



多个block大小的限制条件:临时表空间必须使用标准块大小,分区对象的所有分区所在的表空间的块大小必须一致。



数据块管理的方式:

1)           自动segment空间管理方式:使用Bitmap(这个BITMAP存于??)来管理数据库segment,只能在tablespace级别Enable.

CREATE TABLESPACE data02 DATAFILE ‘/u01/oradata/data02.dbf’ SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K

SEGMENT SPACE MANAGEMENT AUTO; 不定义则采用默认的手工管理,要改变只能重建tablespace.

2)          手动管理BLOCK(默认)。

pctused:如果数据块的使用率小于pctused的值,则该数据块重新加入到fresslist(位于segment)中。该数据块就可以插入数据。默认40.
pctfree:如果数据块的空余率小于pctfree的值,则该数据块从freelist中移出。该数据块不可以插入数据。留下一部分free值用于update。默认10.

Inittrans: 事务要访问数据block时系统会在block头里初始化事务槽(用于记录事务)。

Maxtrans: 最大的事务槽,事务槽越大,占用Block空间越多。



手工分配表空间段的分区(extent)大小
alter table kong.test12 allocate extent(size 1m datafile '/opt/oradata/undo102.dbf');
alter table kong.test12 deallocate unused; ---释放表中没有用到的分区
show parameter db;
alter system set db_8k_cache_size=10m;  ---配置8k块的内存空间块参数。


碎片率: 临时表空间碎片率最大,undo表空间次之


数据对象所占用的字节数
select sum(bytes) from dba_extents where onwer='kong' and segment_name ='test';



重要的视图:

DBA_EXTENTS (relative_fno ??)
DBA_SEGMENTS(min_extents:若为20,初始化1个extent后再自动扩展19个)

DBA_TABLESPACES
DBA_DATA_FILES

DBA_FREE_SPACE





















第十章:管理回滚段



undo 段应用于DML操作(insert,update,delete,merge),对应smon在做recovery时用到。

回滚段的作用:

1)    事务回滚(当执行rollback,会将会滚段数据写到数据表里

2)    事务恢复

3)    读一致性

读一致性:读取的数据是从undo段还是从数据文件的表里读取决于时间点(也即SCN),如果读的时间点(SCN)比commit时的SCN小,系统从undo段读取数据,如果比commit时的SCN大,就从数据文件的表里读取数据!



回滚段的类别:

1)    系统回滚段 (用于system 表空间)

2)    非系统回滚段 (用于其他表空间)

自动模式: 要求有一个undo tablespace

手工模式:

3)    deferred :用于将表空间设为offline immediate,temporary或置于recovery状态



自动管理回滚段是oracle9i默认的方式,对应参数

undo_management=auto

undo_tablespace=undotbs



创建回滚段:

create undo tablespace undo1 datafile ‘*.dbf” size 50M;

alter tablespace undo1 add datafile



切换回滚段表空间:

1)           create undo tablespace undo1 datafile ‘*.dbf” size 50M;

先创建一个回滚段表空间(一个DB里可以有多个undo 表空间,但一个实例只能激活一个undo表空间)

2)           alter system set undo_tablepspace=undo1

3)           检查以前的UNDO表空间是否已无活跃事务

SQL> SELECT a.name,b.status FROM v$rollname a, v$rollstat b WHERE a.name IN ( SELECT segment_name  FROM dba_segments)

AND a.usn = b.usn;

NAME STATUS

------------------------- ---------------

_SYSSMU4$ PENDING OFFLINE

若status为pending offline,可将旧undo段删除。

4)   set rollback_segment为空

5)   检查参数文件里的undo表空间是否为现在的

6)   restart db

仔细理解ORA-01555错误的原因

在自动化管理模式下执行手动管理命令,忽略回滚段的错误提示

alter system set undo_suppress_errors=true;



undo_rention 保留undo数据的时间,值越大,所需的数据空间越大。



show parameter undo;
select * from v$undostat 每隔十分钟间隔取undo的统计值
undo表空间的大小计算公式:

UndoSpace=[UR * (UPS * DBS)] + (DBS * 24)
              UR :UNDO_RETENTION 保留的时间(秒)
             UPS :每秒的回滚数据块
             DBS:系统EXTENT和FILE SIZE(也就是db_block_size)
UPS(每秒的回滚数据块)的计算方法:

SQL> SELECT (SUM(undoblks) / SUM) ((end_time - begin_time) * 86400) FROM v$undostat;

undo表空间的大小计算

SELECT (UR * (UPS * DBS)) + (DBS * 24) AS "Bytes"

FROM (SELECT value AS UR FROM v$parameter WHERE name = ’undo_retention’),(SELECT (SUM(undoblks)/SUM (((end_time-begin_time)*86400))) AS UPS

FROM v$undostat),(SELECT value AS DBS FROM v$parameter

WHERE name = ’db_block_size’);



select * from dba_rollback_segs;

-----------------------------------------------------------仔细看看


在自动管理模式下,不会真正建立rbs1;在手工管理模式则可以建立,且是私有回滚段。
create rollback segment rbs1 tablespace undotbs;
desc dbms_flashback;
在提交了修改的数据后,9i提供了旧数据的回闪操作,将修改前的数据只读给用户看,但这部分数据不会又恢复在表中,而是旧数据的一个映射
execute dbms_flashback.enable_at_time('26-JAN-04:12:17:00 pm');
execute dbms_flashback.disable;
回滚段的统计信息
select end_time,begin_time,undoblks from v$undostat;
select * from dba_rollback_segs;

v$rollname,v$rollstat,v$undostat,v$session,v$transaction;
show parameter transactions;
show parameter rollback;
在手工管理模式下,建立公共的回滚段
create public rollback segment prbs1 tablespace undotbs;
alter rollback segment rbs1 online;----在手工管理模式
在手工管理模式中,initSID.ora中指定 undo_management=manual 、rollback_segment=('rbs1','rbs2',...)、
  transactions=100 、transactions_per_rollback_segment=10
  然后 shutdown immediate ,startup pfile=....\???.ora



select * from dba_rollback_segs;

深入:

1)           回滚段探究(BY biti_rainy)
2)           checkpointinginstructors.ppt
3)           redo logs and recovery.ppt



原帖由 blue_stone 于 2006-11-17 17:35 发表
鼓励, 支持, 继续贴...

论坛徽章:
0
5 [报告]
发表于 2006-12-03 18:55 |只看该作者
好!
喜欢!!
纯文本!!!

论坛徽章:
0
6 [报告]
发表于 2006-12-04 08:45 |只看该作者
好东西

论坛徽章:
0
7 [报告]
发表于 2006-12-04 14:40 |只看该作者
真不错

论坛徽章:
0
8 [报告]
发表于 2006-12-04 14:53 |只看该作者
给了我帮助

论坛徽章:
0
9 [报告]
发表于 2006-12-05 11:19 |只看该作者
准备学习oracle,楼主的帖子太好了,谢谢!

论坛徽章:
0
10 [报告]
发表于 2006-12-05 11:53 |只看该作者
准备学习oracle,楼主的帖子太好了,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP